I would like to know if the RequestScoped
context is currently active in a method or not.
At the moment, here is what I do :
@Inject private BeanManager beanManager;
public boolean isRequestScopeActive() {
try {
if (beanManager.getContext(RequestScoped.class).isActive()) {
return true;
} else {
return false;
}
} catch (final ContextNotActiveException e) {
return false;
}
}
I think it's a bit heavy to catch a ContextNotActiveException
just to know if a scope is active or not.
Do you have any better way to know the state (active or not) of a context in CDI ?
No, the only option we have in CDI 1.0 is to catch the ContextNotActiveException.
Your solution should work.
This actually ends up being a problem because scope implementation is not available for injection.
E.g. You can't just @Inject RequestScopedContextImpl rq;
and check the rq.isActive()
method, because we don't have access to that class without knowing the implementation details of CDI itself.