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