[cdi-dev] Interceptor bindings from interceptor when using 2.0 interception factory
Martin Kouba
mkouba at redhat.com
Mon Aug 28 03:41:07 EDT 2017
Hi Arjan,
comments inline...
Dne 21.8.2017 v 13:45 arjan tijms napsal(a):
> Hi,
>
> Normally a workaround to get the interceptor bindings from within an
> Interceptor is to inspect the target and/or the injected intercepted bean.
>
> However, when adding an interceptor via the new CDI 2.0 interception
> factory, things become a bit more muddy.
>
> See e.g.
>
> https://github.com/javaee-samples/javaee8-samples/blob/master/cdi/interception-factory/src/main/java/org/javaee8/cdi/interception/factory/MyGreetingProducer.java#L34
>
>
> Weld has the following method to get the bindings from the
> InvocationContext:
>
> Set<Annotation> bindings = (Set<Annotation>)
> invocationContext.getContextData().get("org.jboss.weld.interceptor.bindings");
In fact, a more safe way is to use the Weld API, cast the invocation
context to org.jboss.weld.interceptor.WeldInvocationContext and use the
appropriate methods.
>
> But this is obviously non-standard.
Yes. There is already a spec issue:
https://issues.jboss.org/browse/CDI-468 but this would require a change
in interceptors spec.
>
> Is there a standard way to get the bindings? Perhaps getting hold of the
> Bean<T> that represents the current Interceptor?
You can inject a bean with scope @Dependent, qualifier @Default and type
Interceptor into any interceptor instance. However, this will not help
for @Nonbinding value members of an interceptor binding.
>
> Kind regards,
> Arjan Tijms
>
>
> _______________________________________________
> cdi-dev mailing list
> cdi-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/cdi-dev
>
> Note that for all code provided on this list, the provider licenses the code under the Apache License, Version 2 (http://www.apache.org/licenses/LICENSE-2.0.html). For all other ideas provided on this list, the provider waives all patent and other intellectual property rights inherent in such information.
>
--
Martin Kouba
Senior Software Engineer
Red Hat, Czech Republic
More information about the cdi-dev
mailing list