private Map<String, Parameter> getParameters(Object attribute) { if (attribute == null) { return Collections.emptyMap(); } Map<String, Parameter> parameters = new HashMap<>(); String[] parameterDeclarations = ((String) attribute).split(";"); for (String parameterDeclaration : parameterDeclarations) { Scanner scanner = new Scanner(parameterDeclaration); String typeName = scanner.next(); String name = scanner.next(); Parameter.Type type = Parameter.Type.valueOf(typeName.toUpperCase()); Parameter parameter = new Parameter(name, type, null); parameters.put(name, parameter); } return parameters; }
private Map<String, Object> getRuleParameters(ExecutableRule executableRule) throws RuleException { Map<String, Object> ruleParameters = new HashMap<>(); Map<String, Parameter> parameters = executableRule.getParameters(); for (Map.Entry<String, Parameter> entry : parameters.entrySet()) { String parameterName = entry.getKey(); Parameter parameter = entry.getValue(); Object parameterValue; String parameterValueAsString = this.ruleParameters.get(parameterName); if (parameterValueAsString != null) { try { parameterValue = parameter.getType().parse(parameterValueAsString); } catch (RuleException e) { throw new RuleException("Cannot determine value for parameter " + parameterName + "' of rule '" + executableRule + "'."); } } else { parameterValue = parameter.getDefaultValue(); } if (parameterValue == null) { throw new RuleException("No value or default value defined for required parameter '" + parameterName + "' of rule '" + executableRule + "'."); } ruleParameters.put(parameterName, parameterValue); } return ruleParameters; }
Parameter parameter = new Parameter(nameVal, type, defaultVal); parameters.put(nameVal, parameter);
Parameter parameter = new Parameter(parameterType.getName(), type, defaultValue != null ? type.parse(defaultValue) : null); parameters.put(parameterType.getName(), parameter);