From a7f2dec355ae5c0906139b408cce304e588c0470 Mon Sep 17 00:00:00 2001 From: Roxana Lucanu Date: Tue, 26 Nov 2019 21:57:35 +0200 Subject: [PATCH 1/2] RM-7060 Reapply search aspect when filing/moving --- .../RecordsManagementSearchBehaviour.java | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java index 9ba27e2447..d7963c18c3 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/model/behaviour/RecordsManagementSearchBehaviour.java @@ -49,9 +49,12 @@ 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.vital.VitalRecordDefinition; import org.alfresco.module.org_alfresco_module_rm.vital.VitalRecordService; +import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.policy.Behaviour.NotificationFrequency; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; +import org.alfresco.repo.policy.annotation.Behaviour; +import org.alfresco.repo.policy.annotation.BehaviourKind; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.security.authentication.AuthenticationUtil.RunAsWork; import org.alfresco.repo.transaction.TransactionalResourceHelper; @@ -73,7 +76,8 @@ import org.apache.commons.logging.LogFactory; * @author Roy Wetherall * @since 1.0 */ -public class RecordsManagementSearchBehaviour implements RecordsManagementModel +public class RecordsManagementSearchBehaviour implements RecordsManagementModel, + NodeServicePolicies.OnMoveNodePolicy { /** logger */ private static Log logger = LogFactory.getLog(RecordsManagementSearchBehaviour.class); @@ -172,6 +176,9 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel private JavaBehaviour jbEventExecutionUpdate = new JavaBehaviour(this, "eventExecutionUpdate", NotificationFrequency.TRANSACTION_COMMIT); private JavaBehaviour jbEventExecutionDelete = new JavaBehaviour(this, "eventExecutionDelete", NotificationFrequency.TRANSACTION_COMMIT); + /** on move record or record folder behavior */ + private JavaBehaviour jbMoveNode = new JavaBehaviour(this, "onMoveNode", NotificationFrequency.TRANSACTION_COMMIT); + /** Array of behaviours related to disposition schedule artifacts */ private JavaBehaviour[] jbDispositionBehaviours = { @@ -243,6 +250,11 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel QName.createQName(NamespaceService.ALFRESCO_URI, "onUpdateProperties"), ASPECT_VITAL_RECORD_DEFINITION, new JavaBehaviour(this, "vitalRecordDefintionUpdateProperties", NotificationFrequency.TRANSACTION_COMMIT)); + + this.policyComponent.bindClassBehaviour( + QName.createQName(NamespaceService.ALFRESCO_URI, "onMoveNode"), + ASPECT_FILE_PLAN_COMPONENT, + jbMoveNode); } /** @@ -907,4 +919,37 @@ public class RecordsManagementSearchBehaviour implements RecordsManagementModel return results; } + + /** + * Record and record folder move behavior + * + * @see org.alfresco.repo.node.NodeServicePolicies.OnMoveNodePolicy#onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef, org.alfresco.service.cmr.repository.ChildAssociationRef) + */ + @Override + @Behaviour + ( + kind = BehaviourKind.CLASS, + notificationFrequency = NotificationFrequency.TRANSACTION_COMMIT + ) + public void onMoveNode(ChildAssociationRef oldChildAssocRef, ChildAssociationRef newChildAssocRef) + { + // check the parent has actually changed + if (!oldChildAssocRef.getParentRef().equals(newChildAssocRef.getParentRef())) + { + final NodeRef recordOrFolder = newChildAssocRef.getChildRef(); + final boolean isRecordOrFolder = recordService.isRecord(recordOrFolder) || recordFolderService.isRecordFolder(recordOrFolder); + AuthenticationUtil.runAsSystem(new AuthenticationUtil.RunAsWork() + { + @Override + public Void doWork() + { + if (nodeService.exists(recordOrFolder) && isRecordOrFolder) + { + applySearchAspect(recordOrFolder); + } + return null; + } + }); + } + } } From f138d314366719a87b07eb846d5509dd1607879a Mon Sep 17 00:00:00 2001 From: Roxana Lucanu Date: Wed, 27 Nov 2019 11:28:32 +0200 Subject: [PATCH 2/2] RM-7060 Fix integration tests --- .../test/integration/record/MoveRecordTest.java | 2 +- .../test/integration/recordfolder/MoveRecordFolderTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveRecordTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveRecordTest.java index 727af89284..6df3aaaea1 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveRecordTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/record/MoveRecordTest.java @@ -120,7 +120,7 @@ public class MoveRecordTest extends BaseRMTestCase assertNull(dispositionService.getNextDispositionAction(record)); // check the search aspect properties - assertFalse(nodeService.hasAspect(record, ASPECT_RM_SEARCH)); + assertTrue(nodeService.hasAspect(record, ASPECT_RM_SEARCH)); } }); diff --git a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/recordfolder/MoveRecordFolderTest.java b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/recordfolder/MoveRecordFolderTest.java index e8b26622ea..81f5d08633 100644 --- a/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/recordfolder/MoveRecordFolderTest.java +++ b/rm-community/rm-community-repo/test/java/org/alfresco/module/org_alfresco_module_rm/test/integration/recordfolder/MoveRecordFolderTest.java @@ -218,7 +218,7 @@ public class MoveRecordFolderTest extends BaseRMTestCase assertNull(dispositionService.getNextDispositionAction(recordFolder)); // check the search aspect properties - assertFalse(nodeService.hasAspect(recordFolder, ASPECT_RM_SEARCH)); + assertTrue(nodeService.hasAspect(recordFolder, ASPECT_RM_SEARCH)); } }); }