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

Markus Jung updated BVAL-222:
-----------------------------
    Fix Version/s: 3.1.0
                   3.0.2

> BValInterceptor not actived when Constrains are only in superclasses
> --------------------------------------------------------------------
>
>                 Key: BVAL-222
>                 URL: https://issues.apache.org/jira/browse/BVAL-222
>             Project: BVal
>          Issue Type: Bug
>    Affects Versions: 3.0.1
>            Reporter: Markus Jung
>            Assignee: Markus Jung
>            Priority: Major
>             Fix For: 3.1.0, 3.0.2
>
>
> This was reported in TomEE by [~neormx] in TOMEE-4449. This seems to be 
> coming from BVal directly, as the BValExtension does not enable the 
> BValInterceptor when there are no constraints in the AnnotatedType. 
> superclass + interfaces are not being considered right now.
> Note: placing annotations on the ovewritten methods directly is illegal as 
> per the spec (see [5.6.5. Method constraints in inheritance 
> hierarchies|https://jakarta.ee/specifications/bean-validation/3.0/jakarta-bean-validation-spec-3.0#constraintdeclarationvalidationprocess-methodlevelconstraints-inheritance])
>  
> As usual, a test says more than 1000 words:
> {code:java}
> @RunWith(Arquillian.class)
> public class CdiConstraintOnlyOnParentClassTest {
>     @ClassRule
>     public static ExternalResource allowMyServiceImplType = new 
> ExternalResource() {
>         @Override
>         protected void before() throws Throwable {
>             BValExtension.setAnnotatedTypeFilter(at -> at.getJavaClass() == 
> GreetingServiceImpl.class);
>         }
>         @Override
>         protected void after() {
>             
> BValExtension.setAnnotatedTypeFilter(BValExtension.DEFAULT_ANNOTATED_TYPE_FILTER);
>         }
>     };
>     @Inject
>     private GreetingService service;
>     @Deployment
>     public static JavaArchive createDeployment() {
>         return ShrinkWrap.create(JavaArchive.class)
>                 .addClasses(GreetingService.class, GreetingServiceImpl.class);
>     }
>     @Test
>     public void validationFail() {
>         Assert.assertThrows(ConstraintViolationException.class, () -> 
> service.greet(null));
>     }
>     public interface GreetingService {
>         void greet(@NotNull String name);
>     }
>     @ApplicationScoped
>     public static class GreetingServiceImpl implements GreetingService {
>         @Override
>         public void greet(String name) {
>         }
>     }
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to