From a710e77559b39478ca32e6af5959f260d7287bd7 Mon Sep 17 00:00:00 2001 From: Andrei Rebegea Date: Thu, 19 May 2016 15:05:40 +0000 Subject: [PATCH] Merged 5.0.N (5.0.4) to 5.1.N (5.1.2) 127236 dungureanu: MNT-15149 : Rule set with "Rule applied to subfolder" also applies to a comment node. - added fm:post into ignored types list - externalised list into the spring config - created test for ignored types git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/DEV/5.1.N/root@127263 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/rule-services-context.xml | 12 ++++++ .../ruletrigger/RuleTriggerAbstractBase.java | 37 +++++++++++-------- .../rule/ruletrigger/RuleTriggerTest.java | 19 +++++++++- 3 files changed, 51 insertions(+), 17 deletions(-) diff --git a/config/alfresco/rule-services-context.xml b/config/alfresco/rule-services-context.xml index 8bb5509bfa..530218037c 100644 --- a/config/alfresco/rule-services-context.xml +++ b/config/alfresco/rule-services-context.xml @@ -104,6 +104,18 @@ {http://www.alfresco.org/model/system/1.0}temporary + + + {http://www.alfresco.org/model/rule/1.0}rule + {http://www.alfresco.org/model/action/1.0}action + {http://www.alfresco.org/model/content/1.0}thumbnail + {http://www.alfresco.org/model/content/1.0}failedThumbnail + + {http://www.alfresco.org/model/content/1.0}rating + {http://www.alfresco.org/model/content/1.0}systemfolder + {http://www.alfresco.org/model/forum/1.0}post + + diff --git a/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerAbstractBase.java b/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerAbstractBase.java index 950eec4a9f..5094bf4663 100644 --- a/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerAbstractBase.java +++ b/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerAbstractBase.java @@ -50,26 +50,12 @@ import org.alfresco.service.namespace.QName; */ public abstract class RuleTriggerAbstractBase implements RuleTrigger { - /** the types (hardcoded) to ignore generally */ - private static final Set IGNORE_TYPES; - - static - { - IGNORE_TYPES = new HashSet(13); - IGNORE_TYPES.add(RuleModel.TYPE_RULE); - IGNORE_TYPES.add(ActionModel.TYPE_ACTION); - IGNORE_TYPES.add(ContentModel.TYPE_THUMBNAIL); - IGNORE_TYPES.add(ContentModel.TYPE_FAILED_THUMBNAIL); - // Workaround to prevent rules running on cm:rating nodes (which happened for 'liked' folders ALF-8308 & ALF-8382) - IGNORE_TYPES.add(ContentModel.TYPE_RATING); - IGNORE_TYPES.add(ContentModel.TYPE_SYSTEM_FOLDER); - } - /** * A list of the rule types that are interested in this trigger */ private Set ruleTypes = new HashSet(); private Set ignoredAspects = Collections.emptySet(); + private Set ignoredTypes=Collections.emptySet(); protected PolicyComponent policyComponent; protected NodeService nodeService; @@ -194,7 +180,7 @@ public abstract class RuleTriggerAbstractBase implements RuleTrigger { boolean result = false; QName typeQName = nodeService.getType(actionedUponNodeRef); - if (IGNORE_TYPES.contains(typeQName)) + if (ignoredTypes.contains(typeQName)) { result = true; } @@ -231,4 +217,23 @@ public abstract class RuleTriggerAbstractBase implements RuleTrigger this.ignoredAspects.add(QName.createQName(ignoredAspectStr)); } } + + public Set getIgnoredTypes() + { + return ignoredTypes; + } + + /** + * Converting String ignored Types from Spring context to QNames + * + * @param ignoredTypes + */ + public void setIgnoredTypeStr(List ignoredTypes) + { + this.ignoredTypes = new HashSet(13); + for (String ignoredTypeStr : ignoredTypes) + { + this.ignoredTypes.add(QName.createQName(ignoredTypeStr)); + } + } } diff --git a/source/test-java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java b/source/test-java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java index 9698f50c81..f7a9638a11 100644 --- a/source/test-java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java +++ b/source/test-java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java @@ -26,6 +26,7 @@ package org.alfresco.repo.rule.ruletrigger; import org.alfresco.model.ContentModel; +import org.alfresco.model.ForumModel; import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.service.ServiceRegistry; @@ -97,7 +98,23 @@ public class RuleTriggerTest extends BaseSpringTest // Check to see if the rule type has been triggered assertTrue(ruleType.rulesTriggered); } - + + public void testOnCreateIgnoredTypesTrigger() + { + TestRuleType ruleType = createTestRuleType(ON_CREATE_NODE_TRIGGER); + assertFalse(ruleType.rulesTriggered); + + //Try and trigger the type + this.nodeService.createNode( + this.rootNodeRef, + ForumModel.ASSOC_DISCUSSION, + ForumModel.ASSOC_DISCUSSION, + ForumModel.TYPE_POST); + + //Check to see if the rule type has been triggered + assertFalse(ruleType.rulesTriggered); + } + public void testOnUpdateNodeTrigger() { NodeRef nodeRef = this.nodeService.createNode(