Merged BRANCHES/V3.4 to HEAD (to fix ALF-5837)

23478: ALF-5303: Upload new version fails when file uploaded to sub-folder and parent folder has rule for update

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@24245 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Gavin Cornwell
2010-12-06 15:36:56 +00:00
parent da8935725d
commit d317abfa36
3 changed files with 42 additions and 12 deletions

View File

@@ -1044,17 +1044,24 @@ public class RuleServiceImpl
* @see org.alfresco.repo.rule.RuleService#executePendingRules()
*/
public void executePendingRules()
{
if (logger.isDebugEnabled() == true)
{
logger.debug("Creating the executed rules list");
}
{
if (AlfrescoTransactionSupport.getResource(KEY_RULES_EXECUTED) == null)
{
if (logger.isDebugEnabled() == true)
{
logger.debug("Creating the executed rules list");
}
AlfrescoTransactionSupport.bindResource(KEY_RULES_EXECUTED, new HashSet<ExecutedRuleData>());
}
List<PendingRuleData> executeAtEndRules = new ArrayList<PendingRuleData>();
else
{
if (logger.isDebugEnabled() == true)
{
logger.debug("Executed rules list already exists");
}
}
List<PendingRuleData> executeAtEndRules = new ArrayList<PendingRuleData>();
executePendingRulesImpl(executeAtEndRules);
for (PendingRuleData data : executeAtEndRules)
{

View File

@@ -21,13 +21,17 @@ package org.alfresco.repo.rule.ruletrigger;
import java.util.HashSet;
import java.util.Set;
import org.alfresco.model.ContentModel;
import org.alfresco.repo.action.ActionModel;
import org.alfresco.repo.policy.PolicyComponent;
import org.alfresco.repo.rule.RuleModel;
import org.alfresco.repo.security.authentication.AuthenticationComponent;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ContentService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.rule.RuleType;
import org.alfresco.service.namespace.QName;
/**
* Rule trigger abstract base
@@ -151,9 +155,27 @@ public abstract class RuleTriggerAbstractBase implements RuleTrigger
*/
protected void triggerRules(NodeRef nodeRef, NodeRef actionedUponNodeRef)
{
for (RuleType ruleType : this.ruleTypes)
{
ruleType.triggerRuleType(nodeRef, actionedUponNodeRef, this.executeRuleImmediately);
}
// Do not trigger rules for rule and action type nodes
if (ignoreTrigger(actionedUponNodeRef) == false)
{
for (RuleType ruleType : this.ruleTypes)
{
ruleType.triggerRuleType(nodeRef, actionedUponNodeRef, this.executeRuleImmediately);
}
}
}
private boolean ignoreTrigger(NodeRef actionedUponNodeRef)
{
boolean result = false;
QName typeQName = nodeService.getType(actionedUponNodeRef);
if (typeQName.equals(RuleModel.TYPE_RULE) == true ||
typeQName.equals(ActionModel.TYPE_ACTION) == true ||
typeQName.equals(ActionModel.TYPE_COMPOSITE_ACTION) == true ||
typeQName.equals(ContentModel.TYPE_THUMBNAIL) == true)
{
result = true;
}
return result;
}
}