diff --git a/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/atomentry.lib.atom.ftl b/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/atomentry.lib.atom.ftl index 71642236d9..e5b71c3462 100644 --- a/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/atomentry.lib.atom.ftl +++ b/config/alfresco/templates/webscripts/org/alfresco/cmis/lib/atomentry.lib.atom.ftl @@ -45,6 +45,7 @@ [#-- --] [#macro document node renditionfilter="cmis:none" propfilter="*" includeallowableactions=false includerelationships="none" includeacl=false ns=""] +[#if cmistype(node)??] [@entry ns] ${node.properties.creator!""} [@contentstream node/] @@ -71,6 +72,7 @@ ${node.name?xml} [/@entry] +[/#if] [/#macro] [#macro documentCMISLinks node] @@ -100,6 +102,7 @@ [/#macro] [#macro folder node renditionfilter="cmis:none" propfilter="*" typesfilter="any" includeallowableactions=false includerelationships="none" includeacl=false ns="" depth=1 maxdepth=1 relativePathSegment="" nestedkind=""] +[#if cmistype(node)??] [@entry ns] ${node.properties.creator!""} [@contentstream node/] @@ -144,6 +147,7 @@ [/#if] [/#if] [/@entry] +[/#if] [/#macro] [#macro folderCMISLinks node] @@ -167,6 +171,7 @@ [#-- --] [#macro assoc assoc propfilter="*" includeallowableactions=false ns=""] +[#if cmistype(node)??] [@entry ns] ${assoc.source.properties.creator!""} [@namedvalue cmisconstants.PROP_OBJECT_ID assoc cmisconstants.DATATYPE_ID/] @@ -182,6 +187,7 @@ [#if includeallowableactions][@assocallowableactions assoc/][/#if] [/@entry] +[/#if] [/#macro] [#macro assocCMISLinks assoc] diff --git a/source/test-java/org/alfresco/repo/cmis/rest/test/CMISAtomTemplatesTest.java b/source/test-java/org/alfresco/repo/cmis/rest/test/CMISAtomTemplatesTest.java index 865f67b903..bdef820afc 100644 --- a/source/test-java/org/alfresco/repo/cmis/rest/test/CMISAtomTemplatesTest.java +++ b/source/test-java/org/alfresco/repo/cmis/rest/test/CMISAtomTemplatesTest.java @@ -18,17 +18,33 @@ */ package org.alfresco.repo.cmis.rest.test; +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +import org.alfresco.model.ApplicationModel; +import org.alfresco.model.ContentModel; +import org.alfresco.repo.security.authentication.AuthenticationUtil; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.namespace.QName; +import org.alfresco.util.ApplicationContextHelper; import org.apache.abdera.model.Entry; import org.apache.abdera.model.Link; import org.junit.Assert; import org.junit.Test; +import org.springframework.context.ApplicationContext; import org.springframework.extensions.webscripts.TestWebScriptServer.GetRequest; import org.springframework.extensions.webscripts.TestWebScriptServer.Request; import org.springframework.extensions.webscripts.TestWebScriptServer.Response; public class CMISAtomTemplatesTest extends BaseCMISTest { + private static ApplicationContext ctx = ApplicationContextHelper.getApplicationContext(new String[]{ApplicationContextHelper.CONFIG_LOCATIONS[0],"classpath:test-cmisinteger_modell-context.xml"}); + private NodeService nodeService; + static String docName; static String xmlResponse; @@ -47,6 +63,8 @@ public class CMISAtomTemplatesTest extends BaseCMISTest Assert.assertNotNull(documentRes); xmlResponse = documentRes.getContentAsString(); Assert.assertNotNull(xmlResponse); + + this.nodeService = (NodeService)ctx.getBean("NodeService"); } @Test @@ -68,4 +86,51 @@ public class CMISAtomTemplatesTest extends BaseCMISTest // check document name with repeatable spaces in xml response. assertEquals("Probably, item.get.atomentry.ftl template has compress dirrective", true, xmlResponse.contains(docName)); } + + /* + * Get children, if parent has object of non-cmis type + * cm:folderlink is non-cmis type. + */ + @Test + public void testChildrenWithLink() throws Exception + { + String testFolderRefStr = testCaseFolder.getId().toString().replace("urn:uuid:", "workspace://SpacesStore/"); + NodeRef testFolderRef = new NodeRef(testFolderRefStr); + + Map props = new HashMap(2, 1.0f); + String linkName = "link " + testCaseFolder.getTitle() + ".url"; + props.put(ContentModel.PROP_NAME, linkName); + props.put(ContentModel.PROP_LINK_DESTINATION, testFolderRef); + + AuthenticationUtil.pushAuthentication();; + AuthenticationUtil.setAdminUserAsFullyAuthenticatedUser(); + + NodeRef linkRef = null; + + try + { + ChildAssociationRef childRef = nodeService.createNode( + testFolderRef, + ContentModel.ASSOC_CONTAINS, + QName.createQName(testCaseFolder.getTitle()), + ApplicationModel.TYPE_FOLDERLINK, + props); + linkRef = childRef.getChildRef(); + + String id = testCaseFolder.getId().toString().replace("urn:uuid:", "workspace:SpacesStore/i/"); + Request get = new GetRequest("/cmis/s/" + id + "/children"); + sendRequest(get, 200); + } + finally + { + if (linkRef != null) + { + nodeService.deleteNode(linkRef); + } + AuthenticationUtil.popAuthentication(); + } + + + + } } \ No newline at end of file