public ConfigurationValidationResult validate()

in src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/ConfigurationValidator.java [99:149]


    public ConfigurationValidationResult validate(final Configuration config,
            final ConfigurableEntity desc, 
            final Region region,
            final Mode mode) {
        final Mode validationMode = desc.getMode() != null ? desc.getMode() : (mode != null ? mode : Mode.STRICT);
        
        final ConfigurationValidationResult result = new ConfigurationValidationResult();
        if ( config.isFactoryConfiguration() ) {
            if ( !(desc instanceof FactoryConfigurationDescription) ) {
                result.getErrors().add("Factory configuration cannot be validated against non factory configuration description");
            } else {
                if ( desc.getPropertyDescriptions().isEmpty()) {
                    if ( region == Region.GLOBAL && !desc.isAllowAdditionalProperties() ) {
                        setResult(result, validationMode, desc, "Factory configuration is not allowed");
                        markGlobalProperties(config, result, region);
                    }
                } else {
                    if ( region == Region.GLOBAL && desc.getRegion() == Region.INTERNAL ) {
                        setResult(result, validationMode, desc, "Factory configuration is not allowed");
                        markGlobalProperties(config, result, region);
                    } else {
                        validateProperties(config, desc, result.getPropertyResults(), region, validationMode);
                    }
                }
            }
        } else {
            if ( !(desc instanceof ConfigurationDescription) ) {
                result.getErrors().add("Configuration cannot be validated against factory configuration description");
            } else {
                if ( desc.getPropertyDescriptions().isEmpty()) {
                    if ( region == Region.GLOBAL && !desc.isAllowAdditionalProperties() ) {
                        setResult(result, validationMode, desc, "Configuration is not allowed");
                        markGlobalProperties(config, result, region);
                    }
                } else {
                    if ( region == Region.GLOBAL && desc.getRegion() == Region.INTERNAL ) {
                        setResult(result, validationMode, desc, "Configuration is not allowed");
                        markGlobalProperties(config, result, region);
                    } else {
                        validateProperties(config, desc, result.getPropertyResults(), region, validationMode);
                    }
                }
            }
        }

        if ( desc.getDeprecated() != null ) {
            setResult(result, Mode.LENIENT, desc, desc.getDeprecated());
        }

        return result;
    }