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
This commit is contained in:
Andrei Rebegea
2016-05-19 15:05:40 +00:00
parent 4dcd2ce286
commit a710e77559
3 changed files with 51 additions and 17 deletions

View File

@@ -104,6 +104,18 @@
<value>{http://www.alfresco.org/model/system/1.0}temporary</value> <value>{http://www.alfresco.org/model/system/1.0}temporary</value>
</list> </list>
</property> </property>
<property name="ignoredTypeStr">
<list>
<value>{http://www.alfresco.org/model/rule/1.0}rule</value>
<value>{http://www.alfresco.org/model/action/1.0}action</value>
<value>{http://www.alfresco.org/model/content/1.0}thumbnail</value>
<value>{http://www.alfresco.org/model/content/1.0}failedThumbnail</value>
<!-- Workaround to prevent rules running on cm:rating nodes (which happened for 'liked' folders ALF-8308 & ALF-8382) -->
<value>{http://www.alfresco.org/model/content/1.0}rating</value>
<value>{http://www.alfresco.org/model/content/1.0}systemfolder</value>
<value>{http://www.alfresco.org/model/forum/1.0}post</value>
</list>
</property>
</bean> </bean>
<bean id="on-create-node-trigger" class="org.alfresco.repo.rule.ruletrigger.CreateNodeRuleTrigger" parent="rule-trigger-base"> <bean id="on-create-node-trigger" class="org.alfresco.repo.rule.ruletrigger.CreateNodeRuleTrigger" parent="rule-trigger-base">

View File

@@ -50,26 +50,12 @@ import org.alfresco.service.namespace.QName;
*/ */
public abstract class RuleTriggerAbstractBase implements RuleTrigger public abstract class RuleTriggerAbstractBase implements RuleTrigger
{ {
/** the types (hardcoded) to ignore generally */
private static final Set<QName> IGNORE_TYPES;
static
{
IGNORE_TYPES = new HashSet<QName>(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 * A list of the rule types that are interested in this trigger
*/ */
private Set<RuleType> ruleTypes = new HashSet<RuleType>(); private Set<RuleType> ruleTypes = new HashSet<RuleType>();
private Set<QName> ignoredAspects = Collections.emptySet(); private Set<QName> ignoredAspects = Collections.emptySet();
private Set<QName> ignoredTypes=Collections.emptySet();
protected PolicyComponent policyComponent; protected PolicyComponent policyComponent;
protected NodeService nodeService; protected NodeService nodeService;
@@ -194,7 +180,7 @@ public abstract class RuleTriggerAbstractBase implements RuleTrigger
{ {
boolean result = false; boolean result = false;
QName typeQName = nodeService.getType(actionedUponNodeRef); QName typeQName = nodeService.getType(actionedUponNodeRef);
if (IGNORE_TYPES.contains(typeQName)) if (ignoredTypes.contains(typeQName))
{ {
result = true; result = true;
} }
@@ -231,4 +217,23 @@ public abstract class RuleTriggerAbstractBase implements RuleTrigger
this.ignoredAspects.add(QName.createQName(ignoredAspectStr)); this.ignoredAspects.add(QName.createQName(ignoredAspectStr));
} }
} }
public Set<QName> getIgnoredTypes()
{
return ignoredTypes;
}
/**
* Converting String ignored Types from Spring context to QNames
*
* @param ignoredTypes
*/
public void setIgnoredTypeStr(List<String> ignoredTypes)
{
this.ignoredTypes = new HashSet<QName>(13);
for (String ignoredTypeStr : ignoredTypes)
{
this.ignoredTypes.add(QName.createQName(ignoredTypeStr));
}
}
} }

View File

@@ -26,6 +26,7 @@
package org.alfresco.repo.rule.ruletrigger; package org.alfresco.repo.rule.ruletrigger;
import org.alfresco.model.ContentModel; import org.alfresco.model.ContentModel;
import org.alfresco.model.ForumModel;
import org.alfresco.repo.content.MimetypeMap; import org.alfresco.repo.content.MimetypeMap;
import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil;
import org.alfresco.service.ServiceRegistry; import org.alfresco.service.ServiceRegistry;
@@ -98,6 +99,22 @@ public class RuleTriggerTest extends BaseSpringTest
assertTrue(ruleType.rulesTriggered); 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() public void testOnUpdateNodeTrigger()
{ {
NodeRef nodeRef = this.nodeService.createNode( NodeRef nodeRef = this.nodeService.createNode(