From 42f5dc5e5f5057042f5c035680eacc6f9e8e1b80 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 9 Dec 2014 17:01:53 +0000 Subject: [PATCH] Merged /DEV/BUGFIXING/HEAD-2014_12_09 to HEAD: 92077: RM-1770 Not possible to delete parent/child reference git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@92096 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../relationship/RelationshipServiceImpl.java | 5 +- .../relationship/DeleteRelationshipTest.java | 77 +++++++++++++++++++ 2 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/relationship/DeleteRelationshipTest.java diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/relationship/RelationshipServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/relationship/RelationshipServiceImpl.java index 8c7d71b176..ece19b58b3 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/relationship/RelationshipServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/relationship/RelationshipServiceImpl.java @@ -487,8 +487,9 @@ public class RelationshipServiceImpl extends RecordsManagementAdminBase implemen // Get the association definition name final QName associationDefinitionName = associationDefinition.getName(); final NodeRef targetNode = target; + final NodeRef sourceNode = source; - invokeBeforeRemoveReference(source, targetNode, associationDefinitionName); + invokeBeforeRemoveReference(sourceNode, targetNode, associationDefinitionName); if (associationDefinition.isChild()) { @@ -497,7 +498,7 @@ public class RelationshipServiceImpl extends RecordsManagementAdminBase implemen @Override public Void doWork() { - List children = getNodeService().getChildAssocs(targetNode); + List children = getNodeService().getChildAssocs(sourceNode); for (ChildAssociationRef chRef : children) { if (associationDefinitionName.equals(chRef.getTypeQName()) && chRef.getChildRef().equals(targetNode)) diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/relationship/DeleteRelationshipTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/relationship/DeleteRelationshipTest.java new file mode 100644 index 0000000000..89a06502f8 --- /dev/null +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/relationship/DeleteRelationshipTest.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ + +package org.alfresco.module.org_alfresco_module_rm.test.integration.relationship; + +import java.util.Set; +import org.alfresco.module.org_alfresco_module_rm.relationship.Relationship; +import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.util.GUID; + +/** + * Delete relationship test. + * + * @author Ana Bozianu + * @since 2.3 + */ +public class DeleteRelationshipTest extends BaseRMTestCase +{ + public void testDeleteRelationship() throws Exception + { + doBehaviourDrivenTest(new BehaviourDrivenTest() + { + /** test data */ + NodeRef sourceNode; + NodeRef targetNode; + String associationName = "obsoletes"; + + + public void given() + { + + // create the source record + sourceNode = utils.createRecord(rmFolder, GUID.generate()); + + //create the target record + targetNode = utils.createRecord(rmFolder, GUID.generate()); + + //create relationship + relationshipService.addRelationship(associationName, sourceNode, targetNode); + } + + public void when() + { + //delete relationship + relationshipService.removeRelationship(associationName, sourceNode, targetNode); + } + + public void then() + { + //check if relationship is deleted + Set relationships = relationshipService.getRelationshipsFrom(sourceNode); + for(Relationship r : relationships){ + assertFalse(r.getTarget().equals(targetNode) && r.getUniqueName().equals(associationName)); + } + } + }); + } + + +}