From 80a702d0c9ed62b55e7af78ade625821fa27400e Mon Sep 17 00:00:00 2001 From: Tom Page Date: Fri, 18 Oct 2019 16:14:00 +0100 Subject: [PATCH 1/4] Add support for jRebel hot reloading. The java files in the repository can be hot reloaded when started from the share docker-file. --- .gitignore | 3 +++ README.md | 7 +++++++ 2 files changed, 10 insertions(+) diff --git a/.gitignore b/.gitignore index b9745c75ff..00f0a7cf70 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ .project .settings .history +*.bak *.eml *.iml *.log* @@ -16,6 +17,8 @@ build.local.properties dist explodedDeps local.properties +rebel.xml +rebel-remote.xml target test-output diff --git a/README.md b/README.md index 2ce5ab2ae7..75eb0f843d 100644 --- a/README.md +++ b/README.md @@ -170,3 +170,10 @@ docker-compose up > 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. + +## 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 +``` From 0893ae3f48735ea3ce1065afe433bdebe377e834 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Fri, 25 Oct 2019 11:35:02 +0300 Subject: [PATCH 2/4] move the actions property file in module-context.xml as the audit events that take the action name are loaded at bootstrap --- .../module/org_alfresco_module_rm/action-context.xml | 9 --------- .../module/org_alfresco_module_rm/module-context.xml | 1 + 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml index b471c996c0..477d319ef4 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/action-context.xml @@ -5,15 +5,6 @@ http://www.springframework.org/schema/beans/spring-beans.xsd"> - - - - - alfresco.module.org_alfresco_module_rm.messages.actions - - - - diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/module-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/module-context.xml index d999b109d7..4ccba8a2a0 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/module-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/module-context.xml @@ -64,6 +64,7 @@ alfresco.module.org_alfresco_module_rm.messages.admin-service alfresco.module.org_alfresco_module_rm.messages.records-management-service alfresco.module.org_alfresco_module_rm.messages.action-service + alfresco.module.org_alfresco_module_rm.messages.actions alfresco.module.org_alfresco_module_rm.messages.audit-service alfresco.module.org_alfresco_module_rm.messages.rm-events alfresco.module.org_alfresco_module_rm.messages.capability-service From 61b1375cdd94e22e179c1f5ffbe8b7bad8d4f170 Mon Sep 17 00:00:00 2001 From: Rodica Sutu Date: Fri, 25 Oct 2019 12:21:28 +0300 Subject: [PATCH 3/4] Update the version for org.apache.commons:commons-compress to 1.19 (fix the security vulnerability alert from github) --- pom.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4d26994883..a55c004395 100644 --- a/pom.xml +++ b/pom.xml @@ -592,6 +592,7 @@ quay.io 2.3.0 + 1.19 @@ -1120,7 +1121,7 @@ org.apache.commons commons-compress - 1.18 + ${apache-compress.version} org.alfresco.maven.plugin From fcd53d3143d9f3d6156564370efd81596d0b6329 Mon Sep 17 00:00:00 2001 From: Ramona Popa Date: Tue, 29 Oct 2019 16:02:40 +0200 Subject: [PATCH 4/4] RM-7035: Add policies for holds - fixed tests for deleteHold policies --- .../hold/HoldServiceImpl.java | 20 +++++--- .../hold/HoldServicePolicies.java | 4 +- .../test/integration/hold/CreateHoldTest.java | 49 ++++++++++--------- .../test/integration/hold/DeleteHoldTest.java | 48 ++++++++++-------- .../hold/HoldServiceImplUnitTest.java | 2 +- 5 files changed, 69 insertions(+), 54 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java index 403d9a1c26..15293083b3 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImpl.java @@ -28,6 +28,7 @@ package org.alfresco.module.org_alfresco_module_rm.hold; import static org.alfresco.model.ContentModel.ASPECT_LOCKABLE; +import static org.alfresco.model.ContentModel.PROP_NAME; import java.io.Serializable; import java.util.ArrayList; @@ -41,7 +42,6 @@ import java.util.Set; 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.audit.RecordsManagementAuditService; import org.alfresco.module.org_alfresco_module_rm.audit.event.AuditEvent; import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; @@ -253,7 +253,6 @@ public class HoldServiceImpl extends ServiceBaseImpl transactionalResourceHelper.getSet("frozen").add(frozenNode); removeFreezeAspect(frozenNode, 1); } - return null; } }; @@ -571,10 +570,14 @@ public class HoldServiceImpl extends ServiceBaseImpl } invokeBeforeDeleteHold(hold); + + String holdName = (String) nodeService.getProperty(hold, PROP_NAME); + Set classQNames = getTypeAndApsects(hold); + // delete the hold node nodeService.deleteNode(hold); - //invokeOnDeleteHold(hold); + invokeOnDeleteHold(holdName, classQNames); } /** @@ -902,12 +905,15 @@ public class HoldServiceImpl extends ServiceBaseImpl /** * 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 classQNames) { // execute policy for node type and aspects - OnDeleteHoldPolicy policy = onDeleteHoldPolicyDelegate.get(getTypeAndApsects(nodeRef)); - policy.onDeleteHold(nodeRef); + OnDeleteHoldPolicy policy = onDeleteHoldPolicyDelegate.get(classQNames); + policy.onDeleteHold(holdName); + } + } diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServicePolicies.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServicePolicies.java index 062af9fcc4..177419ae4b 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServicePolicies.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServicePolicies.java @@ -82,8 +82,8 @@ public interface HoldServicePolicies /** * 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); } } diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/CreateHoldTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/CreateHoldTest.java index 2814c075e4..e0821bbb40 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/CreateHoldTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/CreateHoldTest.java @@ -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.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.test.util.BaseRMTestCase; @@ -150,38 +148,43 @@ public class CreateHoldTest extends BaseRMTestCase implements BeforeCreateHoldPo public void testPolicyNotificationForCreateHold() throws Exception { - doTestInTransaction(new Test() + doBehaviourDrivenTest(new BehaviourDrivenTest() { - private NodeRef hold; + BehaviourDefinition beforeCreateHoldBehaviour; + BehaviourDefinition onCreateHoldBehaviour; - @Override - public Void run() + public void given() { - BehaviourDefinition beforeCreateHoldBehaviour = policyComponent.bindClassBehaviour( - HoldServicePolicies.BeforeCreateHoldPolicy.BEFORE_CREATE_HOLD, RecordsManagementModel.TYPE_HOLD_CONTAINER, + beforeCreateHoldBehaviour = policyComponent.bindClassBehaviour(HoldServicePolicies.BeforeCreateHoldPolicy.BEFORE_CREATE_HOLD, + RecordsManagementModel.TYPE_HOLD_CONTAINER, new JavaBehaviour(CreateHoldTest.this, "beforeCreateHold", NotificationFrequency.EVERY_EVENT)); - BehaviourDefinition onCreateHoldBehaviour = policyComponent.bindClassBehaviour( - HoldServicePolicies.OnCreateHoldPolicy.ON_CREATE_HOLD, RecordsManagementModel.TYPE_HOLD, + onCreateHoldBehaviour = policyComponent.bindClassBehaviour(HoldServicePolicies.OnCreateHoldPolicy.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()); + 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); + } + }); } diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/DeleteHoldTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/DeleteHoldTest.java index 7ed6345177..7fc62fa4cb 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/DeleteHoldTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/hold/DeleteHoldTest.java @@ -27,13 +27,11 @@ 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.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; @@ -251,39 +249,47 @@ public class DeleteHoldTest extends BaseRMTestCase implements BeforeDeleteHoldPo public void testPolicyNotificationForDeleteHold() throws Exception { - doTestInTransaction(new Test() + doBehaviourDrivenTest(new BehaviourDrivenTest() { + BehaviourDefinition beforeDeleteHoldBehaviour; + BehaviourDefinition onDeleteHoldBehaviour; + NodeRef hold; - @Override - public Void run() + public void given() { - BehaviourDefinition beforeDeleteHoldBehaviour = policyComponent.bindClassBehaviour( - HoldServicePolicies.BeforeDeleteHoldPolicy.BEFORE_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD, + beforeDeleteHoldBehaviour = policyComponent.bindClassBehaviour(BeforeDeleteHoldPolicy.BEFORE_DELETE_HOLD, + RecordsManagementModel.TYPE_HOLD, new JavaBehaviour(DeleteHoldTest.this, "beforeDeleteHold", NotificationFrequency.EVERY_EVENT)); - BehaviourDefinition onDeleteHoldBehaviour = policyComponent.bindClassBehaviour( - HoldServicePolicies.OnDeleteHoldPolicy.ON_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD, + onDeleteHoldBehaviour = policyComponent.bindClassBehaviour(OnDeleteHoldPolicy.ON_DELETE_HOLD, RecordsManagementModel.TYPE_HOLD, 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(onDeleteHoldFlag); + assertFalse(beforeDeleteHoldFlag); + } + public void when() + { // Delete the 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 - public void onDeleteHold(NodeRef hold) + public void onDeleteHold(String holdName) { onDeleteHoldFlag = true; } diff --git a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImplUnitTest.java b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImplUnitTest.java index 7326bd518a..15cf5f8bd1 100644 --- a/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImplUnitTest.java +++ b/rm-community/rm-community-repo/unit-test/java/org/alfresco/module/org_alfresco_module_rm/hold/HoldServiceImplUnitTest.java @@ -314,7 +314,7 @@ public class HoldServiceImplUnitTest extends BaseUnitTest { // mocks for policies doNothing().when(holdService).invokeBeforeDeleteHold(any()); - doNothing().when(holdService).invokeOnDeleteHold(any()); + doNothing().when(holdService).invokeOnDeleteHold(any(), any()); // delete hold holdService.deleteHold(hold);