From b2b936b28f779cfed2ceaec335f314082fcae4b5 Mon Sep 17 00:00:00 2001 From: Ana Bozianu Date: Wed, 31 May 2017 16:55:56 +0300 Subject: [PATCH 1/2] RM-5244 - make sure the incomplete node tagger is run after the record aspect is added (workaround) --- .../org_alfresco_module_rm/rm-service-context.xml | 1 + .../record/RecordServiceImpl.java | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml index 6682d0a617..c2fd343d4b 100644 --- a/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml +++ b/rm-community/rm-community-repo/config/alfresco/module/org_alfresco_module_rm/rm-service-context.xml @@ -1075,6 +1075,7 @@ + diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index 65d4582634..92b6e66744 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -80,6 +80,7 @@ import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionModel import org.alfresco.module.org_alfresco_module_rm.version.RecordableVersionService; import org.alfresco.repo.content.ContentServicePolicies; import org.alfresco.repo.node.NodeServicePolicies; +import org.alfresco.repo.node.integrity.IncompleteNodeTagger; import org.alfresco.repo.policy.ClassPolicyDelegate; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.policy.Behaviour.NotificationFrequency; @@ -270,6 +271,8 @@ public class RecordServiceImpl extends BaseBehaviourBean private ClassPolicyDelegate beforeRecordRejectionDelegate; private ClassPolicyDelegate onRecordRejectionDelegate; + private IncompleteNodeTagger incompleteNodeTagger; + /** * @param identifierService identifier service */ @@ -414,6 +417,11 @@ public class RecordServiceImpl extends BaseBehaviourBean this.recordableVersionService = recordableVersionService; } + public void setIncompleteNodeTagger(IncompleteNodeTagger incompleteNodeTagger) + { + this.incompleteNodeTagger = incompleteNodeTagger; + } + /** * Init method */ @@ -448,6 +456,8 @@ public class RecordServiceImpl extends BaseBehaviourBean if (nodeService.exists(nodeRef) && nodeService.hasAspect(nodeRef, ASPECT_RECORD)) { generateRecordIdentifier(nodeService, identifierService, nodeRef); + // RM-5244 - workaround to make sure the incomplete aspect is removed + incompleteNodeTagger.beforeCommit(false); } return null; } @@ -471,6 +481,8 @@ public class RecordServiceImpl extends BaseBehaviourBean if (ContentData.hasContent(contentData) && contentData.getSize() > 0) { appendIdentifierToName(nodeService, nodeRef); + // RM-5244 - workaround to make sure the incomplete aspect is removed + incompleteNodeTagger.beforeCommit(false); } } } @@ -1835,6 +1847,8 @@ public class RecordServiceImpl extends BaseBehaviourBean if (nodeService.exists(nodeRef) && !nodeService.hasAspect(nodeRef, ContentModel.ASPECT_HIDDEN) && !nodeService.hasAspect(nodeRef, ContentModel.ASPECT_LOCKABLE)) { generateRecordIdentifier(nodeService, identifierService, nodeRef); + // RM-5244 - workaround to make sure the incomplete aspect is removed + incompleteNodeTagger.beforeCommit(false); } } From e886317bf5d3601dd437bc68fe3651de9d24e400 Mon Sep 17 00:00:00 2001 From: Ana Bozianu Date: Wed, 31 May 2017 17:10:43 +0300 Subject: [PATCH 2/2] RM-5244 - added extra check for efficiency --- .../record/RecordServiceImpl.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java index 92b6e66744..85f3a01d5e 100644 --- a/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java +++ b/rm-community/rm-community-repo/source/java/org/alfresco/module/org_alfresco_module_rm/record/RecordServiceImpl.java @@ -456,8 +456,7 @@ public class RecordServiceImpl extends BaseBehaviourBean if (nodeService.exists(nodeRef) && nodeService.hasAspect(nodeRef, ASPECT_RECORD)) { generateRecordIdentifier(nodeService, identifierService, nodeRef); - // RM-5244 - workaround to make sure the incomplete aspect is removed - incompleteNodeTagger.beforeCommit(false); + reevaluateIncompleteTag(nodeRef); } return null; } @@ -481,8 +480,7 @@ public class RecordServiceImpl extends BaseBehaviourBean if (ContentData.hasContent(contentData) && contentData.getSize() > 0) { appendIdentifierToName(nodeService, nodeRef); - // RM-5244 - workaround to make sure the incomplete aspect is removed - incompleteNodeTagger.beforeCommit(false); + reevaluateIncompleteTag(nodeRef); } } } @@ -1847,8 +1845,7 @@ public class RecordServiceImpl extends BaseBehaviourBean if (nodeService.exists(nodeRef) && !nodeService.hasAspect(nodeRef, ContentModel.ASPECT_HIDDEN) && !nodeService.hasAspect(nodeRef, ContentModel.ASPECT_LOCKABLE)) { generateRecordIdentifier(nodeService, identifierService, nodeRef); - // RM-5244 - workaround to make sure the incomplete aspect is removed - incompleteNodeTagger.beforeCommit(false); + reevaluateIncompleteTag(nodeRef); } } @@ -1907,4 +1904,22 @@ public class RecordServiceImpl extends BaseBehaviourBean OnRecordRejection policy = onRecordRejectionDelegate.get(qnames); policy.onRecordRejection(nodeRef); } + + /** + * RM-5244 - workaround to make sure the incomplete aspect is removed + * + * @param nodeRef the node to reevaluate for + */ + private void reevaluateIncompleteTag(NodeRef nodeRef) + { + /* + * Check if the node has the aspect because the reevaluation is expensive. + * If the node doesn't have the aspect it means IncompleteNodeTagger didn't load before TransactionBehaviourQueue + * and we don't need to reevaluate. + */ + if(nodeService.hasAspect(nodeRef, ContentModel.ASPECT_INCOMPLETE)) + { + incompleteNodeTagger.beforeCommit(false); + } + } }