diff --git a/core/citrus-base/src/main/java/org/citrusframework/actions/CreateVariablesAction.java b/core/citrus-base/src/main/java/org/citrusframework/actions/CreateVariablesAction.java index 2788d24009..e9fca5e0fa 100644 --- a/core/citrus-base/src/main/java/org/citrusframework/actions/CreateVariablesAction.java +++ b/core/citrus-base/src/main/java/org/citrusframework/actions/CreateVariablesAction.java @@ -35,7 +35,7 @@ public class CreateVariablesAction extends AbstractTestAction { /** New variables to set */ - private final Map variables; + private final Map variables; /** Logger */ private static final Logger logger = LoggerFactory.getLogger(CreateVariablesAction.class); @@ -51,18 +51,20 @@ private CreateVariablesAction(Builder builder) { @Override public void doExecute(TestContext context) { - for (Entry entry : variables.entrySet()) { + for (Entry entry : variables.entrySet()) { String key = entry.getKey(); - String value = entry.getValue(); + Object value = entry.getValue(); - if (value.startsWith("script:<")) { - String scriptEngine = value.substring("script:<".length(), value.indexOf('>')); - value = VariableUtils.getValueFromScript(scriptEngine, - context.replaceDynamicContentInString(value.substring(value.indexOf('>') + 1))); - } + if (value instanceof String stringValue) { + if (stringValue.startsWith("script:<")) { + String scriptEngine = stringValue.substring("script:<".length(), stringValue.indexOf('>')); + stringValue = VariableUtils.getValueFromScript(scriptEngine, + context.replaceDynamicContentInString(stringValue.substring(stringValue.indexOf('>') + 1))); + } - //check if value is variable or function (and resolve it if yes) - value = context.replaceDynamicContentInString(value); + //check if value is variable or function (and resolve it if yes) + value = context.replaceDynamicContentInString(stringValue); + } logger.info("Setting variable: " + key + " to value: " + value); @@ -74,7 +76,7 @@ public void doExecute(TestContext context) { * Gets the variables. * @return the variables */ - public Map getVariables() { + public Map getVariables() { return variables; } @@ -83,9 +85,9 @@ public Map getVariables() { */ public static final class Builder extends AbstractTestActionBuilder { - private final Map variables = new LinkedHashMap<>(); + private final Map variables = new LinkedHashMap<>(); - public static Builder createVariable(String variableName, String value) { + public static Builder createVariable(String variableName, Object value) { Builder builder = new Builder(); builder.variable(variableName, value); return builder; @@ -95,7 +97,7 @@ public static Builder createVariables() { return new Builder(); } - public Builder variable(String variableName, String value) { + public Builder variable(String variableName, Object value) { this.variables.put(variableName, value); return this; }