2017-03-04 1 views
1

La spécification BeanValidation 1.1 définit l'API ExecutableValidator.validateParameters pour valider toutes les contraintes placées sur les paramètres de la méthode donnée.Validation JSR 349: ExecutableValidator.validateParameters sur la méthode statique

Cependant, l'API ont besoin pour se passer d'une instance d'objet sur lequel la méthode de validation est invoquée:

/** 
* Validates all constraints placed on the parameters of the given method. 
* 
* @param <T> the type hosting the method to validate 
* @param object the object on which the method to validate is invoked 
* @param method the method for which the parameter constraints is validated 
* @param parameterValues the values provided by the caller for the given method's 
*  parameters 
* @param groups the group or list of groups targeted for validation (defaults to 
*  {@link Default}) 
* @return a set with the constraint violations caused by this validation; 
*   will be empty if no error occurs, but never {@code null} 
* @throws IllegalArgumentException if {@code null} is passed for any of the parameters 
*   or if parameters don't match with each other 
* @throws ValidationException if a non recoverable error happens during the 
*   validation process 
*/ 
<T> Set<ConstraintViolation<T>> validateParameters(T object, 
                Method method, 
                Object[] parameterValues, 
                Class<?>... groups); 

Ma question est comment puis-je valider un appel de méthode statique? Par exemple, l'invocation de Foo.bar méthode définie ci-dessous:

public class Foo { 
    public static void bar(@NotNull String str) {...} 
} 
+1

Pourquoi voulez-vous valider une méthode statique pour commencer? Par définition de static, vous ne validez plus le bean. – Tunaki

+0

Je ne valide pas le haricot 'Foo'. Cependant, j'ai besoin de valider le paramètre 'str' dans l'exemple de code mentionné –

Répondre

1

Bean Validation 1.1 ne prend pas en charge les méthodes statiques. De Requirements on classes to be validated:

objets d'hébergement contraintes et attendent d'être validés par les fournisseurs Bean Validation doivent remplir les conditions suivantes:

  • [...]
  • champs statiques et des méthodes statiques sont exclues de la validation .

Certains pourraient soutenir implementors à l'avenir comme une amélioration (par exemple HV-606 pour Hibernate Validator), mais la spécification elle-même ne fonctionne pas. Il n'est toujours pas explicitement pris en charge dans le 2.0 draft of the specification.