public ValidationResult validate()

in src/main/java/org/apache/nifi/components/PropertyDescriptor.java [154:203]


    public ValidationResult validate(final String input, final ValidationContext context) {
        ValidationResult lastResult = Validator.INVALID.validate(this.name, input, context);

        if (allowableValues != null && !allowableValues.isEmpty()) {
            final ConstrainedSetValidator csValidator = new ConstrainedSetValidator(allowableValues);
            final ValidationResult csResult = csValidator.validate(this.name, input, context);

            if (csResult.isValid()) {
                lastResult = csResult;
            } else {
                return csResult;
            }
        }

        final ResourceDefinition resourceDefinition = getResourceDefinition();
        if (resourceDefinition != null) {
            final Validator validator = new ResourceDefinitionValidator(resourceDefinition, this.expressionLanguageScope);
            final ValidationResult result = validator.validate(this.name, input, context);
            if (!result.isValid()) {
                return result;
            }

            lastResult = result;
        }

        for (final Validator validator : validators) {
            lastResult = validator.validate(this.name, input, context);
            if (!lastResult.isValid()) {
                break;
            }
        }

        if (getControllerServiceDefinition() != null) {
            final ControllerService service = context.getControllerServiceLookup().getControllerService(input);
            if (service == null) {
                return new ValidationResult.Builder()
                        .input(input)
                        .subject(getDisplayName())
                        .valid(false)
                        .explanation("Property references a Controller Service that does not exist")
                        .build();
            } else {
                return new ValidationResult.Builder()
                        .valid(true)
                        .build();
            }
        }

        return lastResult;
    }