[bv-dev] Container element validation for arrays

Emmanuel Bernard emmanuel at hibernate.org
Wed Apr 19 07:46:21 EDT 2017

What you are inferring is that the JLS made an incompatible move right?
Because before Java 8, @Size(max=5) String[] was meant to be applied on
the array right?

Anyways, I don't think that would be a massive loss to lose array
support but my background is biased toward preferring collections.


On Wed 17-04-19 10:27, Gunnar Morling wrote:
>Guillaume made an important observation concerning the validation of
>array elements. So far we envisioned to support this:
>    String @Email [] emails;
>That looks nice (provided that @Email supports TYPE_USE), only that
>it's getting semantics of type annotations for arrays wrong.
>As per the JLS [1], the @Email annotation here applies to the array
>type String[], not the component type String. This example from the
>JLS clarifies the intent:
>    @C int @A [] @B [] f;
>    "@A applies to the array type int[][], @B applies to its component
>type int[],
>    and @C applies to the element type int."
>So according to that, our example would have to be:
>    @Email String[] emails;
>But obviously this conflicts with the existing semantics of applying
>constraints to arrays (not their elements) in BV 1.1.
>So based on that, I don't see a good way for supporting container
>element constraints for arrays. Hence my suggestion is to not support
>them in the BV 2.0 spec (the validation of container elements of
>generic containers - List<@Email String> - is not affected). Specific
>implementations may explore ways around it (e.g. specifying the target
>via payload()) and we may revisit it in 2.1.
>Any thoughts?
>[1] https://docs.oracle.com/javase/specs/jls/se8/html/jls-9.html#jls-9.7.4
>beanvalidation-dev mailing list
>beanvalidation-dev at lists.jboss.org

More information about the beanvalidation-dev mailing list