On Fri, Mar 26, 2010 at 1:28 PM, Dan Allen <dan.j.allen(a)gmail.com> wrote:
On Thu, Mar 25, 2010 at 11:25 PM, Nicklas Karlsson <nickarls(a)gmail.com
> wrote:
> Perhaps I'm missing something here but can't the ProcessModule event from
> 11.5.5 fix this with List<Class> getInterceptors()?
Two things. First, the ProcessModule did not make CDI 1.0, but was added
later. I'm not sure if the version containing it has been "released" or
approved. Second, that only gets you the interceptors. Lincoln and I were
tricked by that a couple of times...what we need is to modify the *enabled
* interceptors. That's where we keep getting bitten.
Oops! I was wrong. It does give you read/write access to the enabled
interceptors. Okay, so this would be a possibility to either add
interceptors or warn the developer to add them. But this listener would have
to still know about any and all interceptors that need to be enabled (if the
modules beans.xml is empty as we want it to be).
So we could provide a seam-interceptor-enabler.jar that would enable any
Seam interceptors on the classpath. We would only provide one such JAR file.
This is the right way to go. It only requires that we depend on the latest
version of the spec, which Weld doesn't yet support fully (not ProcessModule
at least).
Therefore, we have two possible ways forward. The developer lists out the
interceptors or we provide an enabler JAR. But remember, observer call order
is not portable, so if you have another enabler JAR from another extension
library, then how to order them gets tricky. The enabler really needs to be
a closed system.
-Dan
--
Dan Allen
Senior Software Engineer, Red Hat | Author of Seam in Action
Registered Linux User #231597
http://mojavelinux.com
http://mojavelinux.com/seaminaction
http://www.google.com/profiles/dan.j.allen