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
This commit is contained in:
Roy Wetherall
2010-03-24 19:44:31 +00:00
parent 7f4810c32d
commit 27d6bddcf5
2 changed files with 19 additions and 2 deletions

View File

@@ -29,6 +29,7 @@ import org.alfresco.service.cmr.action.ParameterDefinition;
import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.rule.Rule;
import org.alfresco.service.cmr.rule.RuleService; import org.alfresco.service.cmr.rule.RuleService;
/** /**
@@ -86,11 +87,22 @@ public class LinkRules extends ActionExecuterAbstractBase
// Check for a linked to node // Check for a linked to node
NodeRef linkedToNode = ((RuleService)ruleService).getLinkedToRuleNode(actionedUponNodeRef); NodeRef linkedToNode = ((RuleService)ruleService).getLinkedToRuleNode(actionedUponNodeRef);
if (linkedToNode == null) if (linkedToNode == null)
{
// if the node has no rules we can delete the folder ready to link
List<Rule> rules = ((RuleService)ruleService).getRules(actionedUponNodeRef, false);
if (rules.isEmpty() == false)
{ {
// Can't link a node if it already has rules // 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."); throw new AlfrescoRuntimeException("The current folder has rules and can not be linked to another folder.");
} }
else else
{
// Delete the rules system folder
NodeRef ruleFolder = ruleService.getSavedRuleFolderAssoc(actionedUponNodeRef).getChildRef();
nodeService.deleteNode(ruleFolder);
}
}
else
{ {
// Unlink the folder, before relinking later to the specified node // Unlink the folder, before relinking later to the specified node
NodeRef ruleFolder = ruleService.getSavedRuleFolderAssoc(linkedToNode).getChildRef(); NodeRef ruleFolder = ruleService.getSavedRuleFolderAssoc(linkedToNode).getChildRef();

View File

@@ -232,6 +232,11 @@ public class RuleLinkTest extends BaseSpringTest
try try
{ {
rules = ruleService.getRules(folderTwo);
assertNotNull(rules);
assertFalse(rules.isEmpty());
assertEquals(2, rules.size());
link(folderTwo, folderOne); link(folderTwo, folderOne);
fail("Shouldn't be able to link a folder that already has rules that it owns."); fail("Shouldn't be able to link a folder that already has rules that it owns.");
} }