diff --git a/source/java/org/alfresco/rest/api/Nodes.java b/source/java/org/alfresco/rest/api/Nodes.java index 2c07dd0c13..332f56cb03 100644 --- a/source/java/org/alfresco/rest/api/Nodes.java +++ b/source/java/org/alfresco/rest/api/Nodes.java @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2017 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -37,11 +37,13 @@ import org.alfresco.rest.api.model.Document; import org.alfresco.rest.api.model.Folder; import org.alfresco.rest.api.model.LockInfo; import org.alfresco.rest.api.model.Node; +import org.alfresco.rest.api.model.PathInfo; import org.alfresco.rest.api.model.UserInfo; import org.alfresco.rest.framework.resource.content.BasicContentInfo; import org.alfresco.rest.framework.resource.content.BinaryResource; import org.alfresco.rest.framework.resource.parameters.CollectionWithPagingInfo; import org.alfresco.rest.framework.resource.parameters.Parameters; +import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.namespace.QName; @@ -290,6 +292,15 @@ public interface Nodes */ Map mapToNodeProperties(Map props); + /** + * Returns the path to the given nodeRef {@code nodeRefIn} or the archived nodeRef {@code archivedParentAssoc}. + * + * @param nodeRefIn the NodeRef + * @param archivedParentAssoc the ChildAssociationRef of the archived NodeRef + * @return the path to the given node + */ + PathInfo lookupPathInfo(NodeRef nodeRefIn, ChildAssociationRef archivedParentAssoc); + /** * Map from a String representation of aspect names to a set * of QName objects, as used by the repository. diff --git a/source/java/org/alfresco/rest/api/QuickShareLinks.java b/source/java/org/alfresco/rest/api/QuickShareLinks.java index b86260f874..c1d08677d9 100644 --- a/source/java/org/alfresco/rest/api/QuickShareLinks.java +++ b/source/java/org/alfresco/rest/api/QuickShareLinks.java @@ -131,4 +131,6 @@ public interface QuickShareLinks String PARAM_SHAREDBY = "sharedByUser"; String PARAM_INCLUDE_ALLOWABLEOPERATIONS = Nodes.PARAM_INCLUDE_ALLOWABLEOPERATIONS; + + String PARAM_INCLUDE_PATH = Nodes.PARAM_INCLUDE_PATH; } \ No newline at end of file diff --git a/source/java/org/alfresco/rest/api/impl/NodesImpl.java b/source/java/org/alfresco/rest/api/impl/NodesImpl.java index a3508d1b93..1d1b504155 100644 --- a/source/java/org/alfresco/rest/api/impl/NodesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/NodesImpl.java @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2017 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -1027,8 +1027,9 @@ public class NodesImpl implements Nodes return node; } - - protected PathInfo lookupPathInfo(NodeRef nodeRefIn, ChildAssociationRef archivedParentAssoc) + + @Override + public PathInfo lookupPathInfo(NodeRef nodeRefIn, ChildAssociationRef archivedParentAssoc) { List pathElements = new ArrayList<>(); diff --git a/source/java/org/alfresco/rest/api/impl/QuickShareLinksImpl.java b/source/java/org/alfresco/rest/api/impl/QuickShareLinksImpl.java index 2c36bc0432..207ad69cce 100644 --- a/source/java/org/alfresco/rest/api/impl/QuickShareLinksImpl.java +++ b/source/java/org/alfresco/rest/api/impl/QuickShareLinksImpl.java @@ -579,14 +579,21 @@ public class QuickShareLinksImpl implements QuickShareLinks, RecognizedParamsExt qs.setExpiresAt((Date) map.get("expiryDate")); // note: if noAuth mode then do not return allowable operations (eg. but can be optionally returned when finding shared links) - if ((! noAuth) && includeParam.contains(PARAM_INCLUDE_ALLOWABLEOPERATIONS)) + if (!noAuth) { - if (quickShareService.canDeleteSharedLink(nodeRef, sharedByUserId)) + if (includeParam.contains(PARAM_INCLUDE_ALLOWABLEOPERATIONS) && quickShareService.canDeleteSharedLink(nodeRef, sharedByUserId)) { qs.setAllowableOperations(Collections.singletonList(Nodes.OP_DELETE)); } + + // in noAuth mode we don't return the path info + if (includeParam.contains(PARAM_INCLUDE_PATH)) + { + qs.setPathInfo(nodes.lookupPathInfo(nodeRef, null)); + } } + return qs; } catch (InvalidSharedIdException ex) diff --git a/source/java/org/alfresco/rest/api/model/QuickShareLink.java b/source/java/org/alfresco/rest/api/model/QuickShareLink.java index 057ef45700..8cecc41a15 100644 --- a/source/java/org/alfresco/rest/api/model/QuickShareLink.java +++ b/source/java/org/alfresco/rest/api/model/QuickShareLink.java @@ -2,7 +2,7 @@ * #%L * Alfresco Remote API * %% - * Copyright (C) 2005 - 2016 Alfresco Software Limited + * Copyright (C) 2005 - 2017 Alfresco Software Limited * %% * This file is part of the Alfresco software. * If the software was purchased under a paid Alfresco license, the terms of @@ -51,14 +51,13 @@ public class QuickShareLink private Date expiresAt; private String nodeId; - private String name; + private PathInfo pathInfo; private ContentInfo content; private Date modifiedAt; private UserInfo modifiedByUser; - private UserInfo sharedByUser; private List allowableOperations; @@ -120,6 +119,16 @@ public class QuickShareLink this.name = name; } + public PathInfo getPathInfo() + { + return pathInfo; + } + + public void setPathInfo(PathInfo pathInfo) + { + this.pathInfo = pathInfo; + } + public Date getModifiedAt() { return modifiedAt; @@ -168,6 +177,7 @@ public class QuickShareLink sb.append("QuickShareLink [id=").append(getId()); sb.append(", nodeId=").append(getNodeId()); sb.append(", name=").append(getName()); + sb.append(", pathInfo=").append(getPathInfo()); sb.append(", modifiedAt=").append(getModifiedAt()); sb.append(", modifiedByUser=").append(getModifiedByUser()); sb.append(", sharedByUser=").append(getSharedByUser());