@Override
    public boolean validate(List<WorkflowContext> contextList) throws HyscaleException {
        if (validators.isEmpty()) {
            return true;
        }
        boolean isInvalid = false;
        boolean isFailed = false;
        StringBuilder exceptionMsgBuilder = new StringBuilder().append(": \n");
        for (Validator<WorkflowContext> validator : validators) {
            logger.debug("Running validator: {}", validator.getClass());
            for (WorkflowContext context : contextList) {
                try {
                    isInvalid = validator.validate(context) ? isInvalid : true;
                } catch (HyscaleException e) {
                    isFailed = true;
                    exceptionMsgBuilder.append(e.getMessage()).append(ToolConstants.NEW_LINE);
                }
            }
            ValidatorMessageHandler.handleErrMsg(exceptionMsgBuilder, isInvalid, isFailed);
            if (isInvalid) {
                return !isInvalid;
            }
        }
        return !isInvalid;
    }
For each context calls all the available validators
workflow-controller/controller-service/src/main/java/io/hyscale/controller/validator/impl/InputSpecPostValidator.java