SHA-1867 : Unable to create links in Shared Files / My Files root node from the Search Results page

- Added method WebScriptUtil.resolveNodeReference() which will resolve nodeRef

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@132544 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Ramona Neamtu
2016-11-08 11:47:03 +00:00
parent f39e851d7b
commit 3ff3ba22c7
5 changed files with 130 additions and 32 deletions

View File

@@ -34,8 +34,13 @@ import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;
import java.util.TimeZone;
import org.alfresco.repo.nodelocator.CompanyHomeNodeLocator;
import org.alfresco.repo.nodelocator.NodeLocatorService;
import org.alfresco.repo.nodelocator.SharedHomeNodeLocator;
import org.alfresco.repo.nodelocator.SitesHomeNodeLocator;
import org.alfresco.repo.nodelocator.UserHomeNodeLocator;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.util.ISO8601DateFormat;
import org.json.JSONObject;
@@ -149,6 +154,31 @@ public class WebScriptUtil
}
return new NodeRef(protocol, storeId, nodeId);
}
public static NodeRef resolveNodeReference(String reference, NodeLocatorService nodeLocatorService)
{
NodeRef nodeRef = null;
switch (reference)
{
case "alfresco://company/home":
nodeRef = nodeLocatorService.getNode(CompanyHomeNodeLocator.NAME, null, null);
break;
case "alfresco://user/home":
nodeRef = nodeLocatorService.getNode(UserHomeNodeLocator.NAME, null, null);
break;
case "alfresco://company/shared":
nodeRef = nodeLocatorService.getNode(SharedHomeNodeLocator.NAME, null, null);
break;
case "alfresco://sites/home":
nodeRef = nodeLocatorService.getNode(SitesHomeNodeLocator.NAME, null, null);
break;
default:
nodeRef = new NodeRef(reference);
break;
}
return nodeRef;
}
}

View File

@@ -30,9 +30,8 @@ import java.util.Map;
import java.util.StringTokenizer;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.web.scripts.links.AbstractLinksWebScript;
import org.alfresco.service.ServiceRegistry;
import org.alfresco.service.cmr.activities.ActivityService;
import org.alfresco.service.cmr.links.LinkInfo;
import org.alfresco.service.cmr.repository.DocumentLinkService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
@@ -42,12 +41,9 @@ import org.alfresco.util.ParameterCheck;
import org.alfresco.util.PropertyCheck;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.json.JSONStringer;
import org.json.simple.JSONObject;
import org.springframework.extensions.webscripts.DeclarativeWebScript;
import org.springframework.extensions.webscripts.Status;
import org.springframework.extensions.webscripts.WebScriptException;
import org.springframework.extensions.webscripts.WebScriptRequest;
import org.springframework.extensions.webscripts.json.JSONWriter;
/**
@@ -71,6 +67,7 @@ public abstract class AbstractDocLink extends DeclarativeWebScript
protected SiteService siteService;
protected DocumentLinkService documentLinkService;
protected ActivityService activityService;
protected ServiceRegistry serviceRegistry;
private static Log logger = LogFactory.getLog(AbstractDocLink.class);
@@ -190,4 +187,10 @@ public abstract class AbstractDocLink extends DeclarativeWebScript
{
this.activityService = activityService;
}
public void setServiceRegistry(ServiceRegistry serviceRegistry)
{
this.serviceRegistry = serviceRegistry;
}
}

View File

@@ -36,6 +36,7 @@ import org.alfresco.model.ContentModel;
import org.alfresco.repo.activities.ActivityType;
import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.security.permissions.AccessDeniedException;
import org.alfresco.repo.web.scripts.WebScriptUtil;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.util.ParameterCheck;
import org.json.simple.JSONArray;
@@ -99,7 +100,7 @@ public class DocLinkPost extends AbstractDocLink
/* Parse the destination NodeRef parameter */
String destinationNodeParam = (String) json.get(PARAM_DESTINATION_NODE);
ParameterCheck.mandatoryString("destinationNodeParam", destinationNodeParam);
destinationNodeRef = new NodeRef(destinationNodeParam);
destinationNodeRef = WebScriptUtil.resolveNodeReference(destinationNodeParam, serviceRegistry.getNodeLocatorService());
List<NodeRef> nodeRefs = new ArrayList<NodeRef>();
if (json.containsKey(PARAM_MULTIPLE_FILES))