public static Map checkThenCreateState()

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;
    }