[ https://issues.apache.org/jira/browse/SLING-4138?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14200182#comment-14200182 ]
Konrad Windszus commented on SLING-4138: ---------------------------------------- What about this interface which covers the aspects b) and c) from SLING-4027: {code} /** * Validates the {@code data} and/or the {@code valueMap} according to the internal constraints of this validator. * * The validator can enforce the type of the given data just by setting the appropriate parameter type which can be any non-primitive class. * Depending on whether this type is an array or not the {@code validate} is called differently: * <table> * <tr> * <th>T is array type</th> * <th>Valuemap contains array value</th> * <th>{@code validate} is called...</th> * </tr> * <tr> * <td>yes</td> * <td>yes</td> * <td>once per property with {@code data} containing the array</td> * </tr> * <tr> * <td>yes</td> * <td>no</td> * <td>once per property with {@code data} containing a single element array</td> * </tr> * <tr> * <td>no</td> * <td>yes</td> * <td>once per element in the property array with {@code data} containing one array element</td> * </tr> * <tr> * <td>no</td> * <td>no</td> * <td>once per property with {@code data} containing the value of the property</td> * </tr> * </table> * * @param data the data to validate (primary property), never {@code null}. * @param valueMap all properties (only used for validations considering multiple properties), never {@code null}. * @param arguments the parametrization of the validator. Might be {@code null} in case no arguments were given. * @return validation error message if validation was not successfull, {@code null} otherwise. In case an empty string is returned a generic validation error message is used. * @throws org.apache.sling.validation.api.exceptions.SlingValidationException if some expected arguments are missing from the arguments map */ String validate(T data, ValueMap valueMap, Map<String, String> arguments) throws SlingValidationException; {code} > Allow validator to support arbitrary types > ------------------------------------------ > > Key: SLING-4138 > URL: https://issues.apache.org/jira/browse/SLING-4138 > Project: Sling > Issue Type: Improvement > Components: Validation > Reporter: Konrad Windszus > > Currently the {{Validator.validate}} method only act on String values. > Since type conversion is already built into the ValueMap, it would be good to > leverage that and to allow Validator to act on arbitrary types there! > Also the type conversion from ValueMap should be leveraged to do the type > check in {{ValidationServiceImpl.validatePropertyValue}} rather than > implementing a new thing in {{Type.isValid()}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)