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(