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