From 27d6bddcf503b5ad337b1436c46c28ca450fc0e3 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Wed, 24 Mar 2010 19:44:31 +0000 Subject: [PATCH] ALF-2036 : Can't link to a folder due to fodler already containing rules (but it doesn't) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@19563 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../java/org/alfresco/repo/rule/LinkRules.java | 16 ++++++++++++++-- .../org/alfresco/repo/rule/RuleLinkTest.java | 5 +++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/source/java/org/alfresco/repo/rule/LinkRules.java b/source/java/org/alfresco/repo/rule/LinkRules.java index 609c596536..fa6d274cae 100644 --- a/source/java/org/alfresco/repo/rule/LinkRules.java +++ b/source/java/org/alfresco/repo/rule/LinkRules.java @@ -29,6 +29,7 @@ import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.cmr.rule.Rule; import org.alfresco.service.cmr.rule.RuleService; /** @@ -87,8 +88,19 @@ public class LinkRules extends ActionExecuterAbstractBase NodeRef linkedToNode = ((RuleService)ruleService).getLinkedToRuleNode(actionedUponNodeRef); if (linkedToNode == null) { - // Can't link a node if it already has rules - throw new AlfrescoRuntimeException("The current folder has rules and can not be linked to another folder."); + // if the node has no rules we can delete the folder ready to link + List rules = ((RuleService)ruleService).getRules(actionedUponNodeRef, false); + if (rules.isEmpty() == false) + { + // Can't link a node if it already has rules + throw new AlfrescoRuntimeException("The current folder has rules and can not be linked to another folder."); + } + else + { + // Delete the rules system folder + NodeRef ruleFolder = ruleService.getSavedRuleFolderAssoc(actionedUponNodeRef).getChildRef(); + nodeService.deleteNode(ruleFolder); + } } else { diff --git a/source/java/org/alfresco/repo/rule/RuleLinkTest.java b/source/java/org/alfresco/repo/rule/RuleLinkTest.java index 6751011bbd..f902152acc 100644 --- a/source/java/org/alfresco/repo/rule/RuleLinkTest.java +++ b/source/java/org/alfresco/repo/rule/RuleLinkTest.java @@ -232,6 +232,11 @@ public class RuleLinkTest extends BaseSpringTest try { + rules = ruleService.getRules(folderTwo); + assertNotNull(rules); + assertFalse(rules.isEmpty()); + assertEquals(2, rules.size()); + link(folderTwo, folderOne); fail("Shouldn't be able to link a folder that already has rules that it owns."); }