From 54ce637b2053c1e07fccf3cb30fed5e96c9e9670 Mon Sep 17 00:00:00 2001 From: Roy Wetherall Date: Tue, 8 Oct 2013 05:52:50 +0000 Subject: [PATCH] RM-1053: Error cause when Rule "Set property value" try change not enable for editing property * property value subsitution now available on setProperty action (in RM) * this means properties can be set based on other property values or date context * provides a (simple atm) means of defining a id generation scheme scoped by file plan context git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@56374 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../rm-action-context.xml | 1 + ...PropertySubActionExecuterAbstractBase.java | 2 +- .../action/impl/DelegateAction.java | 6 +++++ .../ParameterProcessorComponent.java | 22 ++++++------------- 4 files changed, 15 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 f19f7d319e..ea568b59d7 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 @@ -940,6 +940,7 @@ + diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/PropertySubActionExecuterAbstractBase.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/PropertySubActionExecuterAbstractBase.java index 9aa0ce5c86..16f40e2ada 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/PropertySubActionExecuterAbstractBase.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/PropertySubActionExecuterAbstractBase.java @@ -33,7 +33,7 @@ import org.alfresco.service.cmr.repository.NodeRef; public abstract class PropertySubActionExecuterAbstractBase extends AuditableActionExecuterAbstractBase { /** Parameter processor component */ - private ParameterProcessorComponent parameterProcessorComponent; + protected ParameterProcessorComponent parameterProcessorComponent; /** Indicates whether parameter substitutions are allowed */ protected boolean allowParameterSubstitutions = false; diff --git a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java index c5fd59857a..977c245160 100644 --- a/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java +++ b/rm-server/source/java/org/alfresco/module/org_alfresco_module_rm/action/impl/DelegateAction.java @@ -67,6 +67,12 @@ public class DelegateAction extends RMActionExecuterAbstractBase if (nodeService.exists(actionedUponNodeRef) == true && (checkFrozen == false || freezeService.isFrozen(actionedUponNodeRef) == false)) { + // do the property subs (if any exist) + if (allowParameterSubstitutions == true) + { + parameterProcessorComponent.process(action, delegateActionExecuter.getActionDefinition(), actionedUponNodeRef); + } + delegateActionExecuter.execute(action, actionedUponNodeRef); } } diff --git a/rm-server/source/java/org/alfresco/repo/action/parameter/ParameterProcessorComponent.java b/rm-server/source/java/org/alfresco/repo/action/parameter/ParameterProcessorComponent.java index d3798e3667..dff8451d11 100644 --- a/rm-server/source/java/org/alfresco/repo/action/parameter/ParameterProcessorComponent.java +++ b/rm-server/source/java/org/alfresco/repo/action/parameter/ParameterProcessorComponent.java @@ -25,10 +25,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import org.alfresco.error.AlfrescoRuntimeException; -import org.alfresco.service.cmr.action.ParameterDefinition; import org.alfresco.service.cmr.action.ParameterizedItem; import org.alfresco.service.cmr.action.ParameterizedItemDefinition; -import org.alfresco.service.cmr.dictionary.DataTypeDefinition; import org.alfresco.service.cmr.repository.NodeRef; /** @@ -66,20 +64,14 @@ public class ParameterProcessorComponent for (Map.Entry entry : ruleItem.getParameterValues().entrySet()) { String parameterName = entry.getKey(); - - // get the parameter definition - ParameterDefinition def = ruleItemDefinition.getParameterDefintion(parameterName); - if (def != null) + Object parameterValue = entry.getValue(); + + // only sub string property values + if (parameterValue != null && parameterValue instanceof String) { - if (DataTypeDefinition.TEXT.equals(def.getType()) == true) - { - // get the parameter value - String parameterValue = (String)entry.getValue(); - - // set the updated parameter value - ruleItem.setParameterValue(parameterName, process(parameterValue, actionedUponNodeRef)); - } - } + // set the updated parameter value + ruleItem.setParameterValue(parameterName, process((String)parameterValue, actionedUponNodeRef)); + } } }