On Fri, Apr 16, 2010 at 10:55, Caleb James DeLisle <[email protected]> wrote: > > > Vincent Massol wrote: >> Hi devs, >> >> I've been researching what it would take to be able to support the Extension >> Manager use case regarding components isolation and dependency versioning. >> I won't go over the details of all I've researched (you can ask questions >> for that). I'm just proposing a series of steps and a vision of the future >> for our component model. >> >> If you're interested in the topic I would recommend that you read the Weld >> tutorial on CDI: >> docs.jboss.org/weld/reference/1.0.0/en-US/html_single/ >> >> Here are the steps I'm willing to work on and implement. >> >> Step 1: timeframe from now: 1 month >> * Use JSR330 annotations > +1 this looks like it is necessary since these annotations are apparently > used by JSR299 and JSR330 and > are almost exactly the same as Guice's API. > >> >> Step 2: timeframe from now: 1 month >> * Do a POC of integrating xwiki-component with OSGi (as a >> xwiki-component-osgi module). >> - No versioning management yet. >> - Need to use a maven osgi plugin to generate Manifest files from the POMs >> * Revise further steps based on result from Step 2. >> >> Step 3: timeframe from now: 2 months >> * If step 2 is successful add what's needed to the XWiki Component API to >> perform generic lookup: CM.lookup(Class, Properties) where Properties is a >> set of properties registered with the component. It would contain the role >> hint and the version for example. Also add annotations for specifying >> dependency version ranges. >> >> Note: After step 3 we have the prereqs for the Extension Manager done. The >> other steps below are improvements and steps to put us in the standards >> direction. >> >> Step 4: timeframe from now: 6 months-2 years >> * When CDI (JSR299) has taken over the world (ie several DI frameworks >> migrate to it, it becomes a JavaSE de facto standard at least), migrate to >> it. We need 2 features not in the spec right now: > Why JSR299 over Guice API? > >> - support for dynamic bean registration >> - ability to implement CDI over OSGi > Why CDI over OSGi? One package can't do all that is needed?
JSR299 is only an API you need something to implement it. > >> * Work with the Weld dev team to add support for those 2 items above. >> They're interested to implement it if we help them and if these 2 items get >> done relatively quickly we could migrate to CDI earlier than the timeframe >> above >> * In the meantime we can monitor it carefully to see its progress and we >> could start migrating to it slowly. Some ideas: >> - use the CDI annotations instead of the xwiki-specific ones for the binding >> part >> - introduce new concepts that comes from CDI: decorators, interceptors, >> producers >> - refactor our observation module to use the CDI event model >> >> Step 5: timeframe for now: 2-4 years >> * When JSR294 is approved and final (will require at least JDK 7, so XWiki >> needs to be on JDK7 at least for this, so that's a few years in the >> future...) migrate to CDI over JSR294 over (Jigsaw, OSGi). The good part is >> that since we would be using CDI we won't need to change much in our code to >> do that. >> >> WDYT? >> >> Thanks >> -Vincent >> >> Links: >> - Weld/JSR299: docs.jboss.org/weld/reference/1.0.0/en-US/html_single/ >> - Jigsaw: openjdk.java.net/projects/jigsaw/ >> - JSR330: >> atinject.googlecode.com/svn/trunk/javadoc/javax/inject/package-summary.html >> - JSR294: See description on openjdk.java.net/projects/jigsaw/ >> _______________________________________________ >> devs mailing list >> [email protected] >> http://lists.xwiki.org/mailman/listinfo/devs >> > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Thomas Mortagne _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

