From 976b95a20edee14543a62eb68738a1f5dbe0199d Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 10 Feb 2015 15:54:29 +0000 Subject: [PATCH] RM-1867 (Reject rule works incorrect if set up in File Plan) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.3@96754 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-action-context.xml | 1 - .../rm-audit-context.xml | 2 + .../FilePlanNamePathDataExtractor.java | 42 ++++++++++++++----- .../FilePlanNodeRefPathDataExtractor.java | 35 +++++++++++++--- 4 files changed, 64 insertions(+), 16 deletions(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml index 482e854cff..0ee64536e6 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-action-context.xml @@ -731,7 +731,6 @@ - diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml index 8978b39c73..6f3d2bf7c9 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-audit-context.xml @@ -16,12 +16,14 @@ + + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java index c38636c8ff..be516fc41d 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNamePathDataExtractor.java @@ -27,6 +27,7 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.repo.audit.extractor.AbstractDataExtractor; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.cmr.rule.RuleService; /** * An extractor that extracts the cm:name path from the RM root down to @@ -42,6 +43,7 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor { private NodeService nodeService; private FilePlanService filePlanService; + private RuleService ruleService; /** * Used to check that the node in the context is a fileplan component @@ -59,6 +61,14 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor this.filePlanService = filePlanService; } + /** + * @param ruleService the ruleService to set + */ + public void setRuleService(RuleService ruleService) + { + this.ruleService = ruleService; + } + /** * @return Returns true if the data is a NodeRef and it represents * a fileplan component @@ -77,19 +87,31 @@ public final class FilePlanNamePathDataExtractor extends AbstractDataExtractor */ public Serializable extractData(Serializable value) { - NodeRef nodeRef = (NodeRef) value; + String extractedData = null; - // Get path from the RM root - List nodeRefPath = filePlanService.getNodeRefPath(nodeRef); - - StringBuilder sb = new StringBuilder(128); - for (NodeRef pathNodeRef : nodeRefPath) + ruleService.disableRules(); + try { - String name = (String)nodeService.getProperty(pathNodeRef, ContentModel.PROP_NAME); - sb.append("/").append(name); + NodeRef nodeRef = (NodeRef) value; + + // Get path from the RM root + List nodeRefPath = filePlanService.getNodeRefPath(nodeRef); + + StringBuilder sb = new StringBuilder(128); + for (NodeRef pathNodeRef : nodeRefPath) + { + String name = (String)nodeService.getProperty(pathNodeRef, ContentModel.PROP_NAME); + sb.append("/").append(name); + } + + // Done + extractedData = sb.toString(); + } + finally + { + ruleService.enableRules(); } - // Done - return sb.toString(); + return extractedData; } } diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java index 5841ab3943..c00c143e5e 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/audit/extractor/FilePlanNodeRefPathDataExtractor.java @@ -26,6 +26,7 @@ import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.repo.audit.extractor.AbstractDataExtractor; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeService; +import org.alfresco.service.cmr.rule.RuleService; /** * An extractor that extracts the NodeRef path from the RM root down to @@ -41,6 +42,7 @@ public final class FilePlanNodeRefPathDataExtractor extends AbstractDataExtracto { private NodeService nodeService; private FilePlanService filePlanService; + private RuleService ruleService; /** * Used to check that the node in the context is a fileplan component @@ -50,11 +52,22 @@ public final class FilePlanNodeRefPathDataExtractor extends AbstractDataExtracto this.nodeService = nodeService; } + /** + * @param filePlanService file plan service + */ public void setFilePlanService(FilePlanService filePlanService) { this.filePlanService = filePlanService; } + /** + * @param ruleService the ruleService to set + */ + public void setRuleService(RuleService ruleService) + { + this.ruleService = ruleService; + } + /** * @return Returns true if the data is a NodeRef and it represents * a fileplan component @@ -70,12 +83,24 @@ public final class FilePlanNodeRefPathDataExtractor extends AbstractDataExtracto public Serializable extractData(Serializable value) { - NodeRef nodeRef = (NodeRef) value; + Serializable extractedData = null; - // Get path from the RM root - List nodeRefPath = filePlanService.getNodeRefPath(nodeRef); + ruleService.disableRules(); + try + { + NodeRef nodeRef = (NodeRef) value; - // Done - return (Serializable) nodeRefPath; + // Get path from the RM root + List nodeRefPath = filePlanService.getNodeRefPath(nodeRef); + + // Done + extractedData = (Serializable) nodeRefPath; + } + finally + { + ruleService.enableRules(); + } + + return extractedData; } }