You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@bval.apache.org by "Matt Benson (JIRA)" <ji...@apache.org> on 2016/10/28 21:04:59 UTC

[jira] [Updated] (BVAL-137) Apache Bean Validation fails on CDI proxies when integrated with Weld CDI 1.2

     [ https://issues.apache.org/jira/browse/BVAL-137?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Matt Benson updated BVAL-137:
-----------------------------
    Summary: Apache Bean Validation fails on CDI proxies when integrated with Weld CDI 1.2  (was: Apache Bean Validation fails on CDI proxies, when intergrated with Weld CDI 1.2)

> Apache Bean Validation fails on CDI proxies when integrated with Weld CDI 1.2
> -----------------------------------------------------------------------------
>
>                 Key: BVAL-137
>                 URL: https://issues.apache.org/jira/browse/BVAL-137
>             Project: BVal
>          Issue Type: Bug
>          Components: method validation
>    Affects Versions: 1.1.0
>         Environment: Apache Bean Validation 1.1 and Weld CDI 1.2.
>            Reporter: Nathan Mittlestat
>             Fix For: 1.1.2
>
>
> When running the Bean Validation TCK using Apache Bean Validation and Weld 1.2 as the CDI implementation the following exception occurs.
> javax.validation.ConstraintDeclarationException: @Valid on returned value can't be set more than once
>         at org.apache.bval.jsr.BeanDescriptorImpl$ExecutableMeta.buildMethodConstraints(BeanDescriptorImpl.java:601)
>         at org.apache.bval.jsr.BeanDescriptorImpl$ExecutableMeta.buildExecutableDescriptors(BeanDescriptorImpl.java:853)
>         at org.apache.bval.jsr.BeanDescriptorImpl$ExecutableMeta.<init>(BeanDescriptorImpl.java:334)
>         at org.apache.bval.jsr.BeanDescriptorImpl$ExecutableMeta.<init>(BeanDescriptorImpl.java:321)
>         at org.apache.bval.jsr.BeanDescriptorImpl.<init>(BeanDescriptorImpl.java:110)
>         at org.apache.bval.jsr.ClassValidator.createBeanDescriptor(ClassValidator.java:674)
>         at org.apache.bval.jsr.ClassValidator.getConstraintsForClass(ClassValidator.java:266)
>         at org.apache.bval.jsr.ClassValidator.validateBean(ClassValidator.java:450)
>         at org.apache.bval.jsr.ClassValidator.validateBeanNet(ClassValidator.java:409)
>         at org.apache.bval.jsr.ClassValidator$JsrValidationCallback.validate(ClassValidator.java:1116)
>         at org.apache.bval.util.ValidationHelper.validateBeanInContext(ValidationHelper.java:88)
>         at org.apache.bval.util.ValidationHelper.validateContext(ValidationHelper.java:70)
>         at org.apache.bval.jsr.ClassValidator.validateInvocationParameters(ClassValidator.java:867)
>         at org.apache.bval.jsr.ClassValidator.validateParameters(ClassValidator.java:1046)
>         at org.apache.bval.cdi.BValInterceptor.invoke(BValInterceptor.java:132)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:95)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:56)
>         at java.lang.reflect.Method.invoke(Method.java:620)
>         at org.jboss.weld.interceptor.reader.SimpleInterceptorInvocation$SimpleMethodInvocation.invoke(SimpleInterceptorInvocation.java:74)
>         at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeAroundInvoke(InterceptorMethodHandler.java:84)
>         at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.executeInterception(InterceptorMethodHandler.java:72)
>         at org.jboss.weld.interceptor.proxy.InterceptorMethodHandler.invoke(InterceptorMethodHandler.java:56)
>         at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:79)
>         at org.jboss.weld.bean.proxy.CombinedInterceptorAndDecoratorStackMethodHandler.invoke(CombinedInterceptorAndDecoratorStackMethodHandler.java:68)
>         at org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.CalendarServiceWithCascadingReturnValue$Proxy$_$$_WeldSubclass.createValidEvent(Unknown Source)
>         at org.hibernate.beanvalidation.tck.tests.integration.cdi.executable.ExecutableValidationTest.testCascadedReturnValueValidationOfConstrainedMethod(ExecutableValidationTest.java:152)
> This exception is due to the Weld proxy duplicating the annotations from the class being proxied.  The issue has been brought up in both the Weld community and the Bean Validation TCK community.  The response from both communities has been to implement Weld specific code to handle the proxies as a special case.
> Please see the recommendation here:
> https://hibernate.atlassian.net/browse/BVTCK-69?filter=-2



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)