[ https://issues.apache.org/jira/browse/OWB-456?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rohit Dilip Kelapure updated OWB-456: ------------------------------------- Description: EJB 3.0 spec. mandates that - If a bean class has superclasses, any AroundInvoke methods defined on those superclasses are invoked, most general superclass first. - If an AroundInvoke method is overridden by another method (regardless of whether that method is itself an AroundInvoke method), it will not be invoked In some cases OWB does not remove the overriden parent interceptor from the Interceptor stack of a bean leading to TCK failures like these ... @Test @SpecAssertions({ @SpecAssertion(section = "1", id = "i"), @SpecAssertion(section = "3", id= "b"), @SpecAssertion(section = "3.1", id= "c"), @SpecAssertion(section = "3.1", id= "d"), @SpecAssertion(section = "3.1", id= "e"), @SpecAssertion(section = "3.1", id= "f"), @SpecAssertion(section = "3.1", id= "g"), @SpecAssertion(section = "8", id = "e") }) public void testInvocationOrder() { ... assert !Interceptor1.isOverridenMethodCalled(); // Error here } Error: java.lang.AssertionError at org.jboss.jsr299.tck.interceptors.tests.aroundInvoke.order.InvocationOrderTest.testInvocationOrder(InvocationOrderTest.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) In this case @Interceptors( { Interceptor1.class, Interceptor3.class }) class Tram extends RailVehicle { } Inspite of Interceptor1 overriding OverridenInterceptor we see OverridenInterceptor.intercept being called. org.jboss.jsr299.tck.interceptors.tests.aroundInvoke.order.InvocationOrderTest is the failing TCK test. was: EJB 3.0 spec. mandates that - If a bean class has superclasses, any AroundInvoke methods defined on those superclasses are invoked, most general superclass first. In some cases OWB does not remove the overriden parent interceptor from the Interceptor stack of a bean leading to TCK failures like these ... @Test @SpecAssertions({ @SpecAssertion(section = "1", id = "i"), @SpecAssertion(section = "3", id= "b"), @SpecAssertion(section = "3.1", id= "c"), @SpecAssertion(section = "3.1", id= "d"), @SpecAssertion(section = "3.1", id= "e"), @SpecAssertion(section = "3.1", id= "f"), @SpecAssertion(section = "3.1", id= "g"), @SpecAssertion(section = "8", id = "e") }) public void testInvocationOrder() { ... assert !Interceptor1.isOverridenMethodCalled(); // Error here } Error: java.lang.AssertionError at org.jboss.jsr299.tck.interceptors.tests.aroundInvoke.order.InvocationOrderTest.testInvocationOrder(InvocationOrderTest.java:43) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) In this case @Interceptors( { Interceptor1.class, Interceptor3.class }) class Tram extends RailVehicle { } Inspite of Interceptor1 overriding OverridenInterceptor we see OverridenInterceptor.intercept being called. org.jboss.jsr299.tck.interceptors.tests.aroundInvoke.order.InvocationOrderTest is the failing TCK test. > When multiple interceptors are defined for a bean OWB does NOT correctly > remove the overriden base Interceptors > ------------------------------------------------------------------------------------------------------------------ > > Key: OWB-456 > URL: https://issues.apache.org/jira/browse/OWB-456 > Project: OpenWebBeans > Issue Type: Bug > Components: Interceptor and Decorators > Affects Versions: 1.0.0-alpha-3 > Environment: Windows Server 2003 > Reporter: Rohit Dilip Kelapure > Assignee: Gurkan Erdogdu > Fix For: 1.0.0-GA, 1.0.0-alpha-4 > > Original Estimate: 24h > Remaining Estimate: 24h > > EJB 3.0 spec. mandates that > - If a bean class has superclasses, any AroundInvoke methods defined on those > superclasses are invoked, most general superclass first. > - If an AroundInvoke method is overridden by another method (regardless of > whether that method is itself an AroundInvoke method), it will not be invoked > In some cases OWB does not remove the overriden parent interceptor from the > Interceptor stack of a bean leading to TCK failures like these ... > @Test > @SpecAssertions({ > @SpecAssertion(section = "1", id = "i"), > @SpecAssertion(section = "3", id= "b"), > @SpecAssertion(section = "3.1", id= "c"), > @SpecAssertion(section = "3.1", id= "d"), > @SpecAssertion(section = "3.1", id= "e"), > @SpecAssertion(section = "3.1", id= "f"), > @SpecAssertion(section = "3.1", id= "g"), > @SpecAssertion(section = "8", id = "e") > }) > public void testInvocationOrder() { > ... > assert !Interceptor1.isOverridenMethodCalled(); // Error here > } > Error: > java.lang.AssertionError > at > org.jboss.jsr299.tck.interceptors.tests.aroundInvoke.order.InvocationOrderTest.testInvocationOrder(InvocationOrderTest.java:43) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > In this case > @Interceptors( { Interceptor1.class, Interceptor3.class }) > class Tram extends RailVehicle { > } > Inspite of Interceptor1 overriding OverridenInterceptor we see > OverridenInterceptor.intercept being called. > org.jboss.jsr299.tck.interceptors.tests.aroundInvoke.order.InvocationOrderTest > is the failing TCK test. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.