void validateValue()

in src/main/java/org/apache/sling/feature/extension/apiregions/api/config/validation/PropertyValidator.java [198:267]


	void validateValue(final Context context, final PropertyDescription desc, final Object value) {
		if ( value != null ) {
            // check for placeholder
            boolean hasPlaceholder = false;
            if ( value instanceof String ) {
                final String strVal = (String)value;
                for(final String p : PLACEHOLDERS) {
                    if ( strVal.contains(p) ) {
                        hasPlaceholder = true;
                        break;
                    }
                }
            }
            if ( !hasPlaceholder ) {
                switch ( context.description.getType() ) {
                    case BOOLEAN : validateBoolean(context, desc, value);
                                break;
                    case BYTE : validateByte(context, desc, value);
                                break;
                    case CHARACTER : validateCharacter(context, desc, value);
                                break;
                    case DOUBLE : validateDouble(context, desc, value);
                                break;
                    case FLOAT : validateFloat(context, desc, value);
                                break;
                    case INTEGER : validateInteger(context, desc, value);
                                break;
                    case LONG : validateLong(context, desc, value);
                                break;
                    case SHORT : validateShort(context, desc, value);
                                break;
                    case STRING : validateRequired(context, desc, value);
                                break;
                    case EMAIL : validateEmail(context, desc, value);
                                break;
                    case PASSWORD : validatePassword(context, desc, value, false);
                                break;
                    case URL : validateURL(context, desc, value);
                            break;
                    case PATH : validatePath(context, desc, value);
                                break;
                    default : context.result.getErrors().add("Unable to validate value - unknown property type : " + context.description.getType());
                }
                validateRegex(context, desc, context.description.getRegexPattern(), value);
                validateOptions(context, desc, value);
                if ( context.description.getType() != PropertyType.PASSWORD ) {
                    validatePlaceholderPolicy(context, desc, value, false);
                }
            } else {
                // placeholder is present
                if ( context.description.getType() == PropertyType.PASSWORD ) {
                    validatePassword(context, desc, value, true);
                } else if ( context.description.getType() == PropertyType.STRING ) {
                    validateRegex(context, desc, context.description.getPlaceholderRegexPattern(), value);

                    // we mark the result as skipped if a regex or options are set or if a value is marked as required.
                    if ( context.description.getRegex() != null || context.description.getOptions() != null || context.description.isRequired() ) {
                        context.result.markSkipped();
                    }
                } else {
                    context.result.markSkipped();
                }
                if ( context.description.getType() != PropertyType.PASSWORD ) {
                    validatePlaceholderPolicy(context, desc, value, true);
                }
            }
        } else {
			setResult(context, desc, "Null value provided for validation");
		}
	}