From a4a56054037f4345a769757a48bfe4ca95aa685c Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Mon, 25 Jul 2011 08:45:41 +0000 Subject: [PATCH] cm:copiedfrom aspect is not applied to copies of type not derived from cm:object git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29292 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/repo/copy/CopyServiceImpl.java | 7 +++++- .../repo/copy/CopyServiceImplTest.java | 25 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/source/java/org/alfresco/repo/copy/CopyServiceImpl.java b/source/java/org/alfresco/repo/copy/CopyServiceImpl.java index 758a585019..5fda1c780a 100644 --- a/source/java/org/alfresco/repo/copy/CopyServiceImpl.java +++ b/source/java/org/alfresco/repo/copy/CopyServiceImpl.java @@ -596,7 +596,12 @@ public class CopyServiceImpl implements CopyService originalAssoc.getTargetRef(), ContentModel.ASSOC_ORIGINAL); } - internalNodeService.createAssociation(copyTarget, sourceNodeRef, ContentModel.ASSOC_ORIGINAL); + // We create the link if the source is a cm:object + QName sourceTypeQName = internalNodeService.getType(sourceNodeRef); + if (dictionaryService.isSubClass(sourceTypeQName, ContentModel.TYPE_CMOBJECT)) + { + internalNodeService.createAssociation(copyTarget, sourceNodeRef, ContentModel.ASSOC_ORIGINAL); + } // Copy permissions copyPermissions(sourceNodeRef, copyTarget); diff --git a/source/java/org/alfresco/repo/copy/CopyServiceImplTest.java b/source/java/org/alfresco/repo/copy/CopyServiceImplTest.java index ae5f1d25fa..e1714ecb79 100644 --- a/source/java/org/alfresco/repo/copy/CopyServiceImplTest.java +++ b/source/java/org/alfresco/repo/copy/CopyServiceImplTest.java @@ -619,6 +619,31 @@ public class CopyServiceImplTest extends TestCase assertNull("Original should not be present. ", originalCheck); } + /** + * Test the behaviour of the aspect when copying types not derived from cm:object + */ + public void testCopiedFromAspect_NonObject() + { + // Create the node used for copying + ChildAssociationRef childAssocRef = nodeService.createNode( + rootNodeRef, + ContentModel.ASSOC_CHILDREN, + QName.createQName("{test}test"), + ContentModel.TYPE_BASE, + createTypePropertyBag()); + NodeRef nodeRef = childAssocRef.getChildRef(); + // If we copy this, there should not be a cm:source association + NodeRef copyNodeRef = copyService.copy( + nodeRef, + rootNodeRef, + ContentModel.ASSOC_CHILDREN, + QName.createQName("{test}copyAssoc")); + + assertFalse( + "cm:copiedfrom should not be present", + nodeService.hasAspect(copyNodeRef, ContentModel.ASPECT_COPIEDFROM)); + } + public void testCopyNodeWithRules() { // Create a new rule and add it to the source noderef