Equinox Aspects 1.0 M3 - New and Noteworthy

These days the Equinox Aspects incubator project is mostly working on improving stability and reliability.


General


New implementation of supplementer mechanism With this milestone build we introduce a new implementation of the supplementer mechanism. This is an implementation change only, there are no changes required by users of Equinox Aspects. This new implementation makes use of a new hook that Equinox offers since 3.4. Therefore Equinox Aspects requires from now on Equinox 3.4.

Bugfixing M3 fixes a number of bugs. Here is an overview:
  • fixed: equinox aspects not weaving against OSGI head (bug 251964)
  • fixed: deadlock when using equinox aspects and spring dm extender (bug 249613)
  • fixed: supplementing via Require-Bundle may conflict with "uses" directive (bug 248826)
  • fixed: replace require-bundle with import-package for weaving.aspectj bundle (bug 248046)
  • fixed: change aspect activation from installed to resolved state (bug 247718)
  • fixed: avoid weaver initialization until really needed (bug 243685)
  • fixed: replace the manifest rewriting with the new hook (bug 229863)

Weaving


More on OSGi dynamics for weaving services We are still struggling a bit with dynamically enabling the weaving service itself and possibly re-weaving bundles that need aspect weaving from that point on time. This works nicely in a standard OSGi setting but causes problems for RCP apps, for example. We try to solve this within the M4 timeframe. Until those problems are really solved, we have disabled the dynamics for the weaving service be default. This makes it easy to use Equinox Aspects for general RCP apps or the IDE itself. If you would like to enable the dynamics for the weaving service, you can set the system property "equinox.weaving.service.dynamics=true". Note: This has nothing to do with dynamics for aspect bundles. This is still working nicely and enabled by default.

Aspect bundles need to be resolved In the past aspects bundles were recognized by the system if the bundle was installed. From now on aspect bundles need to be resolved before supplementing or aspect information are taken into account by Equinox Aspects. This makes dynamics of aspect bundles feel a lot more natural and OSGi-like.

Caching


Minor caching performance improvements We did some minor tweeks to the initialization of weaver objects to save time for bundles that are loaded completely from the cache. The cache is now very close to the performance of running without aspect weaving at all.

The above features are just the ones that are new since the previous milestone build. Summaries for earlier 1.0 milestone builds: