diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml index b1f7894a64..9571419fd0 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-version-context.xml @@ -34,5 +34,9 @@ + + + + \ No newline at end of file diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/model/VersionableAspect.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/model/VersionableAspect.java new file mode 100644 index 0000000000..b8d6a51e30 --- /dev/null +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/version/model/VersionableAspect.java @@ -0,0 +1,56 @@ +/* + * Copyright (C) 2005-2014 Alfresco Software Limited. + * + * This file is part of Alfresco + * + * Alfresco is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Alfresco is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with Alfresco. If not, see . + */ +package org.alfresco.module.org_alfresco_module_rm.version.model; + +import org.alfresco.module.org_alfresco_module_rm.model.BaseBehaviourBean; +import org.alfresco.repo.copy.CopyBehaviourCallback; +import org.alfresco.repo.copy.CopyDetails; +import org.alfresco.repo.copy.DoNothingCopyBehaviourCallback; +import org.alfresco.repo.policy.annotation.Behaviour; +import org.alfresco.repo.policy.annotation.BehaviourBean; +import org.alfresco.repo.policy.annotation.BehaviourKind; +import org.alfresco.service.namespace.QName; + +/** + * rmv:versionsable aspect behaviour bean implementation + * + * @author Roy Wetherall + * @since 2.3 + */ +@BehaviourBean +( + defaultType="rmv:versionable" +) +public class VersionableAspect extends BaseBehaviourBean +{ + /** + * Copy callback. + * + * Cutoff aspect should not be copied. + */ + @Behaviour + ( + kind = BehaviourKind.CLASS, + policy = "alf:getCopyCallback" + ) + public CopyBehaviourCallback getCopyCallback(QName classRef, CopyDetails copyDetails) + { + return new DoNothingCopyBehaviourCallback(); + } +} diff --git a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/RecordableVersionsBaseTest.java b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/RecordableVersionsBaseTest.java index a7dd545955..f7a42b1960 100644 --- a/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/RecordableVersionsBaseTest.java +++ b/rm-server/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/version/RecordableVersionsBaseTest.java @@ -171,15 +171,17 @@ public abstract class RecordableVersionsBaseTest extends BaseRMTestCase implemen Map cloneFrozenProperties = new HashMap(frozenProperties); for (Map.Entry entry : beforeProperies.entrySet()) { - if (frozenProperties.containsKey(entry.getKey())) + QName beforePropertyName = entry.getKey(); + if (frozenProperties.containsKey(beforePropertyName)) { - Serializable frozenValue = frozenProperties.get(entry.getKey()); - assertEquals("Frozen property " + entry.getKey().getLocalName() + " value is incorrect.", entry.getValue(), frozenValue); - cloneFrozenProperties.remove(entry.getKey()); + Serializable frozenValue = frozenProperties.get(beforePropertyName); + assertEquals("Frozen property " + beforePropertyName.getLocalName() + " value is incorrect.", entry.getValue(), frozenValue); + cloneFrozenProperties.remove(beforePropertyName); } - else + else if (!PROP_FILE_PLAN.equals(beforePropertyName) && + !PROP_RECORDABLE_VERSION_POLICY.equals(beforePropertyName)) { - fail("Property missing from frozen state .. " + entry.getKey()); + fail("Property missing from frozen state .. " + beforePropertyName); } } @@ -197,6 +199,7 @@ public abstract class RecordableVersionsBaseTest extends BaseRMTestCase implemen // compare origional and frozen aspects Set frozenAspects = nodeService.getAspects(frozen); cloneBeforeAspects.removeAll(frozenAspects); + cloneBeforeAspects.remove(RecordableVersionModel.ASPECT_VERSIONABLE); if (!cloneBeforeAspects.isEmpty()) { fail("Aspects not present in frozen state. " + cloneBeforeAspects.toString());