Leonardo Scommegna
Leonardo Scommegna

Reputation: 27

is there a way to intercept the begin and end Conversation in CDI?

I would like to intercept calls to methods conversation.begin() and conversation.end().

To do this, I have developed an interceptor binding that I aim to dynamically assign to the Conversation class through a CDI portable extension.

However, I can not find how to access to the Conversation class since it is not observed in the ProcessAnnotatedType event where usually i do this process to my defined beans.

See the code as an example:

public class MethodCallsInterceptorExt implements Extension {
        
    void processAnnotatedType(@Observes ProcessAnnotatedType<?> event) {  
        if (isConvesationBean(event)) { // This condition is never true
            event.configureAnnotatedType().add(new MyInterceptorBinding());
        }
    }
}

Is this solution at least partially correct? Is there any viable way to do this?

Upvotes: 0

Views: 64

Answers (1)

Xavier Dury
Xavier Dury

Reputation: 1571

You could do something like this:

public class ConversationObserver {

    public void onStart(@Observes @Initialized(ConversationScoped.class) ServletRequest request) {}

    public void onEnd(@Observes @Destroyed(ConversationScoped.class) ServletRequest request) {}
}

See https://docs.jboss.org/cdi/api/2.0/javax/enterprise/context/ConversationScoped.html

Upvotes: 0

Related Questions