diff --git a/config/alfresco/core-services-context.xml b/config/alfresco/core-services-context.xml index 732f4952ad..bbff0f181c 100644 --- a/config/alfresco/core-services-context.xml +++ b/config/alfresco/core-services-context.xml @@ -800,8 +800,9 @@ - - + + + diff --git a/source/java/org/alfresco/repo/coci/CheckedOutAspect.java b/source/java/org/alfresco/repo/coci/CheckedOutAspect.java new file mode 100644 index 0000000000..1c88b39276 --- /dev/null +++ b/source/java/org/alfresco/repo/coci/CheckedOutAspect.java @@ -0,0 +1,72 @@ +package org.alfresco.repo.coci; + +import java.io.Serializable; +import java.util.Map; + +import org.alfresco.model.ContentModel; +import org.alfresco.repo.copy.CopyBehaviourCallback; +import org.alfresco.repo.copy.CopyDetails; +import org.alfresco.repo.copy.CopyServicePolicies; +import org.alfresco.repo.copy.DoNothingCopyBehaviourCallback; +import org.alfresco.repo.policy.JavaBehaviour; +import org.alfresco.repo.policy.PolicyComponent; +import org.alfresco.repo.policy.PolicyScope; +import org.alfresco.repo.version.VersionServicePolicies; +import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.namespace.QName; + +/** + * Policies relating to the checkedOut aspect. + * + * @since 4.0 + * + */ +public class CheckedOutAspect +{ + /** + * Policy component + */ + protected PolicyComponent policyComponent; + + /** + * Sets the policy component + * + * @param policyComponent the policy component + */ + public void setPolicyComponent(PolicyComponent policyComponent) + { + this.policyComponent = policyComponent; + } + + public void init() + { + this.policyComponent.bindClassBehaviour( + CopyServicePolicies.OnCopyNodePolicy.QNAME, + ContentModel.ASPECT_CHECKED_OUT, + new JavaBehaviour(this, "getCallbackForCheckedOutAspect")); + + this.policyComponent.bindClassBehaviour(VersionServicePolicies.OnCreateVersionPolicy.QNAME, + ContentModel.ASPECT_CHECKED_OUT, + new JavaBehaviour(this, "onCreateVersion")); + } + + /** + * Callback behaviour retrieval for the 'onCreateVersion' aspect. + * + * @return Returns {@link DoNothingCopyBehaviourCallback} always + */ + public void onCreateVersion(QName classRef, NodeRef versionableNode, Map versionProperties, PolicyScope nodeDetails) + { + nodeDetails.getAspects().remove(ContentModel.ASPECT_CHECKED_OUT); + } + + /** + * Callback behaviour retrieval for the 'checkedOut' aspect. + * + * @return Returns {@link DoNothingCopyBehaviourCallback} always + */ + public CopyBehaviourCallback getCallbackForCheckedOutAspect(QName classRef, CopyDetails copyDetails) + { + return DoNothingCopyBehaviourCallback.getInstance(); + } +}