mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-7035: Add policies for holds
- implementation for policies - integration tests
This commit is contained in:
@@ -1534,6 +1534,7 @@
|
|||||||
<property name="permissionService" ref="PermissionService"/>
|
<property name="permissionService" ref="PermissionService"/>
|
||||||
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService" />
|
<property name="recordsManagementAuditService" ref="RecordsManagementAuditService" />
|
||||||
<property name="capabilityService" ref="CapabilityService"/>
|
<property name="capabilityService" ref="CapabilityService"/>
|
||||||
|
<property name="policyComponent" ref="policyComponent"/>
|
||||||
</bean>
|
</bean>
|
||||||
|
|
||||||
<bean id="HoldService"
|
<bean id="HoldService"
|
||||||
|
@@ -41,6 +41,7 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.model.ContentModel;
|
import org.alfresco.model.ContentModel;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementPolicies;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
|
import org.alfresco.module.org_alfresco_module_rm.audit.RecordsManagementAuditService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent;
|
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.CapabilityService;
|
||||||
@@ -49,10 +50,13 @@ import org.alfresco.module.org_alfresco_module_rm.fileplan.FilePlanService;
|
|||||||
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
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.record.RecordService;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
import org.alfresco.module.org_alfresco_module_rm.recordfolder.RecordFolderService;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.util.PoliciesUtil;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
import org.alfresco.module.org_alfresco_module_rm.util.ServiceBaseImpl;
|
||||||
import org.alfresco.repo.node.NodeServicePolicies;
|
import org.alfresco.repo.node.NodeServicePolicies;
|
||||||
import org.alfresco.repo.node.integrity.IntegrityException;
|
import org.alfresco.repo.node.integrity.IntegrityException;
|
||||||
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||||
|
import org.alfresco.repo.policy.ClassPolicyDelegate;
|
||||||
|
import org.alfresco.repo.policy.PolicyComponent;
|
||||||
import org.alfresco.repo.policy.annotation.Behaviour;
|
import org.alfresco.repo.policy.annotation.Behaviour;
|
||||||
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
import org.alfresco.repo.policy.annotation.BehaviourBean;
|
||||||
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
import org.alfresco.repo.policy.annotation.BehaviourKind;
|
||||||
@@ -113,6 +117,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
/** Capability service */
|
/** Capability service */
|
||||||
private CapabilityService capabilityService;
|
private CapabilityService capabilityService;
|
||||||
|
|
||||||
|
/** Policy component */
|
||||||
|
private PolicyComponent policyComponent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the file plan service
|
* Set the file plan service
|
||||||
*
|
*
|
||||||
@@ -169,6 +176,34 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
this.capabilityService = capabilityService;
|
this.capabilityService = capabilityService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the policy component instance
|
||||||
|
*
|
||||||
|
* @return The policy component instance
|
||||||
|
*/
|
||||||
|
private PolicyComponent getPolicyComponent()
|
||||||
|
{
|
||||||
|
return this.policyComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the policy component instance
|
||||||
|
*
|
||||||
|
* @param policyComponent The policy component instance
|
||||||
|
*/
|
||||||
|
public void setPolicyComponent(PolicyComponent policyComponent)
|
||||||
|
{
|
||||||
|
this.policyComponent = policyComponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Policy delegates
|
||||||
|
*/
|
||||||
|
private ClassPolicyDelegate<HoldServicePolicies.BeforeCreateHoldPolicy> beforeCreateHoldPolicyDelegate;
|
||||||
|
private ClassPolicyDelegate<HoldServicePolicies.OnCreateHoldPolicy> onCreateHoldPolicyDelegate;
|
||||||
|
private ClassPolicyDelegate<HoldServicePolicies.BeforeDeleteHoldPolicy> beforeDeleteHoldPolicyDelegate;
|
||||||
|
private ClassPolicyDelegate<HoldServicePolicies.OnDeleteHoldPolicy> onDeleteHoldPolicyDelegate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialise hold service
|
* Initialise hold service
|
||||||
*/
|
*/
|
||||||
@@ -184,6 +219,12 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Register the policies
|
||||||
|
beforeCreateHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(HoldServicePolicies.BeforeCreateHoldPolicy.class);
|
||||||
|
onCreateHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(HoldServicePolicies.OnCreateHoldPolicy.class);
|
||||||
|
beforeDeleteHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(HoldServicePolicies.BeforeDeleteHoldPolicy.class);
|
||||||
|
onDeleteHoldPolicyDelegate = getPolicyComponent().registerClassPolicy(HoldServicePolicies.OnDeleteHoldPolicy.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -417,6 +458,9 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
// get the root hold container
|
// get the root hold container
|
||||||
NodeRef holdContainer = filePlanService.getHoldContainer(filePlan);
|
NodeRef holdContainer = filePlanService.getHoldContainer(filePlan);
|
||||||
|
|
||||||
|
//invoke before create hold
|
||||||
|
beforeCreateHoldPolicyDelegate.get(getTypeAndApsects(holdContainer)).beforeCreateHold(name, reason);
|
||||||
|
|
||||||
// create map of properties
|
// create map of properties
|
||||||
Map<QName, Serializable> properties = new HashMap<>(3);
|
Map<QName, Serializable> properties = new HashMap<>(3);
|
||||||
properties.put(ContentModel.PROP_NAME, name);
|
properties.put(ContentModel.PROP_NAME, name);
|
||||||
@@ -432,7 +476,12 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
// create hold
|
// create hold
|
||||||
ChildAssociationRef childAssocRef = nodeService.createNode(holdContainer, ContentModel.ASSOC_CONTAINS, assocName, TYPE_HOLD, properties);
|
ChildAssociationRef childAssocRef = nodeService.createNode(holdContainer, ContentModel.ASSOC_CONTAINS, assocName, TYPE_HOLD, properties);
|
||||||
|
|
||||||
return childAssocRef.getChildRef();
|
NodeRef holdNodeRef = childAssocRef.getChildRef();
|
||||||
|
|
||||||
|
//invoke after hold is created
|
||||||
|
onCreateHoldPolicyDelegate.get(getTypeAndApsects(holdNodeRef)).onCreateHold(holdNodeRef);
|
||||||
|
|
||||||
|
return holdNodeRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -520,8 +569,12 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
throw new AlfrescoRuntimeException("Can't delete hold, because filing permissions for the following items are needed: " + sb.toString());
|
throw new AlfrescoRuntimeException("Can't delete hold, because filing permissions for the following items are needed: " + sb.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
beforeDeleteHoldPolicyDelegate.get(getTypeAndApsects(hold)).beforeDeleteHold(hold);
|
||||||
|
|
||||||
// delete the hold node
|
// delete the hold node
|
||||||
nodeService.deleteNode(hold);
|
nodeService.deleteNode(hold);
|
||||||
|
|
||||||
|
onDeleteHoldPolicyDelegate.get(getTypeAndApsects(hold)).onDeleteHold(hold);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -27,6 +27,8 @@
|
|||||||
|
|
||||||
package org.alfresco.module.org_alfresco_module_rm.hold;
|
package org.alfresco.module.org_alfresco_module_rm.hold;
|
||||||
|
|
||||||
|
import org.alfresco.repo.policy.ClassPolicy;
|
||||||
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
import org.alfresco.service.namespace.NamespaceService;
|
import org.alfresco.service.namespace.NamespaceService;
|
||||||
import org.alfresco.service.namespace.QName;
|
import org.alfresco.service.namespace.QName;
|
||||||
|
|
||||||
@@ -37,6 +39,55 @@ import org.alfresco.service.namespace.QName;
|
|||||||
* @since 3.3
|
* @since 3.3
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public interface HoldServicePolicies {
|
public interface HoldServicePolicies
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Policy names
|
||||||
|
*/
|
||||||
|
public static final QName BEFORE_CREATE_HOLD = QName.createQName(NamespaceService.ALFRESCO_URI, "beforeCreateHold");
|
||||||
|
public static final QName ON_CREATE_HOLD = QName.createQName(NamespaceService.ALFRESCO_URI, "onCreateHold");
|
||||||
|
public static final QName BEFORE_DELETE_HOLD = QName.createQName(NamespaceService.ALFRESCO_URI, "beforeDeleteHold");
|
||||||
|
public static final QName ON_DELETE_HOLD = QName.createQName(NamespaceService.ALFRESCO_URI, "onDeleteHold");
|
||||||
|
|
||||||
|
interface BeforeCreateHoldPolicy extends ClassPolicy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called before a hold is created.
|
||||||
|
*
|
||||||
|
* @param name name of the hold to be created
|
||||||
|
* @param reason reason for the hold to be created
|
||||||
|
*/
|
||||||
|
void beforeCreateHold(String name, String reason);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OnCreateHoldPolicy extends ClassPolicy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called when a hold is created.
|
||||||
|
*
|
||||||
|
* @param hold node reference
|
||||||
|
*/
|
||||||
|
void onCreateHold(NodeRef hold);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface BeforeDeleteHoldPolicy extends ClassPolicy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called before a hold is created.
|
||||||
|
*
|
||||||
|
* @param hold node reference
|
||||||
|
*/
|
||||||
|
void beforeDeleteHold(NodeRef hold);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface OnDeleteHoldPolicy extends ClassPolicy
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called when a hold is deleted.
|
||||||
|
*
|
||||||
|
* @param hold node reference
|
||||||
|
*/
|
||||||
|
void onDeleteHold(NodeRef hold);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -37,8 +37,18 @@ import java.util.HashSet;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
|
import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies;
|
||||||
|
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.OnCreateHoldPolicy;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnDeleteHoldPolicy;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.role.Role;
|
import org.alfresco.module.org_alfresco_module_rm.role.Role;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
||||||
|
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||||
|
import org.alfresco.repo.policy.BehaviourDefinition;
|
||||||
|
import org.alfresco.repo.policy.ClassBehaviourBinding;
|
||||||
|
import org.alfresco.repo.policy.JavaBehaviour;
|
||||||
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
|
||||||
@@ -48,11 +58,14 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
* @author Tuna Aksoy
|
* @author Tuna Aksoy
|
||||||
* @since 2.3
|
* @since 2.3
|
||||||
*/
|
*/
|
||||||
public class CreateHoldTest extends BaseRMTestCase
|
public class CreateHoldTest extends BaseRMTestCase implements BeforeCreateHoldPolicy, OnCreateHoldPolicy
|
||||||
{
|
{
|
||||||
// Test user
|
// Test user
|
||||||
private String testUser = null;
|
private String testUser = null;
|
||||||
|
|
||||||
|
private boolean beforeCreateHoldFlag = false;
|
||||||
|
private boolean onCreateHoldFlag = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase#isUserTest()
|
* @see org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase#isUserTest()
|
||||||
*/
|
*/
|
||||||
@@ -134,4 +147,53 @@ public class CreateHoldTest extends BaseRMTestCase
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPolicyNotificationForCreateHold() throws Exception
|
||||||
|
{
|
||||||
|
doTestInTransaction(new Test<Void>()
|
||||||
|
{
|
||||||
|
private NodeRef hold;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void run()
|
||||||
|
{
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> beforeCreateHoldBehaviour = policyComponent.bindClassBehaviour(
|
||||||
|
HoldServicePolicies.BEFORE_CREATE_HOLD, RecordsManagementModel.TYPE_HOLD_CONTAINER,
|
||||||
|
new JavaBehaviour(CreateHoldTest.this, "beforeCreateHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> onCreateHoldBehaviour = policyComponent.bindClassBehaviour(
|
||||||
|
HoldServicePolicies.ON_CREATE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
||||||
|
new JavaBehaviour(CreateHoldTest.this, "onCreateHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
|
assertFalse(beforeCreateHoldFlag);
|
||||||
|
assertFalse(onCreateHoldFlag);
|
||||||
|
|
||||||
|
// Create a hold
|
||||||
|
hold = holdService.createHold(filePlan, generate(), generate(), generate());
|
||||||
|
|
||||||
|
assertTrue(beforeCreateHoldFlag);
|
||||||
|
assertTrue(onCreateHoldFlag);
|
||||||
|
|
||||||
|
//clean up
|
||||||
|
policyComponent.removeClassDefinition(beforeCreateHoldBehaviour);
|
||||||
|
policyComponent.removeClassDefinition(onCreateHoldBehaviour);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}, getAdminUserName());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeCreateHold(String name, String reason)
|
||||||
|
{
|
||||||
|
beforeCreateHoldFlag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreateHold(NodeRef hold)
|
||||||
|
{
|
||||||
|
onCreateHoldFlag = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -27,10 +27,21 @@
|
|||||||
|
|
||||||
package org.alfresco.module.org_alfresco_module_rm.test.integration.hold;
|
package org.alfresco.module.org_alfresco_module_rm.test.integration.hold;
|
||||||
|
|
||||||
|
import static org.alfresco.repo.security.authentication.AuthenticationUtil.getAdminUserName;
|
||||||
|
import static org.alfresco.util.GUID.generate;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.BeforeDeleteHoldPolicy;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnDeleteHoldPolicy;
|
||||||
|
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
import org.alfresco.module.org_alfresco_module_rm.test.util.BaseRMTestCase;
|
||||||
|
import org.alfresco.repo.policy.Behaviour.NotificationFrequency;
|
||||||
|
import org.alfresco.repo.policy.BehaviourDefinition;
|
||||||
|
import org.alfresco.repo.policy.ClassBehaviourBinding;
|
||||||
|
import org.alfresco.repo.policy.JavaBehaviour;
|
||||||
import org.alfresco.service.cmr.repository.NodeRef;
|
import org.alfresco.service.cmr.repository.NodeRef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,7 +50,7 @@ import org.alfresco.service.cmr.repository.NodeRef;
|
|||||||
* @author Roy Wetherall
|
* @author Roy Wetherall
|
||||||
* @since 2.2
|
* @since 2.2
|
||||||
*/
|
*/
|
||||||
public class DeleteHoldTest extends BaseRMTestCase
|
public class DeleteHoldTest extends BaseRMTestCase implements BeforeDeleteHoldPolicy, OnDeleteHoldPolicy
|
||||||
{
|
{
|
||||||
/** Constants for the holds */
|
/** Constants for the holds */
|
||||||
protected static final String HOLD1_NAME = "hold one";
|
protected static final String HOLD1_NAME = "hold one";
|
||||||
@@ -49,6 +60,9 @@ public class DeleteHoldTest extends BaseRMTestCase
|
|||||||
protected static final String HOLD1_DESC = "but I'll not describe them here!";
|
protected static final String HOLD1_DESC = "but I'll not describe them here!";
|
||||||
protected static final String HOLD2_DESC = "no then! that's just not on!";
|
protected static final String HOLD2_DESC = "no then! that's just not on!";
|
||||||
|
|
||||||
|
private boolean beforeDeleteHoldFlag = false;
|
||||||
|
private boolean onDeleteHoldFlag = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean isRecordTest()
|
protected boolean isRecordTest()
|
||||||
{
|
{
|
||||||
@@ -234,4 +248,54 @@ public class DeleteHoldTest extends BaseRMTestCase
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testPolicyNotificationForDeleteHold() throws Exception
|
||||||
|
{
|
||||||
|
doTestInTransaction(new Test<Void>()
|
||||||
|
{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void run()
|
||||||
|
{
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> beforeDeleteHoldBehaviour = policyComponent.bindClassBehaviour(
|
||||||
|
HoldServicePolicies.BEFORE_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
||||||
|
new JavaBehaviour(DeleteHoldTest.this, "beforeDeleteHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> onDeleteHoldBehaviour = policyComponent.bindClassBehaviour(
|
||||||
|
HoldServicePolicies.ON_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
||||||
|
new JavaBehaviour(DeleteHoldTest.this, "onDeleteHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
|
NodeRef hold = holdService.createHold(filePlan, generate(), generate(), generate());
|
||||||
|
|
||||||
|
assertFalse(beforeDeleteHoldFlag);
|
||||||
|
assertFalse(onDeleteHoldFlag);
|
||||||
|
|
||||||
|
// Delete the hold
|
||||||
|
holdService.deleteHold(hold);
|
||||||
|
|
||||||
|
assertTrue(beforeDeleteHoldFlag);
|
||||||
|
assertTrue(onDeleteHoldFlag);
|
||||||
|
|
||||||
|
//clean up
|
||||||
|
policyComponent.removeClassDefinition(beforeDeleteHoldBehaviour);
|
||||||
|
policyComponent.removeClassDefinition(onDeleteHoldBehaviour);
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}, getAdminUserName());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeDeleteHold(NodeRef hold)
|
||||||
|
{
|
||||||
|
beforeDeleteHoldFlag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDeleteHold(NodeRef hold)
|
||||||
|
{
|
||||||
|
onDeleteHoldFlag = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user