RM-1633: Recorded Version Configuration Action

* Prevent copy of recorded version configuration, therefore it is not stored on frozen record state.



git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@84187 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Roy Wetherall
2014-09-16 05:41:12 +00:00
parent 7cd0105e7b
commit e367b35b1f
3 changed files with 69 additions and 6 deletions

View File

@@ -34,5 +34,9 @@
<property name="beanName" value="versionNodeService" /> <property name="beanName" value="versionNodeService" />
<property name="extendingBeanName" value="rm.versionNodeService" /> <property name="extendingBeanName" value="rm.versionNodeService" />
</bean> </bean>
<!-- rmv:versionable aspect behaviour bean -->
<bean id="rm.versionableAspect" class="org.alfresco.module.org_alfresco_module_rm.version.model.VersionableAspect" parent="rm.baseBehaviour">
</bean>
</beans> </beans>

View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
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();
}
}

View File

@@ -171,15 +171,17 @@ public abstract class RecordableVersionsBaseTest extends BaseRMTestCase implemen
Map<QName, Serializable> cloneFrozenProperties = new HashMap<QName, Serializable>(frozenProperties); Map<QName, Serializable> cloneFrozenProperties = new HashMap<QName, Serializable>(frozenProperties);
for (Map.Entry<QName, Serializable> entry : beforeProperies.entrySet()) for (Map.Entry<QName, Serializable> entry : beforeProperies.entrySet())
{ {
if (frozenProperties.containsKey(entry.getKey())) QName beforePropertyName = entry.getKey();
if (frozenProperties.containsKey(beforePropertyName))
{ {
Serializable frozenValue = frozenProperties.get(entry.getKey()); Serializable frozenValue = frozenProperties.get(beforePropertyName);
assertEquals("Frozen property " + entry.getKey().getLocalName() + " value is incorrect.", entry.getValue(), frozenValue); assertEquals("Frozen property " + beforePropertyName.getLocalName() + " value is incorrect.", entry.getValue(), frozenValue);
cloneFrozenProperties.remove(entry.getKey()); 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 // compare origional and frozen aspects
Set<QName> frozenAspects = nodeService.getAspects(frozen); Set<QName> frozenAspects = nodeService.getAspects(frozen);
cloneBeforeAspects.removeAll(frozenAspects); cloneBeforeAspects.removeAll(frozenAspects);
cloneBeforeAspects.remove(RecordableVersionModel.ASPECT_VERSIONABLE);
if (!cloneBeforeAspects.isEmpty()) if (!cloneBeforeAspects.isEmpty())
{ {
fail("Aspects not present in frozen state. " + cloneBeforeAspects.toString()); fail("Aspects not present in frozen state. " + cloneBeforeAspects.toString());