diff --git a/src/main/java/org/alfresco/rest/api/Nodes.java b/src/main/java/org/alfresco/rest/api/Nodes.java index 332f56cb03..032d9830c7 100644 --- a/src/main/java/org/alfresco/rest/api/Nodes.java +++ b/src/main/java/org/alfresco/rest/api/Nodes.java @@ -367,6 +367,7 @@ public interface Nodes String PARAM_INCLUDE_ISLOCKED = "isLocked"; String PARAM_INCLUDE_ALLOWABLEOPERATIONS = "allowableOperations"; String PARAM_INCLUDE_PERMISSIONS = "permissions"; + String PARAM_INCLUDE_ISFAVORITE = "isFavorite"; String PARAM_INCLUDE_ASSOCIATION = "association"; diff --git a/src/main/java/org/alfresco/rest/api/impl/NodesImpl.java b/src/main/java/org/alfresco/rest/api/impl/NodesImpl.java index 34c2739d03..0c7068ddad 100644 --- a/src/main/java/org/alfresco/rest/api/impl/NodesImpl.java +++ b/src/main/java/org/alfresco/rest/api/impl/NodesImpl.java @@ -809,7 +809,6 @@ public class NodesImpl implements Nodes String path = parameters.getParameter(PARAM_RELATIVE_PATH); NodeRef nodeRef = validateOrLookupNode(nodeId, path); Node node = getFolderOrDocumentFullInfo(nodeRef, null, null, parameters); - node.setIsFavorite(isFavorite(node)); return node; } @@ -915,6 +914,12 @@ public class NodesImpl implements Nodes node.setIsLocked(isLocked); } + if (includeParam.contains(PARAM_INCLUDE_ISFAVORITE)) + { + boolean isFavorite = isFavorite(nodeRef); + node.setIsFavorite(isFavorite); + } + if (includeParam.contains(PARAM_INCLUDE_ALLOWABLEOPERATIONS)) { // note: refactor when requirements change @@ -1321,8 +1326,6 @@ public class NodesImpl implements Nodes { calculateRelativePath(parentFolderNodeId, node); } - - node.setIsFavorite(isFavorite(node)); return node; } @@ -3347,7 +3350,7 @@ public class NodesImpl implements Nodes * * @param node */ - private boolean isFavorite(Node node) + private boolean isFavorite(NodeRef node) { PreferenceService preferenceService = (PreferenceService) sr.getService(ServiceRegistry.PREFERENCE_SERVICE); String currentUserName = AuthenticationUtil.getFullyAuthenticatedUser(); @@ -3370,7 +3373,7 @@ public class NodesImpl implements Nodes NodeRef nodeRef = new NodeRef((String) nodeRefStr); - if (nodeService.exists(nodeRef) && nodeRef.equals(node.getNodeRef())) + if (nodeRef.equals(node)) { return true; } diff --git a/src/test/java/org/alfresco/rest/api/tests/TestFavourites.java b/src/test/java/org/alfresco/rest/api/tests/TestFavourites.java index 3229d5221f..299309d56e 100644 --- a/src/test/java/org/alfresco/rest/api/tests/TestFavourites.java +++ b/src/test/java/org/alfresco/rest/api/tests/TestFavourites.java @@ -38,6 +38,7 @@ import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -1904,11 +1905,14 @@ public class TestFavourites extends AbstractBaseApiTest Favourite file2Favourite = makeFileFavourite(nodeRef2.getId()); favouritesProxy.createFavourite(person12Id, file2Favourite); - HttpResponse response = getAll(getNodeChildrenUrl(folderNodeRef.getId()), null, null, 200); + Map params = new HashMap<>(); + params.put("include", "isFavorite"); + + HttpResponse response = getAll(getNodeChildrenUrl(folderNodeRef.getId()), null, params, 200); List nodes = RestApiUtil.parseRestApiEntries(response.getJsonResponse(), Node.class); assertTrue(nodes.size() == 1); assertTrue(nodes.get(0).getIsFavorite()); - response = getAll(getNode(nodeRef1.getId()), null, null, 200); + response = getAll(getNode(nodeRef1.getId()), null, params, 200); Node node1 = RestApiUtil.parseRestApiEntry(response.getJsonResponse(), Node.class); assertTrue(node1.getIsFavorite()); }