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
This commit is contained in:
Tuna Aksoy
2014-11-07 13:47:01 +00:00
parent c945c07530
commit 2346f23d03
2 changed files with 43 additions and 1 deletions

View File

@@ -1046,6 +1046,7 @@
<property name="recordFolderService" ref="RecordFolderService" />
<property name="filePlanRoleService" ref="FilePlanRoleService" />
<property name="permissionService" ref="permissionService" />
<property name="versionService" ref="VersionService" />
</bean>
<bean id="recordMetadataAspectBootstrap" class="org.alfresco.module.org_alfresco_module_rm.record.RecordMetadataBootstrap" init-method="init" abstract="true">

View File

@@ -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<QName, Set<QName>> 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);
}
}
}
}