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)); + } + } + }); + } + + +}