Merge RM-5180 from 2.5 into master

This commit is contained in:
Ana Bozianu
2017-05-29 13:10:48 +03:00
3 changed files with 124 additions and 1 deletions

View File

@@ -51,6 +51,8 @@ public interface RecordsManagementPolicies
QName ON_REMOVE_REFERENCE = QName.createQName(NamespaceService.ALFRESCO_URI, "onRemoveReference");
QName BEFORE_RECORD_DECLARATION = QName.createQName(NamespaceService.ALFRESCO_URI, "beforeRecordDeclaration");
QName ON_RECORD_DECLARATION = QName.createQName(NamespaceService.ALFRESCO_URI, "onRecordDeclaration");
QName BEFORE_RECORD_REJECTION = QName.createQName(NamespaceService.ALFRESCO_URI, "beforeRecordRejection");
QName ON_RECORD_REJECTION = QName.createQName(NamespaceService.ALFRESCO_URI, "onRecordRejection");
/** Before records management action execution */
interface BeforeRMActionExecution extends ClassPolicy
@@ -146,4 +148,22 @@ public interface RecordsManagementPolicies
{
void onRecordDeclaration(NodeRef nodeRef);
}
/**
* Before record rejection
* @since 2.5
*/
interface BeforeRecordRejection extends ClassPolicy
{
void beforeRecordRejection(NodeRef nodeRef);
}
/**
* On record rejection
* @since 2.5
*/
interface OnRecordRejection extends ClassPolicy
{
void onRecordRejection(NodeRef nodeRef);
}
}

View File

@@ -51,8 +51,10 @@ import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.model.ContentModel;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeFileRecord;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeRecordDeclaration;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.BeforeRecordRejection;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnFileRecord;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnRecordDeclaration;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies.OnRecordRejection;
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
@@ -265,6 +267,8 @@ public class RecordServiceImpl extends BaseBehaviourBean
private ClassPolicyDelegate<OnFileRecord> onFileRecord;
private ClassPolicyDelegate<BeforeRecordDeclaration> beforeRecordDeclarationDelegate;
private ClassPolicyDelegate<OnRecordDeclaration> onRecordDeclarationDelegate;
private ClassPolicyDelegate<BeforeRecordRejection> beforeRecordRejectionDelegate;
private ClassPolicyDelegate<OnRecordRejection> onRecordRejectionDelegate;
/**
* @param identifierService identifier service
@@ -420,6 +424,8 @@ public class RecordServiceImpl extends BaseBehaviourBean
onFileRecord = policyComponent.registerClassPolicy(OnFileRecord.class);
beforeRecordDeclarationDelegate = policyComponent.registerClassPolicy(BeforeRecordDeclaration.class);
onRecordDeclarationDelegate = policyComponent.registerClassPolicy(OnRecordDeclaration.class);
beforeRecordRejectionDelegate = policyComponent.registerClassPolicy(BeforeRecordRejection.class);
onRecordRejectionDelegate = policyComponent.registerClassPolicy(OnRecordRejection.class);
}
/**
@@ -1341,6 +1347,9 @@ public class RecordServiceImpl extends BaseBehaviourBean
// Save the id of the currently logged in user
final String userId = AuthenticationUtil.getFullyAuthenticatedUser();
// invoke policy
invokeBeforeRecordRejection(nodeRef);
// do the work of rejecting the record as the system user
AuthenticationUtil.runAsSystem(new RunAsWork<Void>()
{
@@ -1457,6 +1466,9 @@ public class RecordServiceImpl extends BaseBehaviourBean
}
}
});
// invoke policy
invokeOnRecordRejection(nodeRef);
}
/**
@@ -1853,4 +1865,32 @@ public class RecordServiceImpl extends BaseBehaviourBean
OnRecordDeclaration policy = onRecordDeclarationDelegate.get(qnames);
policy.onRecordDeclaration(nodeRef);
}
/**
* Invoke invokeBeforeRecordRejection policy
*
* @param nodeRef node reference
*/
protected void invokeBeforeRecordRejection(NodeRef nodeRef)
{
// get qnames to invoke against
Set<QName> qnames = PoliciesUtil.getTypeAndAspectQNames(nodeService, nodeRef);
// execute policy for node type and aspects
BeforeRecordRejection policy = beforeRecordRejectionDelegate.get(qnames);
policy.beforeRecordRejection(nodeRef);
}
/**
* Invoke invokeOnRecordRejection policy
*
* @param nodeRef node reference
*/
protected void invokeOnRecordRejection(NodeRef nodeRef)
{
// get qnames to invoke against
Set<QName> qnames = PoliciesUtil.getTypeAndAspectQNames(nodeService, nodeRef);
// execute policy for node type and aspects
OnRecordRejection policy = onRecordRejectionDelegate.get(qnames);
policy.onRecordRejection(nodeRef);
}
}