Interceptor binding added on an interceptor class at ProcessAnnotatedType phase 
is not considered
-------------------------------------------------------------------------------------------------

                 Key: OWB-593
                 URL: https://issues.apache.org/jira/browse/OWB-593
             Project: OpenWebBeans
          Issue Type: Bug
          Components: Interceptor and Decorators
    Affects Versions: 1.0.0
            Reporter: Kevin Pollet
            Assignee: Gurkan Erdogdu


I have an annotation only allowed on methods (not annotated with 
{{@InterceptorBinding}}). I want to add this annotation as an interceptor 
binding and register the corresponding interceptor programmatically (the 
interceptor class cannot be annotated with the "new" interceptor binding 
annotation). For that I've created the following extension and interceptor:

{code}
public class FooExtension implements Extension {

   void registerInterceptorBinding(@Observes BeforeBeanDiscovery event) {
      event.addInterceptorBinding(Foo.class);
   }

   void processFooInterceptorAnnotatedType(@Observes 
ProcessAnnotatedType<FooInterceptor> event) {
      AnnotatedType<FooInterceptor> annotatedType = new 
AnnotatedTypeBuilder<FooInterceptor>()
            .readFromType(event.getAnnotatedType())
            .addToClass(new AnnotationLiteral<Foo>() {})
            .create();

      event.setAnnotatedType(annotatedType);
   }
}

@Interceptor
public class FooInterceptor {

   @AroundInvoke
   public Object intercept(InvocationContext context) throws Exception {
         return "Foo interceptor called";
   }
}
{code}

With the code above I have the following exception at startup:

{quote}
org.apache.webbeans.exception.WebBeansConfigurationException: WebBeans XML 
configuration defined in /beans.xml is failed. Reason is : Interceptor class : 
com.github.kevinpollet.sample.cdi.interceptor.FooInterceptor must have at least 
one @InterceptorBindingType
{quote}

If I use {{AfterBeanDiscovery#addBean()}} all works fine but it's not as neat 
as the previous approach and I've seen nothing in the spec that disallows it. 
FYI, this approach works fine with Weld.


--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to