[bv-dev] Triggering method validation
Emmanuel Bernard
emmanuel at hibernate.org
Mon Jan 30 03:47:00 EST 2012
Yes I think it does. though one has to call
getConstrainedMethods().size() != 0 || getConstrainedConstructors().size()
to know if a bean is to be intercepted. Probably not to bad as constructors and method interceptions could be done with entirely different mechanisms.
On 29 janv. 2012, at 14:31, Gunnar Morling wrote:
>> Note that we also need some API to tell whether or not a method or any method on a given class are intercepted. That would allow to optimize the activation or not of an interceptor.
>
> The BV-241 proposal contains an extension to the meta-data API [1].
> Does that cover what you have in mind?
>
> --Gunnar
>
> [1] http://beanvalidation.org/proposals/BVAL-241/#meta_data
>
>
>
> 2012/1/27 Emmanuel Bernard <emmanuel at hibernate.org>:
>> Note that we also need some API to tell whether or not a method or any method on a given class are intercepted. That would allow to optimize the activation or not of an interceptor.
>>
>> My natural preference goes for #2 but we need to verify that
>>
>> 1. it works nicely with other EE JSRs like CDI, JAX-RS, JSF. Any other?
>> 2. alternative technologies can use that (Spring Framework, Guice etc
>>
>> On 22 janv. 2012, at 20:33, Gunnar Morling wrote:
>>
>>> Hi experts,
>>>
>>> I'm in the middle of writing a proposal document for BVAL-241 (method
>>> validation), which I'm planning to put up for discussion within the
>>> next days.
>>>
>>> One item for which I'd like to gather some feedback beforehand is how
>>> to trigger method validation. I think we all agree that BV itself
>>> should only provide the API and meta-model for method validation, but
>>> it shouldn't actually trigger a validation of method level
>>> constraints.
>>>
>>> Instead this should be task of technologies integrating the method
>>> validation feature to decide whether a validation is needed or not and
>>> if so delegate that validation to BV.
>>>
>>> The following options were mentioned at some time:
>>>
>>> #1 Use @Valid
>>>
>>> This would be semantically wrong IMO. @Valid is only a marker for
>>> cascaded validation, but it shouldn't cause a validation itself.
>>>
>>> #2 Define an annotation such as @javax.validation.ValidateGroups within BV
>>>
>>> @ValidateGroups({Group1.class, Group2.class})
>>> public class OrderService {
>>>
>>> @NotNull
>>> public Order placeOrder(@NotNull(groups=Group1.class) @Size(min=3,
>>> max=20) String customerCode, @NotNull Item item, @Min(1) int quantity)
>>> { //... }
>>>
>>> }
>>>
>>> This annotation could be discovered by interceptors/proxies etc. which
>>> then would trigger a validation of the method constraints. The method
>>> could be defined on a class level as well as on method level (with the
>>> latter having precedence in case of conflicts).
>>>
>>> We could surely define such an annotation and specify it semantics,
>>> but I'm unsure how that would actually work out with technologies
>>> using that feature. Taking CDI for example, AFAIK the annotation would
>>> have to be annotated with the @InterceptorBinding meta annotation. I
>>> don't know whether/how it would be possible that we define the "basic"
>>> annotation, while integrators "enrich" it with the meta data they
>>> require.
>>>
>>> #3 Don't define anything related in BV, leave that completely to integrators
>>>
>>> CDI could define a proper interceptor binding annotation, others could
>>> use some XML based configuration etc.
>>>
>>> Personally I think we could go for #2 and define an annotation to be
>>> used by integrators (e.g. by checking for the annotation, Spring might
>>> define a related point cut etc.). We would recommend to trigger
>>> validation based on this annotation where possible and hopeful would
>>> cover most cases that way. Integrators would still be free to define
>>> their own means of triggering a validation if required.
>>>
>>> Any thoughts? Are there any other alternatives?
>>>
>>> --Gunnar
>>> _______________________________________________
>>> beanvalidation-dev mailing list
>>> beanvalidation-dev at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>>
>>
>> _______________________________________________
>> beanvalidation-dev mailing list
>> beanvalidation-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
>
> _______________________________________________
> beanvalidation-dev mailing list
> beanvalidation-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/beanvalidation-dev
More information about the beanvalidation-dev
mailing list