From 0cc3c968658a6aad7b941888f79fb7485f62ecfd Mon Sep 17 00:00:00 2001 From: Ancuta Morarasu Date: Wed, 11 May 2016 10:48:08 +0000 Subject: [PATCH] Merged HEAD (5.2) to 5.2.N (5.2.1) 126361 jkaabimofrad: Merged FILE-FOLDER-API (5.2.0) to HEAD (5.2) 119716 jvonka: FileFolder API - handle "select", eg. get node info, list folder children - list folder children returns minimal info, select can be used to get additional info, eg. aspectNames, properties (or specific props) - get node info returns basic info, select can be used to get additional info, eg. path - RA-634, RA-638 git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.2.N/root@126707 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/rest/api/impl/NodesImpl.java | 28 +++++++++++++------ 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/source/java/org/alfresco/rest/api/impl/NodesImpl.java b/source/java/org/alfresco/rest/api/impl/NodesImpl.java index 8492aaf24d..97ebb6bd13 100644 --- a/source/java/org/alfresco/rest/api/impl/NodesImpl.java +++ b/source/java/org/alfresco/rest/api/impl/NodesImpl.java @@ -131,6 +131,9 @@ public class NodesImpl implements Nodes private final static String PARAM_RELATIVE_PATH = "relativePath"; // TODO wip private final static String PARAM_SELECT_PROPERTIES = "properties"; + private final static String PARAM_SELECT_PATH = "path"; + private final static String PARAM_SELECT_ASPECTNAMES = "aspectNames"; + private final static String PARAM_SELECT_ISLINK = "isLink"; // TODO ... private NodeService nodeService; private DictionaryService dictionaryService; @@ -512,18 +515,24 @@ public class NodesImpl implements Nodes QName typeQName = nodeService.getType(nodeRef); - List selectParam = parameters.getSelectedProperties(); - return getFolderOrDocument(nodeRef, getParentNodeRef(nodeRef), typeQName, selectParam, false, null); + List selectParam = new ArrayList<>(); + selectParam.addAll(parameters.getSelectedProperties()); + + // Add basic info for single get (above & beyond minimal that is used for listing collections) + selectParam.add(PARAM_SELECT_ASPECTNAMES); + selectParam.add(PARAM_SELECT_PROPERTIES); + + return getFolderOrDocument(nodeRef, getParentNodeRef(nodeRef), typeQName, selectParam, null); } - private Node getFolderOrDocument(final NodeRef nodeRef, NodeRef parentNodeRef, QName typeQName, List selectParam, boolean minimalInfo, Map mapUserInfo) + private Node getFolderOrDocument(final NodeRef nodeRef, NodeRef parentNodeRef, QName typeQName, List selectParam, Map mapUserInfo) { if (mapUserInfo == null) { mapUserInfo = new HashMap<>(2); } PathInfo pathInfo = null; - if (!minimalInfo) + if (selectParam.contains(PARAM_SELECT_PATH)) { pathInfo = lookupPathInfo(nodeRef); } @@ -547,9 +556,13 @@ public class NodesImpl implements Nodes throw new InvalidArgumentException("Node is not a folder or file"); } - if (! minimalInfo) + if (selectParam.size() > 0) { node.setProperties(mapFromNodeProperties(properties, selectParam, mapUserInfo)); + } + + if (selectParam.contains(PARAM_SELECT_ASPECTNAMES)) + { node.setAspectNames(mapFromNodeAspects(nodeService.getAspects(nodeRef))); } @@ -746,7 +759,6 @@ public class NodesImpl implements Nodes final NodeRef parentNodeRef = validateOrLookupNode(parentFolderNodeId, null); final List selectParam = parameters.getSelectedProperties(); - final boolean minimalInfo = (selectParam.size() == 0); boolean includeFolders = true; boolean includeFiles = true; @@ -816,7 +828,7 @@ public class NodesImpl implements Nodes FileInfo fInfo = page.get(index); // minimal info by default (unless "select"ed otherwise) - return getFolderOrDocument(fInfo.getNodeRef(), parentNodeRef, fInfo.getType(), selectParam, minimalInfo, mapUserInfo); + return getFolderOrDocument(fInfo.getNodeRef(), parentNodeRef, fInfo.getType(), selectParam, mapUserInfo); } @Override @@ -1200,7 +1212,7 @@ public class NodesImpl implements Nodes private Node createUploadResponse(NodeRef parentNodeRef, NodeRef newFileNodeRef) { - return getFolderOrDocument(newFileNodeRef, parentNodeRef, ContentModel.TYPE_CONTENT, Collections.emptyList(), true, null); + return getFolderOrDocument(newFileNodeRef, parentNodeRef, ContentModel.TYPE_CONTENT, Collections.emptyList(), null); } private String getStringOrNull(String value)