Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.0.0-alpha-2
-
None
-
Windows Server 2003
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(
)
public void testInvocationOrder()
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(
)
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.