From 89e010401ae262bb33690b6fcbde6687e1dacfa1 Mon Sep 17 00:00:00 2001 From: Tuna Aksoy Date: Tue, 8 Oct 2013 14:06:40 +0000 Subject: [PATCH] RM-1034 (Inbound Content Rule executes after creating a new reference) git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@56387 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-webscript-context.xml | 1 + .../script/CustomRefPost.java | 54 ++++++++++++------- 2 files changed, 37 insertions(+), 18 deletions(-) diff --git a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml index a9769bcd14..3f1ce339f8 100644 --- a/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml +++ b/rm-server/config/alfresco/module/org_alfresco_module_rm/rm-webscript-context.xml @@ -99,6 +99,7 @@ class="org.alfresco.module.org_alfresco_module_rm.script.CustomRefPost" parent="rmBaseWebscript"> + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/CustomRefPost.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/CustomRefPost.java index 98b5b6d2ac..690cbeeb3b 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/CustomRefPost.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/script/CustomRefPost.java @@ -26,21 +26,21 @@ import javax.servlet.http.HttpServletResponse; import org.alfresco.module.org_alfresco_module_rm.admin.RecordsManagementAdminService; import org.alfresco.service.cmr.repository.NodeRef; +import org.alfresco.service.cmr.rule.RuleService; +import org.alfresco.service.cmr.rule.RuleType; import org.alfresco.service.namespace.QName; +import org.json.JSONException; +import org.json.JSONObject; +import org.json.JSONTokener; import org.springframework.extensions.webscripts.Cache; import org.springframework.extensions.webscripts.Status; import org.springframework.extensions.webscripts.WebScriptException; import org.springframework.extensions.webscripts.WebScriptRequest; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.json.JSONException; -import org.json.JSONObject; -import org.json.JSONTokener; /** * Implementation for Java backed webscript to add RM custom reference instances * to a node. - * + * * @author Neil McErlean */ public class CustomRefPost extends AbstractRmWebScript @@ -48,15 +48,27 @@ public class CustomRefPost extends AbstractRmWebScript private static final String TO_NODE = "toNode"; private static final String REF_ID = "refId"; - @SuppressWarnings("unused") - private static Log logger = LogFactory.getLog(CustomRefPost.class); - + /** RM Admin Service */ private RecordsManagementAdminService rmAdminService; - + + /** Rule Service */ + private RuleService ruleService; + + /** + * @param rmAdminService RM Admin Service + */ public void setRecordsManagementAdminService(RecordsManagementAdminService rmAdminService) { - this.rmAdminService = rmAdminService; - } + this.rmAdminService = rmAdminService; + } + + /** + * @param ruleService Rule Service + */ + public void setRuleService(RuleService ruleService) + { + this.ruleService = ruleService; + } /* * @see org.alfresco.web.scripts.DeclarativeWebScript#executeImpl(org.alfresco.web.scripts.WebScriptRequest, org.alfresco.web.scripts.Status, org.alfresco.web.scripts.Cache) @@ -68,8 +80,10 @@ public class CustomRefPost extends AbstractRmWebScript Map ftlModel = null; try { + ruleService.disableRuleType(RuleType.INBOUND); + json = new JSONObject(new JSONTokener(req.getContent().getContent())); - + ftlModel = addCustomReferenceInstance(req, json); } catch (IOException iox) @@ -82,10 +96,14 @@ public class CustomRefPost extends AbstractRmWebScript throw new WebScriptException(Status.STATUS_BAD_REQUEST, "Could not parse JSON from req.", je); } - + finally + { + ruleService.enableRuleType(RuleType.INBOUND); + } + return ftlModel; } - + /** * Applies custom reference. */ @@ -94,7 +112,7 @@ public class CustomRefPost extends AbstractRmWebScript NodeRef fromNode = parseRequestForNodeRef(req); Map result = new HashMap(); - + String toNodeStg = json.getString(TO_NODE); NodeRef toNode = new NodeRef(toNodeStg); @@ -105,9 +123,9 @@ public class CustomRefPost extends AbstractRmWebScript throw new WebScriptException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Unable to find reference type: " + clientsRefId); } - + rmAdminService.addCustomReference(fromNode, toNode, qn); - + result.put("success", true); return result;