[bv-dev] Container element validation for arrays
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 , 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
> 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.
>beanvalidation-dev mailing list
>beanvalidation-dev at lists.jboss.org
More information about the beanvalidation-dev