diff --git a/source/java/org/alfresco/rest/api/impl/CommentsImpl.java b/source/java/org/alfresco/rest/api/impl/CommentsImpl.java index ae6c7e7f09..8553269e09 100644 --- a/source/java/org/alfresco/rest/api/impl/CommentsImpl.java +++ b/source/java/org/alfresco/rest/api/impl/CommentsImpl.java @@ -38,6 +38,8 @@ package org.alfresco.rest.api.impl; import java.io.Serializable; import java.util.AbstractList; +import java.util.Arrays; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -215,6 +217,14 @@ public class CommentsImpl implements Comments public CollectionWithPagingInfo getComments(String nodeId, Paging paging) { final NodeRef nodeRef = nodes.validateNode(nodeId); + + /* MNT-10536 : fix */ + final Set contentAndFolders = + new HashSet(Arrays.asList(ContentModel.TYPE_FOLDER, ContentModel.TYPE_CONTENT)); + if (!nodes.nodeMatches(nodeRef, contentAndFolders, null)) + { + throw new InvalidArgumentException("NodeId of folder or content is expected"); + } PagingRequest pagingRequest = Util.getPagingRequest(paging); final PagingResults pagingResults = commentService.listComments(nodeRef, pagingRequest); diff --git a/source/test-java/org/alfresco/rest/api/tests/RepoService.java b/source/test-java/org/alfresco/rest/api/tests/RepoService.java index 6c96b1af2f..1fbe0da98a 100644 --- a/source/test-java/org/alfresco/rest/api/tests/RepoService.java +++ b/source/test-java/org/alfresco/rest/api/tests/RepoService.java @@ -1028,6 +1028,14 @@ public class RepoService return nodeRef; } + public NodeRef createCmObject(final NodeRef parentNodeRef, final String name) + { + QName assocQName = QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, QName.createValidLocalName(name)); + NodeRef nodeRef = nodeService.createNode(parentNodeRef, ContentModel.ASSOC_CONTAINS, assocQName, ContentModel.TYPE_CMOBJECT).getChildRef(); + + return nodeRef; + } + public Visibility getVisibility(Client client, NodeRef nodeRef) { return hiddenAspect.getVisibility(client, nodeRef); diff --git a/source/test-java/org/alfresco/rest/api/tests/TestNodeComments.java b/source/test-java/org/alfresco/rest/api/tests/TestNodeComments.java index 90541d3199..f10f26c47f 100644 --- a/source/test-java/org/alfresco/rest/api/tests/TestNodeComments.java +++ b/source/test-java/org/alfresco/rest/api/tests/TestNodeComments.java @@ -56,6 +56,7 @@ public class TestNodeComments extends EnterpriseTestApi private NodeRef nodeRef2; private NodeRef nodeRef3; private NodeRef nodeRef4; + private NodeRef cmObjectNodeRef; @Before public void setup() throws Exception @@ -129,6 +130,8 @@ public class TestNodeComments extends EnterpriseTestApi nodes.add(nodeRef); nodeRef = repoService.createDocument(site1.getContainerNodeRef("documentLibrary"), "Test Doc 3", "Test Content 3"); nodes.add(nodeRef); + nodeRef = repoService.createCmObject(site1.getContainerNodeRef("documentLibrary"), "CM Object"); + nodes.add(nodeRef); return null; } @@ -139,6 +142,7 @@ public class TestNodeComments extends EnterpriseTestApi this.nodeRef2 = nodes.get(2); this.nodeRef3 = nodes.get(3); this.nodeRef4 = nodes.get(4); + this.cmObjectNodeRef = nodes.get(5); } @Test @@ -195,7 +199,21 @@ public class TestNodeComments extends EnterpriseTestApi Comment ret = commentsProxy.createNodeComment(nodeRef2.getId(), comment); createdComments.put(ret.getId(), ret); } - + + // get comments of the non-folder/non-document nodeRef + try + { + int skipCount = 0; + int maxItems = 2; + Paging paging = getPaging(skipCount, maxItems); + commentsProxy.getNodeComments(cmObjectNodeRef.getId(), createParams(paging, null)); + fail(); + } + catch(PublicApiException e) + { + assertEquals(HttpStatus.SC_BAD_REQUEST, e.getHttpResponse().getStatusCode()); + } + int skipCount = 0; int maxItems = 2; Paging paging = getPaging(skipCount, maxItems);