mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge branch 'master' of https://git.alfresco.com/records-management/records-management into feature/RM-7020_AllowUpdateOfPropertiesForSystemNamespaceURIRefactor
This commit is contained in:
@@ -47,10 +47,14 @@ import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.capability.RMPermissionModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.BeforeAddToHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.BeforeCreateHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.BeforeDeleteHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.BeforeRemoveFromHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnAddToHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnCreateHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnDeleteHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnRemoveFromHoldPolicy;
|
||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||
import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
|
||||
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||
@@ -206,6 +210,10 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
private ClassPolicyDelegate<OnCreateHoldPolicy> onCreateHoldPolicyDelegate;
|
||||
private ClassPolicyDelegate<BeforeDeleteHoldPolicy> beforeDeleteHoldPolicyDelegate;
|
||||
private ClassPolicyDelegate<OnDeleteHoldPolicy> onDeleteHoldPolicyDelegate;
|
||||
private ClassPolicyDelegate<BeforeAddToHoldPolicy> beforeAddToHoldPolicyDelegate;
|
||||
private ClassPolicyDelegate<OnAddToHoldPolicy> onAddToHoldPolicyDelegate;
|
||||
private ClassPolicyDelegate<BeforeRemoveFromHoldPolicy> beforeRemoveFromHoldPolicyDelegate;
|
||||
private ClassPolicyDelegate<OnRemoveFromHoldPolicy> onRemoveFromHoldPolicyDelegate;
|
||||
|
||||
/**
|
||||
* Initialise hold service
|
||||
@@ -228,6 +236,11 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
onCreateHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(OnCreateHoldPolicy.class);
|
||||
beforeDeleteHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(BeforeDeleteHoldPolicy.class);
|
||||
onDeleteHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(OnDeleteHoldPolicy.class);
|
||||
beforeAddToHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(BeforeAddToHoldPolicy.class);
|
||||
onAddToHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(OnAddToHoldPolicy.class);
|
||||
beforeRemoveFromHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(BeforeRemoveFromHoldPolicy.class);
|
||||
onRemoveFromHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(OnRemoveFromHoldPolicy.class);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -637,6 +650,8 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
// check that the node isn't already in the hold
|
||||
if (!getHeld(hold).contains(nodeRef))
|
||||
{
|
||||
// fire before add to hold policy
|
||||
invokeBeforeAddToHold(hold, nodeRef);
|
||||
// run as system to ensure we have all the appropriate permissions to perform the manipulations we require
|
||||
authenticationUtil.runAsSystem((RunAsWork<Void>) () -> {
|
||||
// gather freeze properties
|
||||
@@ -661,6 +676,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
records.forEach(record -> addFrozenAspect(record, props));
|
||||
}
|
||||
|
||||
// fire on add to hold policy
|
||||
invokeOnAddToHold(hold, nodeRef);
|
||||
|
||||
return null;
|
||||
});
|
||||
}
|
||||
@@ -797,6 +815,8 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
// run as system so we don't run into further permission issues
|
||||
// we already know we have to have the correct capability to get here
|
||||
authenticationUtil.runAsSystem((RunAsWork<Void>) () -> {
|
||||
// fire before remove from hold policy
|
||||
invokeBeforeRemoveFromHold(hold, nodeRef);
|
||||
// remove from hold
|
||||
//set in transaction cache in order not to trigger update policy when removing the child association
|
||||
transactionalResourceHelper.getSet("frozen").add(nodeRef);
|
||||
@@ -806,6 +826,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
// TODO add details of the hold that the node was removed from
|
||||
recordsManagementAuditService.auditEvent(nodeRef, AUDIT_REMOVE_FROM_HOLD);
|
||||
|
||||
// fire on remove from hold policy
|
||||
invokeOnRemoveFromHold(hold, nodeRef);
|
||||
|
||||
return null;
|
||||
|
||||
});
|
||||
@@ -916,4 +939,52 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke beforeAddToHold policy
|
||||
*
|
||||
* @param hold hold node reference
|
||||
* @param contentNodeRef content node reference
|
||||
*/
|
||||
protected void invokeBeforeAddToHold(NodeRef hold, NodeRef contentNodeRef)
|
||||
{
|
||||
BeforeAddToHoldPolicy policy = beforeAddToHoldPolicyDelegate.get(getTypeAndApsects(hold));
|
||||
policy.beforeAddToHold(hold, contentNodeRef);
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke onAddToHold policy
|
||||
*
|
||||
* @param hold hold node reference
|
||||
* @param contentNodeRef content node reference
|
||||
*/
|
||||
protected void invokeOnAddToHold(NodeRef hold, NodeRef contentNodeRef)
|
||||
{
|
||||
OnAddToHoldPolicy policy = onAddToHoldPolicyDelegate.get(getTypeAndApsects(hold));
|
||||
policy.onAddToHold(hold, contentNodeRef);
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke beforeRemoveFromHold policy
|
||||
*
|
||||
* @param hold hold node reference
|
||||
* @param contentNodeRef content node reference
|
||||
*/
|
||||
protected void invokeBeforeRemoveFromHold(NodeRef hold, NodeRef contentNodeRef)
|
||||
{
|
||||
BeforeRemoveFromHoldPolicy policy = beforeRemoveFromHoldPolicyDelegate.get(getTypeAndApsects(hold));
|
||||
policy.beforeRemoveFromHold(hold, contentNodeRef);
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke onRemoveFromHold policy
|
||||
*
|
||||
* @param hold hold node reference
|
||||
* @param contentNodeRef content node reference
|
||||
*/
|
||||
protected void invokeOnRemoveFromHold(NodeRef hold, NodeRef contentNodeRef)
|
||||
{
|
||||
OnRemoveFromHoldPolicy policy = onRemoveFromHoldPolicyDelegate.get(getTypeAndApsects(hold));
|
||||
policy.onRemoveFromHold(hold, contentNodeRef);
|
||||
|
||||
}
|
||||
}
|
||||
|
@@ -36,6 +36,7 @@ import org.alfresco.service.namespace.QName;
|
||||
* Hold Service Policies
|
||||
*
|
||||
* @author Ramona Popa
|
||||
* @author Roxana Lucanu
|
||||
* @since 3.3
|
||||
*/
|
||||
|
||||
@@ -86,4 +87,57 @@ public interface HoldServicePolicies
|
||||
*/
|
||||
void onDeleteHold(String holdname);
|
||||
}
|
||||
|
||||
interface BeforeAddToHoldPolicy extends ClassPolicy
|
||||
{
|
||||
QName QNAME = QName.createQName(NamespaceService.ALFRESCO_URI, "beforeAddToHold");
|
||||
|
||||
/**
|
||||
* Called before adding content to hold.
|
||||
*
|
||||
* @param hold the hold to be added into
|
||||
* @param contentNodeRef the item to be added to hold
|
||||
*/
|
||||
void beforeAddToHold(NodeRef hold, NodeRef contentNodeRef);
|
||||
}
|
||||
|
||||
interface OnAddToHoldPolicy extends ClassPolicy
|
||||
{
|
||||
QName QNAME = QName.createQName(NamespaceService.ALFRESCO_URI, "onAddToHold");
|
||||
|
||||
/**
|
||||
* Called when content is added to hold.
|
||||
*
|
||||
* @param hold the hold to be added into
|
||||
* @param contentNodeRef the item to be added to hold
|
||||
*/
|
||||
void onAddToHold(NodeRef hold, NodeRef contentNodeRef);
|
||||
}
|
||||
|
||||
interface BeforeRemoveFromHoldPolicy extends ClassPolicy
|
||||
{
|
||||
QName QNAME = QName.createQName(NamespaceService.ALFRESCO_URI, "beforeRemoveFromHold");
|
||||
|
||||
/**
|
||||
* Called before removing content from hold.
|
||||
*
|
||||
* @param hold the hold to be removed from
|
||||
* @param contentNodeRef the item to be removed from hold
|
||||
*/
|
||||
void beforeRemoveFromHold(NodeRef hold, NodeRef contentNodeRef);
|
||||
}
|
||||
|
||||
interface OnRemoveFromHoldPolicy extends ClassPolicy
|
||||
{
|
||||
QName QNAME = QName.createQName(NamespaceService.ALFRESCO_URI, "onRemoveFromHold");
|
||||
|
||||
/**
|
||||
* Called when removing content from hold.
|
||||
*
|
||||
* @param hold the hold to be removed from
|
||||
* @param contentNodeRef the item to be removed from hold
|
||||
*/
|
||||
void onRemoveFromHold(NodeRef hold, NodeRef contentNodeRef);
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user