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.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.rule.Rule;
import org.alfresco.service.cmr.rule.RuleService;
/**
@@ -86,11 +87,22 @@ public class LinkRules extends ActionExecuterAbstractBase
// Check for a linked to node
NodeRef linkedToNode = ((RuleService)ruleService).getLinkedToRuleNode(actionedUponNodeRef);
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
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
{
// Unlink the folder, before relinking later to the specified node
NodeRef ruleFolder = ruleService.getSavedRuleFolderAssoc(linkedToNode).getChildRef();

View File

@@ -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.");
}