From 2346f23d03f76e0b46414423c7a63cab2106ec06 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Fri, 7 Nov 2014 13:47:01 +0000 Subject: [PATCH] RM-1693 (Error loading items in version history if recorded version was deleted in File Plan) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@90121 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-service-context.xml | 1 + .../record/RecordServiceImpl.java | 43 ++++++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index 2cadb9e1e3..29e21d22bd 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -1046,6 +1046,7 @@ + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index 82aebabdee..aebf1440f6 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -18,6 +18,10 @@ */ package org.alfresco.module.org_alfresco_module_rm.record; +import static org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionModel.PROP_VERSIONED_NODEREF; +import static org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionModel.PROP_VERSION_LABEL; +import static org.apache.commons.lang.StringUtils.isNotBlank; + import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; @@ -83,6 +87,8 @@ import org.alfresco.service.cmr.security.AccessPermission; import org.alfresco.service.cmr.security.AccessStatus; import org.alfresco.service.cmr.security.OwnableService; import org.alfresco.service.cmr.security.PermissionService; +import org.alfresco.service.cmr.version.Version; +import org.alfresco.service.cmr.version.VersionService; import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.RegexQNamePattern; @@ -108,7 +114,8 @@ public class RecordServiceImpl extends BaseBehaviourBean NodeServicePolicies.OnCreateChildAssociationPolicy, NodeServicePolicies.OnAddAspectPolicy, NodeServicePolicies.OnRemoveAspectPolicy, - NodeServicePolicies.OnUpdatePropertiesPolicy + NodeServicePolicies.OnUpdatePropertiesPolicy, + NodeServicePolicies.BeforeDeleteNodePolicy { /** Logger */ private static Log logger = LogFactory.getLog(RecordServiceImpl.class); @@ -199,6 +206,9 @@ public class RecordServiceImpl extends BaseBehaviourBean /** Permission service */ private PermissionService permissionService; + /** Version service */ + private VersionService versionService; + /** list of available record meta-data aspects and the file plan types the are applicable to */ private Map> recordMetaDataAspects; @@ -320,6 +330,14 @@ public class RecordServiceImpl extends BaseBehaviourBean this.permissionService = permissionService; } + /** + * @param versionService version service + */ + public void setVersionService(VersionService versionService) + { + this.versionService = versionService; + } + /** * Init method */ @@ -1477,4 +1495,27 @@ public class RecordServiceImpl extends BaseBehaviourBean nodeService.addChild(folder, nodeRef, ContentModel.ASSOC_CONTAINS, QName.createQName(NamespaceService.CONTENT_MODEL_1_0_URI, nodeService.getProperty(nodeRef, ContentModel.PROP_NAME).toString())); } } + + /** + * @see org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy#beforeDeleteNode(org.alfresco.service.cmr.repository.NodeRef) + */ + @Override + @Behaviour + ( + kind = BehaviourKind.CLASS, + type = "rma:record" + ) + public void beforeDeleteNode(NodeRef nodeRef) + { + NodeRef versionedNodeRef = (NodeRef) nodeService.getProperty(nodeRef, PROP_VERSIONED_NODEREF); + if (versionedNodeRef != null) + { + String versionLabel = (String) nodeService.getProperty(nodeRef, PROP_VERSION_LABEL); + if (isNotBlank(versionLabel)) + { + Version version = versionService.getVersionHistory(versionedNodeRef).getVersion(versionLabel); + versionService.deleteVersion(versionedNodeRef, version); + } + } + } }