mirror of
				https://github.com/Alfresco/alfresco-community-repo.git
				synced 2025-10-29 15:21:53 +00:00 
			
		
		
		
	- Done while rolling in ALF-10839: Eliminate rule discovery overhead on property update when rules have been disabled - Some checking of rule state done BEFORE walking up the node hierarchy - Also fixes ALF-4216: disabledRules List is not thread safe git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@31255 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package org.alfresco.repo.rule.ruletrigger;
 | |
| 
 | |
| import org.alfresco.repo.node.NodeServicePolicies;
 | |
| import org.alfresco.repo.policy.JavaBehaviour;
 | |
| import org.alfresco.service.cmr.repository.ChildAssociationRef;
 | |
| import org.alfresco.service.namespace.NamespaceService;
 | |
| import org.alfresco.service.namespace.QName;
 | |
| 
 | |
| /**
 | |
|  * A rule trigger for when nodes are moved.
 | |
|  * 
 | |
|  * @since 3.4.6
 | |
|  */
 | |
| public class OnMoveNodeRuleTrigger extends RuleTriggerAbstractBase implements NodeServicePolicies.OnMoveNodePolicy
 | |
| {
 | |
|     private static final String POLICY_NAME = NodeServicePolicies.OnMoveNodePolicy.QNAME.getLocalName();
 | |
| 
 | |
|     private boolean isClassBehaviour = false;
 | |
| 
 | |
|     public void setIsClassBehaviour(boolean isClassBehaviour)
 | |
|     {
 | |
|         this.isClassBehaviour = isClassBehaviour;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @see org.alfresco.repo.rule.ruletrigger.RuleTrigger#registerRuleTrigger()
 | |
|      */
 | |
|     public void registerRuleTrigger()
 | |
|     {
 | |
|         if (isClassBehaviour == true)
 | |
|         {
 | |
|             this.policyComponent.bindClassBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI, POLICY_NAME), this, new JavaBehaviour(this, POLICY_NAME));
 | |
|         }
 | |
|         else
 | |
|         {
 | |
|             this.policyComponent.bindAssociationBehaviour(QName.createQName(NamespaceService.ALFRESCO_URI, POLICY_NAME), this, new JavaBehaviour(this, POLICY_NAME));
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     public void onMoveNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
 | |
|     {
 | |
|         // Break out early if rules are not enabled
 | |
|         if (!areRulesEnabled())
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
|         // Check that it is not rename operation.
 | |
|         if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef()))
 | |
|         {
 | |
|             triggerChildrenRules(newChildAssocRef, newChildAssocRef);
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     private void triggerChildrenRules(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef)
 | |
|     {
 | |
|         // Break out early if rules are not enabled
 | |
|         if (!areRulesEnabled())
 | |
|         {
 | |
|             return;
 | |
|         }
 | |
|         triggerRules(newChildAssocRef.getParentRef(), newChildAssocRef.getChildRef());
 | |
|         for (ChildAssociationRef ref : nodeService.getChildAssocs(newChildAssocRef.getChildRef()))
 | |
|         {
 | |
|             triggerChildrenRules(ref, ref);
 | |
|         }
 | |
|     }
 | |
| }
 |