mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
Merge 'feature/RM-7035_AddPoliciesForHolds' into feature/RM-7034_AddPoliciesForHeldContent
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -6,6 +6,7 @@
|
|||||||
.project
|
.project
|
||||||
.settings
|
.settings
|
||||||
.history
|
.history
|
||||||
|
*.bak
|
||||||
*.eml
|
*.eml
|
||||||
*.iml
|
*.iml
|
||||||
*.log*
|
*.log*
|
||||||
@@ -16,6 +17,8 @@ build.local.properties
|
|||||||
dist
|
dist
|
||||||
explodedDeps
|
explodedDeps
|
||||||
local.properties
|
local.properties
|
||||||
|
rebel.xml
|
||||||
|
rebel-remote.xml
|
||||||
target
|
target
|
||||||
test-output
|
test-output
|
||||||
|
|
||||||
|
@@ -170,3 +170,10 @@ docker-compose up
|
|||||||
> Be aware of the fact that the Share images can not be started independently from Repo
|
> Be aware of the fact that the Share images can not be started independently from Repo
|
||||||
|
|
||||||
e.g. In order to start an instance of rm-enterprise-repo and rm-enterprise-share, the above command must be run in rm-enterprise-share after the images have been built.
|
e.g. In order to start an instance of rm-enterprise-repo and rm-enterprise-share, the above command must be run in rm-enterprise-share after the images have been built.
|
||||||
|
|
||||||
|
## Start the Docker images with jRebel in remote server mode
|
||||||
|
|
||||||
|
If you have a license for jRebel then this can be used from the rm-community-share or rm-enterprise-share directories with:
|
||||||
|
```
|
||||||
|
docker-compose -f docker-compose.yml -f jrebel-docker-compose.yml --project-name agsdev up --build --force-recreate
|
||||||
|
```
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
package org.alfresco.module.org_alfresco_module_rm.hold;
|
package org.alfresco.module.org_alfresco_module_rm.hold;
|
||||||
|
|
||||||
import static org.alfresco.model.ContentModel.ASPECT_LOCKABLE;
|
import static org.alfresco.model.ContentModel.ASPECT_LOCKABLE;
|
||||||
|
import static org.alfresco.model.ContentModel.PROP_NAME;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -265,7 +266,6 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
transactionalResourceHelper.getSet("frozen").add(frozenNode);
|
transactionalResourceHelper.getSet("frozen").add(frozenNode);
|
||||||
removeFreezeAspect(frozenNode, 1);
|
removeFreezeAspect(frozenNode, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -583,10 +583,14 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
}
|
}
|
||||||
|
|
||||||
invokeBeforeDeleteHold(hold);
|
invokeBeforeDeleteHold(hold);
|
||||||
|
|
||||||
|
String holdName = (String) nodeService.getProperty(hold, PROP_NAME);
|
||||||
|
Set<QName> classQNames = getTypeAndApsects(hold);
|
||||||
|
|
||||||
// delete the hold node
|
// delete the hold node
|
||||||
nodeService.deleteNode(hold);
|
nodeService.deleteNode(hold);
|
||||||
|
|
||||||
//invokeOnDeleteHold(hold);
|
invokeOnDeleteHold(holdName, classQNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -924,12 +928,15 @@ public class HoldServiceImpl extends ServiceBaseImpl
|
|||||||
/**
|
/**
|
||||||
* Invoke onDeleteHold policy
|
* Invoke onDeleteHold policy
|
||||||
*
|
*
|
||||||
* @param nodeRef node reference
|
* @param holdName name of the hold
|
||||||
|
* @param classQNames hold types and aspects
|
||||||
*/
|
*/
|
||||||
protected void invokeOnDeleteHold(NodeRef nodeRef)
|
protected void invokeOnDeleteHold(String holdName, Set<QName> classQNames)
|
||||||
{
|
{
|
||||||
// execute policy for node type and aspects
|
// execute policy for node type and aspects
|
||||||
OnDeleteHoldPolicy policy = onDeleteHoldPolicyDelegate.get(getTypeAndApsects(nodeRef));
|
OnDeleteHoldPolicy policy = onDeleteHoldPolicyDelegate.get(classQNames);
|
||||||
policy.onDeleteHold(nodeRef);
|
policy.onDeleteHold(holdName);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -83,9 +83,9 @@ public interface HoldServicePolicies
|
|||||||
/**
|
/**
|
||||||
* Called when a hold is deleted.
|
* Called when a hold is deleted.
|
||||||
*
|
*
|
||||||
* @param hold node reference
|
* @param holdname name of the deleted hold
|
||||||
*/
|
*/
|
||||||
void onDeleteHold(NodeRef hold);
|
void onDeleteHold(String holdname);
|
||||||
}
|
}
|
||||||
|
|
||||||
interface BeforeAddToHoldPolicy extends ClassPolicy
|
interface BeforeAddToHoldPolicy extends ClassPolicy
|
||||||
|
@@ -39,9 +39,7 @@ 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;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.BeforeCreateHoldPolicy;
|
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.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.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;
|
||||||
@@ -150,38 +148,43 @@ public class CreateHoldTest extends BaseRMTestCase implements BeforeCreateHoldPo
|
|||||||
|
|
||||||
public void testPolicyNotificationForCreateHold() throws Exception
|
public void testPolicyNotificationForCreateHold() throws Exception
|
||||||
{
|
{
|
||||||
doTestInTransaction(new Test<Void>()
|
doBehaviourDrivenTest(new BehaviourDrivenTest()
|
||||||
{
|
{
|
||||||
private NodeRef hold;
|
BehaviourDefinition<ClassBehaviourBinding> beforeCreateHoldBehaviour;
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> onCreateHoldBehaviour;
|
||||||
|
|
||||||
@Override
|
public void given()
|
||||||
public Void run()
|
|
||||||
{
|
{
|
||||||
BehaviourDefinition<ClassBehaviourBinding> beforeCreateHoldBehaviour = policyComponent.bindClassBehaviour(
|
beforeCreateHoldBehaviour = policyComponent.bindClassBehaviour(HoldServicePolicies.BeforeCreateHoldPolicy.BEFORE_CREATE_HOLD,
|
||||||
HoldServicePolicies.BeforeCreateHoldPolicy.BEFORE_CREATE_HOLD, RecordsManagementModel.TYPE_HOLD_CONTAINER,
|
RecordsManagementModel.TYPE_HOLD_CONTAINER,
|
||||||
new JavaBehaviour(CreateHoldTest.this, "beforeCreateHold", NotificationFrequency.EVERY_EVENT));
|
new JavaBehaviour(CreateHoldTest.this, "beforeCreateHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
BehaviourDefinition<ClassBehaviourBinding> onCreateHoldBehaviour = policyComponent.bindClassBehaviour(
|
onCreateHoldBehaviour = policyComponent.bindClassBehaviour(HoldServicePolicies.OnCreateHoldPolicy.ON_CREATE_HOLD,
|
||||||
HoldServicePolicies.OnCreateHoldPolicy.ON_CREATE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
RecordsManagementModel.TYPE_HOLD,
|
||||||
new JavaBehaviour(CreateHoldTest.this, "onCreateHold", NotificationFrequency.EVERY_EVENT));
|
new JavaBehaviour(CreateHoldTest.this, "onCreateHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
assertFalse(beforeCreateHoldFlag);
|
assertFalse(beforeCreateHoldFlag);
|
||||||
assertFalse(onCreateHoldFlag);
|
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());
|
public void when()
|
||||||
|
{
|
||||||
|
// Create a hold
|
||||||
|
NodeRef hold = holdService.createHold(filePlan, generate(), generate(), generate());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void then()
|
||||||
|
{
|
||||||
|
assertTrue(beforeCreateHoldFlag);
|
||||||
|
assertTrue(onCreateHoldFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void after()
|
||||||
|
{
|
||||||
|
policyComponent.removeClassDefinition(beforeCreateHoldBehaviour);
|
||||||
|
policyComponent.removeClassDefinition(onCreateHoldBehaviour);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -27,13 +27,11 @@
|
|||||||
|
|
||||||
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 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.BeforeDeleteHoldPolicy;
|
||||||
import org.alfresco.module.org_alfresco_module_rm.hold.HoldServicePolicies.OnDeleteHoldPolicy;
|
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.model.RecordsManagementModel;
|
||||||
@@ -251,39 +249,47 @@ public class DeleteHoldTest extends BaseRMTestCase implements BeforeDeleteHoldPo
|
|||||||
|
|
||||||
public void testPolicyNotificationForDeleteHold() throws Exception
|
public void testPolicyNotificationForDeleteHold() throws Exception
|
||||||
{
|
{
|
||||||
doTestInTransaction(new Test<Void>()
|
doBehaviourDrivenTest(new BehaviourDrivenTest()
|
||||||
{
|
{
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> beforeDeleteHoldBehaviour;
|
||||||
|
BehaviourDefinition<ClassBehaviourBinding> onDeleteHoldBehaviour;
|
||||||
|
NodeRef hold;
|
||||||
|
|
||||||
@Override
|
public void given()
|
||||||
public Void run()
|
|
||||||
{
|
{
|
||||||
BehaviourDefinition<ClassBehaviourBinding> beforeDeleteHoldBehaviour = policyComponent.bindClassBehaviour(
|
beforeDeleteHoldBehaviour = policyComponent.bindClassBehaviour(BeforeDeleteHoldPolicy.BEFORE_DELETE_HOLD,
|
||||||
HoldServicePolicies.BeforeDeleteHoldPolicy.BEFORE_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
RecordsManagementModel.TYPE_HOLD,
|
||||||
new JavaBehaviour(DeleteHoldTest.this, "beforeDeleteHold", NotificationFrequency.EVERY_EVENT));
|
new JavaBehaviour(DeleteHoldTest.this, "beforeDeleteHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
BehaviourDefinition<ClassBehaviourBinding> onDeleteHoldBehaviour = policyComponent.bindClassBehaviour(
|
onDeleteHoldBehaviour = policyComponent.bindClassBehaviour(OnDeleteHoldPolicy.ON_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
||||||
HoldServicePolicies.OnDeleteHoldPolicy.ON_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD,
|
|
||||||
new JavaBehaviour(DeleteHoldTest.this, "onDeleteHold", NotificationFrequency.EVERY_EVENT));
|
new JavaBehaviour(DeleteHoldTest.this, "onDeleteHold", NotificationFrequency.EVERY_EVENT));
|
||||||
|
|
||||||
NodeRef hold = holdService.createHold(filePlan, generate(), generate(), generate());
|
// Create a hold
|
||||||
|
hold = holdService.createHold(filePlan, generate(), generate(), generate());
|
||||||
|
|
||||||
assertFalse(beforeDeleteHoldFlag);
|
assertFalse(beforeDeleteHoldFlag);
|
||||||
assertFalse(onDeleteHoldFlag);
|
assertFalse(beforeDeleteHoldFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void when()
|
||||||
|
{
|
||||||
// Delete the hold
|
// Delete the hold
|
||||||
holdService.deleteHold(hold);
|
holdService.deleteHold(hold);
|
||||||
|
|
||||||
assertTrue(beforeDeleteHoldFlag);
|
|
||||||
assertTrue(onDeleteHoldFlag);
|
|
||||||
|
|
||||||
//clean up
|
|
||||||
policyComponent.removeClassDefinition(beforeDeleteHoldBehaviour);
|
|
||||||
policyComponent.removeClassDefinition(onDeleteHoldBehaviour);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}, getAdminUserName());
|
public void then()
|
||||||
|
{
|
||||||
|
assertTrue(beforeDeleteHoldFlag);
|
||||||
|
assertTrue(onDeleteHoldFlag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void after()
|
||||||
|
{
|
||||||
|
policyComponent.removeClassDefinition(beforeDeleteHoldBehaviour);
|
||||||
|
policyComponent.removeClassDefinition(onDeleteHoldBehaviour);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -294,7 +300,7 @@ public class DeleteHoldTest extends BaseRMTestCase implements BeforeDeleteHoldPo
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeleteHold(NodeRef hold)
|
public void onDeleteHold(String holdName)
|
||||||
{
|
{
|
||||||
onDeleteHoldFlag = true;
|
onDeleteHoldFlag = true;
|
||||||
}
|
}
|
||||||
|
@@ -314,7 +314,7 @@ public class HoldServiceImplUnitTest extends BaseUnitTest
|
|||||||
{
|
{
|
||||||
// mocks for policies
|
// mocks for policies
|
||||||
doNothing().when(holdService).invokeBeforeDeleteHold(any());
|
doNothing().when(holdService).invokeBeforeDeleteHold(any());
|
||||||
doNothing().when(holdService).invokeOnDeleteHold(any());
|
doNothing().when(holdService).invokeOnDeleteHold(any(), any());
|
||||||
|
|
||||||
// delete hold
|
// delete hold
|
||||||
holdService.deleteHold(hold);
|
holdService.deleteHold(hold);
|
||||||
|
Reference in New Issue
Block a user