4 Replies Latest reply on Jan 11, 2012 9:03 AM by Jozef Hartinger

    Abstract method and Interceptor

    Vitaly Masterov Newbie

      There is an AbstractSimpleBean abstract class with the doAction() method and the handle() abstract method. SimpleBean is a child of AbstractSimpleBean, SimpleBean implements the handle() method. Also there are an Interceptor class and the @Simple qualifier with @InterceptorBinding.
      If the handle() method is annotated as @Simple, the interceptor class does not work.

      @Target({TYPE, METHOD})
      public @interface Simple {

      @Interceptor @Simple
      public class SimpleInterceptor implements Serializable {
           private static final long serialVersionUID = 6824959430435594183L;
           private Logger log;
           public Object around(InvocationContext ctx) throws Exception {
                log.info("... around() ...");
                return ctx.proceed();

      public abstract class AbstractSimpleBean {
           protected Logger log;
           public abstract void handle();
           public void doAction() {
                log.info("... doAction() ...");

      public class SimpleBean extends AbstractSimpleBean {
           private static final long serialVersionUID = 7944713842447575257L;
           public void handle() {
                log.info("... handle() ...");

      When the doAction() method is annotated as @Simple in the AbstractSimpleBean parent class, all works fine. Is this a limitation for abstract methods in CDI and Weld or is it a bug?