One more information, 

This is the source code of the annotation that enabled the interception,

It is not missing @Inherited? 


@Target({ ElementType.METHOD, ElementType.TYPE, ElementType.CONSTRUCTOR })
@Retention(RetentionPolicy.RUNTIME)
@InterceptorBinding
public @interface MethodValidated {
}


2013/7/8 Denis Silva <denis.analistajava@gmail.com>
Gunnar, 

I'm using glassfish 4.0, that uses hibernate validator 5.0.0.Final. 

Debugging ValidationExtension for a while, i found one problem (may be not). 
When i use validations constraints in the abstract class, the ValidationEnabledAnnotatedType that enable the interception of the bean, is applied on the subclass implementation and the abstract class, but when i use an interface, the wrappedType is applied just in the interface.

That way, the interface implementation will never be intercepted, right?

I will create an entry on forum, but there is no stacktrace in my case, the expected validation just not work.

Att,








2013/7/6 Gunnar Morling <gunnar@hibernate.org>
Hi,

I don't think that's a spec problem.

The @NotNull constraint should be validated, no matter wether Foo is an interface or an abstract class. Generally constraints on overridden/implemented methods are to be considered, you only may not add any more parameter constraints in subclasses/implementations.

Are you using the Hibernate Validator CDI portable extension? Which container do you use? Could you create an entry with the complete stack trace and a detailed description of your environment to https://forum.hibernate.org/viewforum.php?f=9?

--Gunnar



2013/7/6 Denis Silva <denis.analistajava@gmail.com>
Hi, 

I'm doing some tests with bean validation, and i have some doubts about the behavior of method constraints on inheritance hierarchies.
The specification tells about Liskov substitution, on method constraints within inheritance hierarchies, but i made the test bellow with 
the reference implementation ( hiberante validator 5.1 ), and not understand if this is a bug in implementation or my misunderstanding the specification.

public interface Foo {
     public void doStuff(@NotNull String v);
}

@Named
public class Bar implements Foo {
     public void doStuff(String v) {}
}

Calling bar.doStuff(null), the validation is not fired.
But if i changed Foo interface to an abstract class, and made Bar extends it, the validation is fired and a ConstraintViolationException is propagated.
The test was done with cdi.

What should be the appropriate behavior?

--
Denis Tiago

_______________________________________________
beanvalidation-dev mailing list
beanvalidation-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/beanvalidation-dev


_______________________________________________
beanvalidation-dev mailing list
beanvalidation-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/beanvalidation-dev



--
Denis Silva
Analista Programador Java
11 - 8334-9915



--
Denis Silva
Analista Programador Java
11 - 8334-9915