From 2bdace676d23e3c8e9c75b82fd3ba0d619ac0fa1 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Wed, 1 Feb 2006 14:26:17 +0000 Subject: [PATCH] - Added update and inboundAndUpdate as example rule types that can be commented in. - Added parameter to content update policy to indicate whether it is new content being updated - Added triigers to support update rule type git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2275 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../alfresco/messages/rule-config.properties | 2 + config/alfresco/rule-services-context.xml | 47 +++++++++- .../repo/content/ContentServicePolicies.java | 7 +- .../repo/content/RoutingContentService.java | 35 ++++++- .../content/RoutingContentServiceTest.java | 6 +- .../repo/dictionary/DictionaryModelType.java | 10 +- .../repo/rule/RuleServiceCoverageTest.java | 22 +++-- .../alfresco/repo/rule/RuleTypeImplTest.java | 1 + .../OnContentUpdateRuleTrigger.java | 92 +++++++++++++++++++ .../OnPropertyUpdateRuleTrigger.java | 81 ++++++++++++++++ .../rule/ruletrigger/RuleTriggerTest.java | 37 +++++++- .../repo/version/VersionableAspect.java | 7 +- 12 files changed, 322 insertions(+), 25 deletions(-) create mode 100644 source/java/org/alfresco/repo/rule/ruletrigger/OnContentUpdateRuleTrigger.java create mode 100644 source/java/org/alfresco/repo/rule/ruletrigger/OnPropertyUpdateRuleTrigger.java diff --git a/config/alfresco/messages/rule-config.properties b/config/alfresco/messages/rule-config.properties index 6907e15b5c..511560cada 100644 --- a/config/alfresco/messages/rule-config.properties +++ b/config/alfresco/messages/rule-config.properties @@ -2,3 +2,5 @@ inbound.display-label=Inbound outbound.display-label=Outbound +update.display-label=Update +inboundAndUpdate.display-label=Inbound and Update diff --git a/config/alfresco/rule-services-context.xml b/config/alfresco/rule-services-context.xml index 160f74833d..d2c3e370a2 100644 --- a/config/alfresco/rule-services-context.xml +++ b/config/alfresco/rule-services-context.xml @@ -66,11 +66,43 @@ + + + + + + + + + + + + @@ -111,6 +143,9 @@ + + + onDeleteNode @@ -144,9 +179,15 @@ - - - onContentUpdate + + + false + + + + + + true diff --git a/source/java/org/alfresco/repo/content/ContentServicePolicies.java b/source/java/org/alfresco/repo/content/ContentServicePolicies.java index 871b836af0..a10bab1bb3 100644 --- a/source/java/org/alfresco/repo/content/ContentServicePolicies.java +++ b/source/java/org/alfresco/repo/content/ContentServicePolicies.java @@ -18,6 +18,8 @@ package org.alfresco.repo.content; import org.alfresco.repo.policy.ClassPolicy; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.NamespaceService; +import org.alfresco.service.namespace.QName; /** * Content service policies interface @@ -26,6 +28,9 @@ import org.alfresco.service.cmr.repository.NodeRef; */ public interface ContentServicePolicies { + /** The QName's of the policies */ + public static final QName ON_CONTENT_UPDATE = QName.createQName(NamespaceService.ALFRESCO_URI, "onContentUpdate"); + /** * On content update policy interface */ @@ -34,6 +39,6 @@ public interface ContentServicePolicies /** * @param nodeRef the node reference */ - public void onContentUpdate(NodeRef nodeRef); + public void onContentUpdate(NodeRef nodeRef, boolean newContent); } } diff --git a/source/java/org/alfresco/repo/content/RoutingContentService.java b/source/java/org/alfresco/repo/content/RoutingContentService.java index 7278659fbf..030d4fff4b 100644 --- a/source/java/org/alfresco/repo/content/RoutingContentService.java +++ b/source/java/org/alfresco/repo/content/RoutingContentService.java @@ -147,6 +147,7 @@ public class RoutingContentService implements ContentService Map after) { boolean fire = false; + boolean newContent = false; // check if any of the content properties have changed for (QName propertyQName : after.keySet()) { @@ -173,6 +174,38 @@ public class RoutingContentService implements ContentService } else if (!EqualsHelper.nullSafeEquals(beforeValue, afterValue)) { + // So debug ... + if (logger.isDebugEnabled() == true) + { + String beforeString = ""; + if (beforeValue != null) + { + beforeString = beforeValue.toString(); + } + String afterString = ""; + if (afterValue != null) + { + afterString = afterValue.toString(); + } + logger.debug("onContentUpate: before = " + beforeString + "; after = " + afterString); + } + + // Figure out if the content is new or not + String beforeContentUrl = null; + if (beforeValue != null) + { + beforeContentUrl = beforeValue.getContentUrl(); + } + String afterContentUrl = null; + if (afterValue != null) + { + afterContentUrl = afterValue.getContentUrl(); + } + if (beforeContentUrl == null && afterContentUrl != null) + { + newContent = true; + } + // the content changed // at the moment, we are only interested in this one change fire = true; @@ -192,7 +225,7 @@ public class RoutingContentService implements ContentService Set types = new HashSet(this.nodeService.getAspects(nodeRef)); types.add(this.nodeService.getType(nodeRef)); OnContentUpdatePolicy policy = this.onContentUpdateDelegate.get(types); - policy.onContentUpdate(nodeRef); + policy.onContentUpdate(nodeRef, newContent); } } diff --git a/source/java/org/alfresco/repo/content/RoutingContentServiceTest.java b/source/java/org/alfresco/repo/content/RoutingContentServiceTest.java index 3801352400..7fa15682fe 100644 --- a/source/java/org/alfresco/repo/content/RoutingContentServiceTest.java +++ b/source/java/org/alfresco/repo/content/RoutingContentServiceTest.java @@ -257,6 +257,7 @@ public class RoutingContentServiceTest extends BaseSpringTest } private boolean policyFired = false; + private boolean newContent = true; /** * Tests that the content update policy firs correctly @@ -273,6 +274,8 @@ public class RoutingContentServiceTest extends BaseSpringTest ContentWriter contentWriter = this.contentService.getWriter(contentNodeRef, ContentModel.PROP_CONTENT, true); contentWriter.putContent("content update one"); assertFalse(this.policyFired); + + this.newContent = false; // Now check that the policy is fired when the versionable aspect is present this.nodeService.addAspect(this.contentNodeRef, ContentModel.ASPECT_VERSIONABLE, null); @@ -287,9 +290,10 @@ public class RoutingContentServiceTest extends BaseSpringTest assertFalse(this.policyFired); } - public void onContentUpdateBehaviourTest(NodeRef nodeRef) + public void onContentUpdateBehaviourTest(NodeRef nodeRef, boolean newContent) { assertEquals(this.contentNodeRef, nodeRef); + assertEquals(this.newContent, newContent); assertTrue(this.nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE)); this.policyFired = true; } diff --git a/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java b/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java index 5d5c48b2bf..e07545de0a 100644 --- a/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java +++ b/source/java/org/alfresco/repo/dictionary/DictionaryModelType.java @@ -22,6 +22,8 @@ import java.util.Map; import java.util.Set; import org.alfresco.model.ContentModel; +import org.alfresco.repo.content.ContentServicePolicies; +import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; @@ -40,7 +42,9 @@ import org.alfresco.util.GUID; * * @author Roy Wetherall */ -public class DictionaryModelType +public class DictionaryModelType implements ContentServicePolicies.OnContentUpdatePolicy, + NodeServicePolicies.OnUpdatePropertiesPolicy, + NodeServicePolicies.BeforeDeleteNodePolicy { /** Key to the pending models */ private static final String KEY_PENDING_MODELS = "dictionaryModelType.pendingModels"; @@ -120,7 +124,7 @@ public class DictionaryModelType { // Register interest in the onContentUpdate policy for the dictionary model type policyComponent.bindClassBehaviour( - QName.createQName(NamespaceService.ALFRESCO_URI, "onContentUpdate"), + ContentServicePolicies.ON_CONTENT_UPDATE, ContentModel.TYPE_DICTIONARY_MODEL, new JavaBehaviour(this, "onContentUpdate")); @@ -145,7 +149,7 @@ public class DictionaryModelType * * @param nodeRef the node reference whose content has been updated */ - public void onContentUpdate(NodeRef nodeRef) + public void onContentUpdate(NodeRef nodeRef, boolean newContent) { queueModel(nodeRef); } diff --git a/source/java/org/alfresco/repo/rule/RuleServiceCoverageTest.java b/source/java/org/alfresco/repo/rule/RuleServiceCoverageTest.java index 3e689ba30b..2fda39a4b6 100644 --- a/source/java/org/alfresco/repo/rule/RuleServiceCoverageTest.java +++ b/source/java/org/alfresco/repo/rule/RuleServiceCoverageTest.java @@ -85,7 +85,7 @@ import org.springframework.util.StopWatch; */ public class RuleServiceCoverageTest extends TestCase { - private static final ContentData CONTENT_DATA_TEXT = new ContentData(null, MimetypeMap.MIMETYPE_TEXT_PLAIN, 0L, "UTF-8"); + //private static final ContentData CONTENT_DATA_TEXT = new ContentData(null, MimetypeMap.MIMETYPE_TEXT_PLAIN, 0L, "UTF-8"); /** * Application context used during the test @@ -455,9 +455,9 @@ public class RuleServiceCoverageTest extends TestCase private Map getContentProperties() { - Map properties = new HashMap(1); - properties.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); - return properties; + // Map properties = new HashMap(1); + // properties.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + return null; } /** @@ -1105,6 +1105,8 @@ public class RuleServiceCoverageTest extends TestCase private void addContentToNode(NodeRef nodeRef) { ContentWriter contentWriter = this.contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); + contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + contentWriter.setEncoding("UTF-8"); assertNotNull(contentWriter); contentWriter.putContent(STANDARD_TEXT_CONTENT + System.currentTimeMillis()); } @@ -1179,7 +1181,7 @@ public class RuleServiceCoverageTest extends TestCase // Test condition failure Map props1 = new HashMap(); props1.put(ContentModel.PROP_NAME, "bobbins.txt"); - props1.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + // props1.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); NodeRef newNodeRef = this.nodeService.createNode( this.nodeRef, ContentModel.ASSOC_CHILDREN, @@ -1196,7 +1198,7 @@ public class RuleServiceCoverageTest extends TestCase // Test condition success Map props2 = new HashMap(); props2.put(ContentModel.PROP_NAME, "bobbins.doc"); - props2.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + //props2.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); NodeRef newNodeRef2 = this.nodeService.createNode( this.nodeRef, ContentModel.ASSOC_CHILDREN, @@ -1233,7 +1235,7 @@ public class RuleServiceCoverageTest extends TestCase this.ruleService.saveRule(this.nodeRef, rule); Map propsx = new HashMap(); propsx.put(ContentModel.PROP_NAME, "mybobbins.doc"); - propsx.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + //propsx.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); NodeRef newNodeRefx = this.nodeService.createNode( this.nodeRef, ContentModel.ASSOC_CHILDREN, @@ -1244,7 +1246,7 @@ public class RuleServiceCoverageTest extends TestCase assertFalse(this.nodeService.hasAspect(newNodeRefx, ContentModel.ASPECT_VERSIONABLE)); Map propsy = new HashMap(); propsy.put(ContentModel.PROP_NAME, "bobbins.doc"); - propsy.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + //propsy.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); NodeRef newNodeRefy = this.nodeService.createNode( this.nodeRef, ContentModel.ASSOC_CHILDREN, @@ -1265,7 +1267,7 @@ public class RuleServiceCoverageTest extends TestCase this.ruleService.saveRule(this.nodeRef, rule); Map propsa = new HashMap(); propsa.put(ContentModel.PROP_NAME, "bobbins.document"); - propsa.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + // propsa.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); NodeRef newNodeRefa = this.nodeService.createNode( this.nodeRef, ContentModel.ASSOC_CHILDREN, @@ -1276,7 +1278,7 @@ public class RuleServiceCoverageTest extends TestCase assertFalse(this.nodeService.hasAspect(newNodeRefa, ContentModel.ASPECT_VERSIONABLE)); Map propsb = new HashMap(); propsb.put(ContentModel.PROP_NAME, "bobbins.doc"); - propsb.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); + //propsb.put(ContentModel.PROP_CONTENT, CONTENT_DATA_TEXT); NodeRef newNodeRefb = this.nodeService.createNode( this.nodeRef, ContentModel.ASSOC_CHILDREN, diff --git a/source/java/org/alfresco/repo/rule/RuleTypeImplTest.java b/source/java/org/alfresco/repo/rule/RuleTypeImplTest.java index d39456e763..120978c00b 100644 --- a/source/java/org/alfresco/repo/rule/RuleTypeImplTest.java +++ b/source/java/org/alfresco/repo/rule/RuleTypeImplTest.java @@ -93,6 +93,7 @@ public class RuleTypeImplTest extends BaseSpringTest ContentModel.TYPE_CONTAINER).getChildRef(); List triggers = new ArrayList(2); + triggers.add((RuleTrigger)this.applicationContext.getBean("on-content-create-trigger")); triggers.add((RuleTrigger)this.applicationContext.getBean("on-content-update-trigger")); triggers.add((RuleTrigger)this.applicationContext.getBean("on-create-child-association-trigger")); diff --git a/source/java/org/alfresco/repo/rule/ruletrigger/OnContentUpdateRuleTrigger.java b/source/java/org/alfresco/repo/rule/ruletrigger/OnContentUpdateRuleTrigger.java new file mode 100644 index 0000000000..f8e9a2e962 --- /dev/null +++ b/source/java/org/alfresco/repo/rule/ruletrigger/OnContentUpdateRuleTrigger.java @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.repo.rule.ruletrigger; + +import java.util.List; + +import org.alfresco.repo.content.ContentServicePolicies; +import org.alfresco.repo.policy.JavaBehaviour; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; + +/** + * @author Roy Wetherall + */ +public class OnContentUpdateRuleTrigger extends RuleTriggerAbstractBase + implements ContentServicePolicies.OnContentUpdatePolicy +{ + /** True trigger on new content, false otherwise */ + private boolean onNewContent = false; + + /** True trigger parent rules, false otherwier */ + private boolean triggerParentRules = true; + + /** + * If set to true the trigger will fire on new content, otherwise it will fire on content update + * + * @param onNewContent indicates whether to fire on content create or update + */ + public void setOnNewContent(boolean onNewContent) + { + this.onNewContent = onNewContent; + } + + /** + * Indicates whether the parent rules should be triggered or the rules on the node itself + * + * @param triggerParentRules true trigger parent rules, false otherwise + */ + public void setTriggerParentRules(boolean triggerParentRules) + { + this.triggerParentRules = triggerParentRules; + } + + /* + * @see org.alfresco.repo.rule.ruletrigger.RuleTrigger#registerRuleTrigger() + */ + public void registerRuleTrigger() + { + // Bind behaviour + this.policyComponent.bindClassBehaviour( + ContentServicePolicies.ON_CONTENT_UPDATE, + this, + new JavaBehaviour(this, "onContentUpdate")); + } + + /** + * @see org.alfresco.repo.content.ContentServicePolicies.OnContentUpdatePolicy#onContentUpdate(org.alfresco.service.cmr.repository.NodeRef, boolean) + */ + public void onContentUpdate(NodeRef nodeRef, boolean newContent) + { + if (newContent == this.onNewContent) + { + if (triggerParentRules == true) + { + List parentsAssocRefs = this.nodeService.getParentAssocs(nodeRef); + for (ChildAssociationRef parentAssocRef : parentsAssocRefs) + { + triggerRules(parentAssocRef.getParentRef(), nodeRef); + } + } + else + { + triggerRules(nodeRef, nodeRef); + } + } + } + +} diff --git a/source/java/org/alfresco/repo/rule/ruletrigger/OnPropertyUpdateRuleTrigger.java b/source/java/org/alfresco/repo/rule/ruletrigger/OnPropertyUpdateRuleTrigger.java new file mode 100644 index 0000000000..c01f3ee0b1 --- /dev/null +++ b/source/java/org/alfresco/repo/rule/ruletrigger/OnPropertyUpdateRuleTrigger.java @@ -0,0 +1,81 @@ +/* + * Copyright (C) 2005 Alfresco, Inc. + * + * Licensed under the Mozilla Public License version 1.1 + * with a permitted attribution clause. You may obtain a + * copy of the License at + * + * http://www.alfresco.org/legal/license.txt + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific + * language governing permissions and limitations under the + * License. + */ +package org.alfresco.repo.rule.ruletrigger; + +import java.io.Serializable; +import java.util.List; +import java.util.Map; + +import org.alfresco.repo.node.NodeServicePolicies; +import org.alfresco.repo.policy.JavaBehaviour; +import org.alfresco.service.cmr.repository.ChildAssociationRef; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.NamespaceService; +import org.alfresco.service.namespace.QName; + +/** + * On propety update trigger + * + * @author Roy Wetherall + */ +public class OnPropertyUpdateRuleTrigger extends RuleTriggerAbstractBase + implements NodeServicePolicies.OnUpdatePropertiesPolicy +{ + /** True trigger parent rules, false otherwier */ + private boolean triggerParentRules = true; + + /** + * Indicates whether the parent rules should be triggered or the rules on the node itself + * + * @param triggerParentRules true trigger parent rules, false otherwise + */ + public void setTriggerParentRules(boolean triggerParentRules) + { + this.triggerParentRules = triggerParentRules; + } + + /* + * @see org.alfresco.repo.rule.ruletrigger.RuleTrigger#registerRuleTrigger() + */ + public void registerRuleTrigger() + { + // Bind behaviour + this.policyComponent.bindClassBehaviour( + QName.createQName(NamespaceService.ALFRESCO_URI, "onUpdateProperties"), + this, + new JavaBehaviour(this, "onUpdateProperties")); + } + + public void onUpdateProperties(NodeRef nodeRef, Map before, Map after) + { + if (triggerParentRules == true) + { + List parentsAssocRefs = this.nodeService.getParentAssocs(nodeRef); + for (ChildAssociationRef parentAssocRef : parentsAssocRefs) + { + triggerRules(parentAssocRef.getParentRef(), nodeRef); + } + } + else + { + triggerRules(nodeRef, nodeRef); + } + } + + + +} diff --git a/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java b/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java index 4aaf06edcc..b2f7f0fa9f 100644 --- a/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java +++ b/source/java/org/alfresco/repo/rule/ruletrigger/RuleTriggerTest.java @@ -41,6 +41,7 @@ public class RuleTriggerTest extends BaseSpringTest private static final String ON_CREATE_ASSOCIATION_TRIGGER = "on-create-association-trigger"; private static final String ON_DELETE_ASSOCIATION_TRIGGER = "on-delete-association-trigger"; private static final String ON_CONTENT_UPDATE_TRIGGER = "on-content-update-trigger"; + private static final String ON_CONTENT_CREATE_TRIGGER = "on-content-create-trigger"; private NodeService nodeService; private ContentService contentService; @@ -212,6 +213,27 @@ public class RuleTriggerTest extends BaseSpringTest assertTrue(ruleType.rulesTriggered); } + public void testOnContentCreateTrigger() + { + NodeRef nodeRef = this.nodeService.createNode( + this.rootNodeRef, + ContentModel.ASSOC_CHILDREN, + ContentModel.ASSOC_CHILDREN, + ContentModel.TYPE_CONTENT).getChildRef(); + + TestRuleType contentCreate = createTestRuleType(ON_CONTENT_CREATE_TRIGGER); + assertFalse(contentCreate.rulesTriggered); + + // Try and trigger the type + ContentWriter contentWriter = this.contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); + contentWriter.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + contentWriter.setEncoding("UTF-8"); + contentWriter.putContent("some content"); + + // Check to see if the rule type has been triggered + assertTrue(contentCreate.rulesTriggered); + } + public void testOnContentUpdateTrigger() { NodeRef nodeRef = this.nodeService.createNode( @@ -220,8 +242,8 @@ public class RuleTriggerTest extends BaseSpringTest ContentModel.ASSOC_CHILDREN, ContentModel.TYPE_CONTENT).getChildRef(); - TestRuleType ruleType = createTestRuleType(ON_CONTENT_UPDATE_TRIGGER); - assertFalse(ruleType.rulesTriggered); + TestRuleType contentUpdate = createTestRuleType(ON_CONTENT_UPDATE_TRIGGER); + assertFalse(contentUpdate.rulesTriggered); // Try and trigger the type ContentWriter contentWriter = this.contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); @@ -230,7 +252,16 @@ public class RuleTriggerTest extends BaseSpringTest contentWriter.putContent("some content"); // Check to see if the rule type has been triggered - assertTrue(ruleType.rulesTriggered); + assertFalse(contentUpdate.rulesTriggered); + + // Try and trigger the type + ContentWriter contentWriter2 = this.contentService.getWriter(nodeRef, ContentModel.PROP_CONTENT, true); + contentWriter2.setMimetype(MimetypeMap.MIMETYPE_TEXT_PLAIN); + contentWriter2.setEncoding("UTF-8"); + contentWriter2.putContent("more content some content"); + + // Check to see if the rule type has been triggered + assertTrue(contentUpdate.rulesTriggered); } private TestRuleType createTestRuleType(String ruleTriggerName) diff --git a/source/java/org/alfresco/repo/version/VersionableAspect.java b/source/java/org/alfresco/repo/version/VersionableAspect.java index 385ff51af6..475c665dd5 100644 --- a/source/java/org/alfresco/repo/version/VersionableAspect.java +++ b/source/java/org/alfresco/repo/version/VersionableAspect.java @@ -21,6 +21,7 @@ import java.util.Map; import org.alfresco.model.ContentModel; import org.alfresco.repo.action.executer.CreateVersionActionExecuter; +import org.alfresco.repo.content.ContentServicePolicies; import org.alfresco.repo.policy.Behaviour; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; @@ -41,7 +42,7 @@ import org.alfresco.service.namespace.QName; * * @author Roy Wetherall */ -public class VersionableAspect +public class VersionableAspect implements ContentServicePolicies.OnContentUpdatePolicy { /** * The policy component @@ -124,7 +125,7 @@ public class VersionableAspect new JavaBehaviour(this, "onAddAspect")); autoVersionBehaviour = new JavaBehaviour(this, "onContentUpdate"); this.policyComponent.bindClassBehaviour( - QName.createQName(NamespaceService.ALFRESCO_URI, "onContentUpdate"), + ContentServicePolicies.ON_CONTENT_UPDATE, ContentModel.ASPECT_VERSIONABLE, autoVersionBehaviour); @@ -212,7 +213,7 @@ public class VersionableAspect * * @param nodeRef the node reference */ - public void onContentUpdate(NodeRef nodeRef) + public void onContentUpdate(NodeRef nodeRef, boolean newContent) { if (this.nodeService.hasAspect(nodeRef, ContentModel.ASPECT_VERSIONABLE) == true) {