in mantis-runtime/src/main/java/io/mantisrx/runtime/parameter/ParameterUtils.java [307:358]
public static <T> Map<String, Object> checkThenCreateState(
Map<String, ParameterDefinition<?>> parameterDefinitions,
Map<String, Parameter> parameters) throws IllegalArgumentException {
Map<String, Object> parameterState = new HashMap<>();
// check all required parameters are present
for (ParameterDefinition<?> definition : parameterDefinitions.values()) {
if (definition.isRequired()) {
// check if required is present in parameters
// and there is not a default value
if (!parameters.containsKey(definition.getName()) &&
definition.getDefaultValue() == null) {
throw new IllegalArgumentException("Missing required parameter: " + definition.getName() + ", check job parameter definitions.");
}
}
// if default value, check validation
if (definition.getDefaultValue() != null) {
validationCheck(definition.getValidator().getValidator(), definition.getDefaultValue(),
"[default value] " + definition.getName());
// add default value
parameterState.put(definition.getName(), definition.getDefaultValue());
}
}
// run all validators
for (Parameter parameter : parameters.values()) {
String name = parameter.getName();
Object value;
ParameterDefinition<?> definition;
definition = parameterDefinitions.get(name);
if (definition == null) {
if (name.equals("MANTIS_WORKER_JVM_OPTS") || name.startsWith(MANTIS_WORKER_JVM_OPTS_STAGE_PREFIX)) {
log.warn("Ignoring invalid parameter definitions with name: {}, will skip parameter", name);
continue;
} else if (name.startsWith("mantis.") || name.startsWith("MANTIS")) {
log.info("mantis runtime parameter {} used, looking up definition >>>", name);
definition = systemParams.get(name);
} else {
log.warn("No parameter definition for parameter with name: {}, will skip parameter", name);
continue;
}
}
Func1 validator = definition.getValidator().getValidator();
value = definition.getDecoder().decode(parameter.getValue());
validationCheck(validator, value, name);
parameterState.put(name, value);
}
return parameterState;
}