[cdi-dev] Adding / vetoing CDI extensions programmatically

Martin Kouba mkouba at redhat.com
Fri Oct 2 03:59:20 EDT 2015


Dne 1.10.2015 v 22:55 Romain Manni-Bucau napsal(a):
> Interesting, couldn't excludes supports it? when processing extensions
> we have the beans.xml model so extensions could be filtered this way, no?

No. beans.xml excludes are local (i.e. per bean archive). Extensions are 
global - per application.

>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> | Blog
> <http://rmannibucau.wordpress.com> | Github
> <https://github.com/rmannibucau> | LinkedIn
> <https://www.linkedin.com/in/rmannibucau> | Tomitriber
> <http://www.tomitribe.com>
>
> 2015-10-01 13:44 GMT-07:00 arjan tijms <arjan.tijms at gmail.com
> <mailto:arjan.tijms at gmail.com>>:
>
>     There's an existing issue for this:
>     https://issues.jboss.org/browse/CDI-157
>
>     The JSF EG is also really interested in this, for
>     https://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-1361 and
>     several other things.
>
>     Kind regards,
>     Arjan Tijms
>
>
>     On Thu, Oct 1, 2015 at 6:30 PM, Antonin Stefanutti
>     <antonin at stefanutti.fr <mailto:antonin at stefanutti.fr>> wrote:
>      > Hi CDI mates,
>      >
>      > I’ve been developing a couple of CDI extensions over the last
>     couple of
>      > years and been facing this recurrent situation:
>      > - I develop the extension against the latest CDI release version
>     (1.2 for
>      > the time being),
>      > - As the extension gets used, comes the requests to run the
>     extension in
>      > previous CDI versions,
>      > - As any real-world extensions heavily rely on the CDI SPI, they
>     never
>      > happen to be backward-compatible,
>      > - And that’s understandable that the end-users won’t upgrade its
>     runtime
>      > environment for just one extension.
>      >
>      > One option is to rewrite the extension against the oldest
>     required CDI
>      > version (generally 1.0 as a lot of people still use that version
>     as part of
>      > Java EE 6) by working around lacking functionalities from the CDI
>     SPI at the
>      > cost of code readability or even removed features that are
>     impossible to
>      > re-implement.
>      >
>      > To avoid that, it is obviously possible to create a separate
>     branch / module
>      > dedicated to porting the extension to the oldest possible CDI
>     version, but
>      > then comes the packaging / distribution problem:
>      > -  You assign different versions to the branches, unfortunately
>     that does
>      > not work for projects that include their own CDI extension into
>     the same
>      > codeline (like Apache Camel, JBoss Infinispan, …) as it doesn’t
>     make sense
>      > to impact the whole project versioning for one possible container
>     / runtime
>      > among others possible,
>      > - Or you create two artifacts / modules whose name (or
>     classifier) somehow
>      > contains the CDI compatible version.
>      >
>      > That’s not very ideal either, and in any case, that’s the end
>     user burden to
>      > make the decision which artifact to choose from a list that will
>     grow over
>      > time with CDI 2.0 and future CDI versions.
>      >
>      > Which leads to my point... As there exists a way to add / veto
>     annotated
>      > types and beans programmatically, one solution that will help
>     addressing the
>      > above problems, both for the extension developers and users,
>     would be to
>      > have the ability to add / veto extensions dynamically. That way,
>     multiple
>      > version / part of the extension could be packaged into a single
>     artifact and
>      > activated dynamically during the application initialisation phase
>     based on
>      > some runtime criteria, in my use case the CDI environment
>     version. The point
>      > here is not to discuss potential implementations, but we could
>     imagine
>      > having an AfterExtensionDiscovery of BeforeTypeDiscovery
>     lifecycle event
>      > from which adding or vetoing extensions would be possible, or some
>      > mechanisms in the beans.xml file to include / exclude an extension...
>      >
>      > So before discussing implementation details, I’d like your
>     opinion on that
>      > use case, whether it’s valid or other options exist.
>      >
>      > Thanks,
>      > Antonin
>      >
>      > _______________________________________________
>      > cdi-dev mailing list
>      > cdi-dev at lists.jboss.org <mailto: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.
>
>     _______________________________________________
>     cdi-dev mailing list
>     cdi-dev at lists.jboss.org <mailto: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.
>
>
>
>
> _______________________________________________
> 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
Software Engineer
Red Hat, Czech Republic


More information about the cdi-dev mailing list