]
Luca Stancapiano commented on WFLY-10754:
-----------------------------------------
the test works. I started also the other test cases and all tests continue to work, so for
me it's ok. Only I renamed the CombinedInterceptorsOnEJBBeanTest to
CombinedInterceptorsOnEJBBeanTestCase as for the other test cases. You can find the update
in [my
NullPointerException using Stateless with configured interceptors
-----------------------------------------------------------------
Key: WFLY-10754
URL:
https://issues.jboss.org/browse/WFLY-10754
Project: WildFly
Issue Type: Bug
Components: CDI / Weld
Affects Versions: 13.0.0.Final
Environment: WildFly 12.0.0.Final and newer
Reporter: Luca Stancapiano
Assignee: Matej Novotny
Priority: Minor
I report a strange behavior on WildFly 13 when configuring interceptors within stateless.
Below I describe the scenario:
Here a simple interceptor:
{code:java}
package it.vige.injection.interceptors;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
@Interceptor
public class OKInterceptor {
@AroundInvoke
public Object aroundInvoke(InvocationContext ic) throws Exception {
return ic.proceed();
}
}
{code}
Here an annotation used as interceptor binding:
{code:java}
package it.vige.injection.interceptors;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import javax.interceptor.InterceptorBinding;
@Retention(RUNTIME)
@Target({ METHOD, TYPE, CONSTRUCTOR })
@InterceptorBinding
public @interface NotOK {
}
{code}
Here an interceptor annotated with the interceptor binding:
{code:java}
package it.vige.injection.interceptors;
import javax.interceptor.AroundInvoke;
import javax.interceptor.Interceptor;
import javax.interceptor.InvocationContext;
@Interceptor
@NotOK
public class NotOKInterceptor {
@AroundInvoke
public Object aroundInvoke(InvocationContext ic) throws Exception {
return ic.proceed();
}
}
{code}
Here the stateless service configured with both the interceptors:
{code:java}
package it.vige.injection.interceptors;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
@Stateless
public class SimpleService {
@Interceptors({ OKInterceptor.class })
public void ok() {
}
@NotOK
public void notOk() {
}
}
{code}
This service must have two methods, one attached to the simple interceptor and the other
attached to the interceptor binding.
Here the beans.xml configuration:
{code:java}
<beans
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
version="2.0" bean-discovery-mode="all">
<interceptors>
<class>it.vige.injection.interceptors.OKInterceptor</class>
<class>it.vige.injection.interceptors.NotOKInterceptor</class>
</interceptors>
</beans>
{code}
And in the end the client who call the service:
{code:java}
....
@Inject
private SimpleService simpleService;
...
// this call works:
simpleService.ok();
// this call starts a NullPointerException:
simpleService.notOk();
...
{code}
when I try to call the notOk method I get this exception:
{code:java}
javax.ejb.EJBException: java.lang.NullPointerException
at
deployment.test.war//it.vige.injection.test.InterceptorsTestCase.testNotOk(InterceptorsTestCase.java:52)
Caused by: java.lang.NullPointerException
at
deployment.test.war//it.vige.injection.test.InterceptorsTestCase.testNotOk(InterceptorsTestCase.java:52)
{code}
The same thing was tested on WildFly 11.0.0.Final and it was ok.
If on WildFfly 13.0.0.Final I remove the @Stateless annotation from the service it works