diff --git a/config/alfresco/templates/webscripts/org/alfresco/repository/quickshare/share.post.json.ftl b/config/alfresco/templates/webscripts/org/alfresco/repository/quickshare/share.post.json.ftl
index b083e2fbe4..ef2a60242e 100644
--- a/config/alfresco/templates/webscripts/org/alfresco/repository/quickshare/share.post.json.ftl
+++ b/config/alfresco/templates/webscripts/org/alfresco/repository/quickshare/share.post.json.ftl
@@ -1,5 +1,5 @@
<#escape x as jsonUtils.encodeJSONString(x)>
{
- "sharedId" : "${sharedId}"
+ "sharedId": "${sharedDTO.id}"
}
#escape>
\ No newline at end of file
diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml
index 6979d55294..780f81dca2 100644
--- a/config/alfresco/web-scripts-application-context.xml
+++ b/config/alfresco/web-scripts-application-context.xml
@@ -1853,8 +1853,7 @@
-
-
+
@@ -1866,22 +1865,15 @@
-
-
-
-
+
-
-
-
-
@@ -1894,8 +1886,7 @@
-
-
+
diff --git a/source/java/org/alfresco/repo/web/scripts/quickshare/AbstractQuickShareContent.java b/source/java/org/alfresco/repo/web/scripts/quickshare/AbstractQuickShareContent.java
index fc8cb41980..10251f697f 100644
--- a/source/java/org/alfresco/repo/web/scripts/quickshare/AbstractQuickShareContent.java
+++ b/source/java/org/alfresco/repo/web/scripts/quickshare/AbstractQuickShareContent.java
@@ -18,45 +18,25 @@
*/
package org.alfresco.repo.web.scripts.quickshare;
-import javax.servlet.http.HttpServletResponse;
-
-import org.alfresco.repo.tenant.TenantService;
-import org.alfresco.repo.tenant.TenantUtil;
-import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
-import org.alfresco.service.cmr.attributes.AttributeService;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.repository.NodeService;
-import org.alfresco.util.Pair;
+import org.alfresco.service.cmr.quickshare.QuickShareService;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
-import org.springframework.extensions.webscripts.WebScriptException;
/**
* QuickShare/PublicView
*
* @author janv
+ * @since Cloud/4.2
*/
public abstract class AbstractQuickShareContent extends DeclarativeWebScript
{
- protected NodeService nodeService;
- protected AttributeService attributeService;
- protected TenantService tenantService;
+ protected QuickShareService quickShareService;
private boolean enabled = true;
- public void setNodeService(NodeService nodeService)
+ public void setQuickShareService(QuickShareService quickShareService)
{
- this.nodeService = nodeService;
- }
-
- public void setAttributeService(AttributeService attributeService)
- {
- this.attributeService = attributeService;
- }
-
- public void setTenantService(TenantService tenantService)
- {
- this.tenantService = tenantService;
+ this.quickShareService = quickShareService;
}
public void setEnabled(boolean enabled)
@@ -68,31 +48,4 @@ public abstract class AbstractQuickShareContent extends DeclarativeWebScript
{
return this.enabled;
}
-
-
- protected Pair getTenantNodeRefFromSharedId(final String sharedId)
- {
- return getTenantNodeRefFromSharedId(attributeService, tenantService, sharedId);
- }
-
- /* package */ static Pair getTenantNodeRefFromSharedId(final AttributeService attributeService, final TenantService tenantService, final String sharedId)
- {
- final NodeRef nodeRef = TenantUtil.runAsDefaultTenant(new TenantRunAsWork()
- {
- public NodeRef doWork() throws Exception
- {
- return (NodeRef)attributeService.getAttribute(ShareContentPost.ATTR_KEY_SHAREDIDS_ROOT, sharedId);
- }
- });
-
- if (nodeRef == null)
- {
- throw new WebScriptException(HttpServletResponse.SC_NOT_FOUND, "Unable to find: " + sharedId);
- }
-
- // note: relies on tenant-specific (ie. mangled) nodeRef
- String tenantDomain = tenantService.getDomain(nodeRef.getStoreRef().getIdentifier());
-
- return new Pair(tenantDomain, tenantService.getBaseName(nodeRef));
- }
}
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/web/scripts/quickshare/MetaDataGet.java b/source/java/org/alfresco/repo/web/scripts/quickshare/MetaDataGet.java
index 47d4d9f514..1a033d1139 100644
--- a/source/java/org/alfresco/repo/web/scripts/quickshare/MetaDataGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/quickshare/MetaDataGet.java
@@ -18,24 +18,13 @@
*/
package org.alfresco.repo.web.scripts.quickshare;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
-import org.alfresco.model.ContentModel;
-import org.alfresco.repo.thumbnail.ThumbnailDefinition;
import org.alfresco.repo.web.scripts.WebScriptUtil;
-import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.service.cmr.security.NoSuchPersonException;
-import org.alfresco.service.cmr.security.PersonService;
-import org.alfresco.service.cmr.thumbnail.ThumbnailService;
-import org.alfresco.service.namespace.QName;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.webscripts.Cache;
@@ -51,25 +40,12 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
* Note: authenticated web script (equivalent to unauthenticated version - see QuickShareMetaDataGet)
*
* @author janv
+ * @since Cloud/4.2
*/
public class MetaDataGet extends AbstractQuickShareContent
{
private static final Log logger = LogFactory.getLog(QuickShareMetaDataGet.class);
- private PersonService personService;
- private ThumbnailService thumbnailService;
-
- public void setPersonService(PersonService personService)
- {
- this.personService = personService;
- }
-
- public void setThumbnailService(ThumbnailService thumbnailService)
- {
- this.thumbnailService = thumbnailService;
- }
-
-
@Override
protected Map executeImpl(final WebScriptRequest req, Status status, Cache cache)
{
@@ -84,7 +60,7 @@ public class MetaDataGet extends AbstractQuickShareContent
try
{
- Map model = getMetaDataModel(nodeRef);
+ Map model = quickShareService.getMetaData(nodeRef);
if (logger.isDebugEnabled())
{
@@ -99,92 +75,4 @@ public class MetaDataGet extends AbstractQuickShareContent
throw new WebScriptException(HttpServletResponse.SC_NOT_FOUND, "Unable to find nodeRef: "+inre.getNodeRef());
}
}
-
- @SuppressWarnings("unchecked")
- protected Map getMetaDataModel(NodeRef nodeRef)
- {
- QName typeQName = nodeService.getType(nodeRef);
- if (! typeQName.equals(ContentModel.TYPE_CONTENT))
- {
- throw new InvalidNodeRefException(nodeRef);
- }
-
- Map nodeProps = nodeService.getProperties(nodeRef);
- ContentData contentData = (ContentData)nodeService.getProperty(nodeRef, ContentModel.PROP_CONTENT);
-
- String modifierUserName = (String)nodeProps.get(ContentModel.PROP_MODIFIER);
- Map personProps = null;
- if (modifierUserName != null)
- {
- try
- {
- NodeRef personRef = personService.getPerson(modifierUserName);
- if (personRef != null)
- {
- personProps = nodeService.getProperties(personRef);
- }
- }
- catch (NoSuchPersonException nspe)
- {
- // absorb this exception - eg. System (or maybe the user has been deleted)
- if (logger.isInfoEnabled())
- {
- logger.info("MetaDataGet - no such person: "+modifierUserName);
- }
- }
- }
-
- Map metadata = new HashMap(8);
-
- metadata.put("name", nodeProps.get(ContentModel.PROP_NAME));
- metadata.put("title", nodeProps.get(ContentModel.PROP_TITLE));
-
- if (contentData != null)
- {
- metadata.put("mimetype", contentData.getMimetype());
- metadata.put("size", contentData.getSize());
- }
- else
- {
- metadata.put("size", 0L);
- }
-
- metadata.put("modified", nodeProps.get(ContentModel.PROP_MODIFIED));
-
- if (personProps != null)
- {
- metadata.put("modifierFirstName", personProps.get(ContentModel.PROP_FIRSTNAME));
- metadata.put("modifierLastName", personProps.get(ContentModel.PROP_LASTNAME));
- }
-
- // thumbnail defs for this nodeRef
- List thumbnailDefs = new ArrayList(7);
- if (contentData != null)
- {
- // Note: thumbnail defs only appear in this list if they can produce a thumbnail for the content
- // found in the content property of this node. This will be determined by looking at the mimetype of the content
- // and the destination mimetype of the thumbnail.
- List thumbnailDefinitions = thumbnailService.getThumbnailRegistry().getThumbnailDefinitions(contentData.getMimetype(), contentData.getSize());
- for (ThumbnailDefinition thumbnailDefinition : thumbnailDefinitions)
- {
- thumbnailDefs.add(thumbnailDefinition.getName());
- }
- }
- metadata.put("thumbnailDefinitions", thumbnailDefs);
-
- // thumbnail instances for this nodeRef
- List thumbnailRefs = thumbnailService.getThumbnails(nodeRef, ContentModel.PROP_CONTENT, null, null);
- List thumbnailNames = new ArrayList(thumbnailRefs.size());
- for (NodeRef thumbnailRef : thumbnailRefs)
- {
- thumbnailNames.add((String)nodeService.getProperty(thumbnailRef, ContentModel.PROP_NAME));
- }
- metadata.put("thumbnailNames", thumbnailNames);
-
- metadata.put("lastThumbnailModificationData", (List)nodeProps.get(ContentModel.PROP_LAST_THUMBNAIL_MODIFICATION_DATA));
-
- Map model = new HashMap(1);
- model.put("item", metadata);
- return model;
- }
}
\ No newline at end of file
diff --git a/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareContentGet.java b/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareContentGet.java
index 4dbed92472..531ad7c89c 100644
--- a/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareContentGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareContentGet.java
@@ -25,11 +25,11 @@ import javax.servlet.http.HttpServletResponse;
import org.alfresco.model.ContentModel;
import org.alfresco.model.QuickShareModel;
-import org.alfresco.repo.tenant.TenantService;
import org.alfresco.repo.tenant.TenantUtil;
import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
import org.alfresco.repo.web.scripts.content.ContentGet;
-import org.alfresco.service.cmr.attributes.AttributeService;
+import org.alfresco.service.cmr.quickshare.InvalidSharedIdException;
+import org.alfresco.service.cmr.quickshare.QuickShareService;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
@@ -51,6 +51,7 @@ import org.springframework.extensions.webscripts.WebScriptResponse;
* WARNING: **unauthenticated** web script (equivalent to authenticated version - see ContentGet.java)
*
* @author janv
+ * @since Cloud/4.2
*/
public class QuickShareContentGet extends ContentGet
{
@@ -58,8 +59,7 @@ public class QuickShareContentGet extends ContentGet
private NodeService nodeService;
private NamespaceService namespaceService;
- private AttributeService attributeService;
- private TenantService tenantService;
+ private QuickShareService quickShareSerivce;
private boolean enabled = true;
@@ -76,14 +76,9 @@ public class QuickShareContentGet extends ContentGet
super.setNamespaceService(namespaceService);
}
- public void setAttributeService(AttributeService attributeService)
+ public void setQuickShareService(QuickShareService quickShareService)
{
- this.attributeService = attributeService;
- }
-
- public void setTenantService(TenantService tenantService)
- {
- this.tenantService = tenantService;
+ this.quickShareSerivce = quickShareService;
}
public void setEnabled(boolean enabled)
@@ -115,7 +110,7 @@ public class QuickShareContentGet extends ContentGet
try
{
- Pair pair = ShareContentPost.getTenantNodeRefFromSharedId(attributeService, tenantService, sharedId);
+ Pair pair = quickShareSerivce.getTenantNodeRefFromSharedId(sharedId);
final String tenantDomain = pair.getFirst();
final NodeRef nodeRef = pair.getSecond();
@@ -140,6 +135,11 @@ public class QuickShareContentGet extends ContentGet
}
}
+ catch (InvalidSharedIdException ex)
+ {
+ logger.error("Unable to find: "+sharedId);
+ throw new WebScriptException(HttpServletResponse.SC_NOT_FOUND, "Unable to find: "+sharedId);
+ }
catch (InvalidNodeRefException inre)
{
logger.error("Unable to find: "+sharedId+" ["+inre.getNodeRef()+"]");
diff --git a/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareMetaDataGet.java b/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareMetaDataGet.java
index 8b0b8a1c2e..2df9e0bb06 100644
--- a/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareMetaDataGet.java
+++ b/source/java/org/alfresco/repo/web/scripts/quickshare/QuickShareMetaDataGet.java
@@ -22,12 +22,8 @@ import java.util.Map;
import javax.servlet.http.HttpServletResponse;
-import org.alfresco.model.QuickShareModel;
-import org.alfresco.repo.tenant.TenantUtil;
-import org.alfresco.repo.tenant.TenantUtil.TenantRunAsWork;
+import org.alfresco.service.cmr.quickshare.InvalidSharedIdException;
import org.alfresco.service.cmr.repository.InvalidNodeRefException;
-import org.alfresco.service.cmr.repository.NodeRef;
-import org.alfresco.util.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.extensions.webscripts.Cache;
@@ -44,6 +40,7 @@ import org.springframework.extensions.webscripts.WebScriptRequest;
* WARNING: **unauthenticated** web script (equivalent to authenticated version - see MetaDataGet.java)
*
* @author janv
+ * @since Cloud/4.2
*/
public class QuickShareMetaDataGet extends MetaDataGet
{
@@ -67,29 +64,12 @@ public class QuickShareMetaDataGet extends MetaDataGet
try
{
- Pair pair = getTenantNodeRefFromSharedId(attributeService, tenantService, sharedId);
- final String tenantDomain = pair.getFirst();
- final NodeRef nodeRef = pair.getSecond();
-
- Map model = TenantUtil.runAsSystemTenant(new TenantRunAsWork