[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [equinox-dev] Integrating AspectJ Load-Time Weaving into OSGi/Eclipse

Hi Matthew,

I think I now understand the goal of your manifest headers better. Thanks for that. Just some more questions to ensure that I have understood it correctly. ;-)

To emulate the AJEER setting I would need to put an aspect into a bundle and define the header somehow like this:

Supplement-Bundle: *

Would this mean that the aspect would be woven with every other class in all bundles (if the aop.xml file allows this)?

And a second question regarding the co-opt mechanism:
If I define an aspect inside a bundle A which advices all implementations of a specific interface (which is defined in another bundle) I would need to define the affected bundles via the supplement headers within the manifest of the bundle that contains the aspect. Is this correct? And if someone contributes a new bundle (not known to the aspect bundle deleveloper) I would need to adjust the supplement definition to include this bundle for the weaving of that aspect?


P.S. and BTW: How does the supplement mechanism relates to the buddy mechanism from your point of view?

They are operating at different levels of abstraction, require different
skill levels and can be used by different people.

The pointcut is used by the aspect author. Whoever deploys an aspect bundle
may not have the necessary skill or even the source code to modify the
scope of an aspect. They could however customize the behaviour using
aop.xml but it doesn't understand bundles only classes and packages: to
determine which bundles to affect they would have to inspect which packages
they defined. Using the Supplements mechanism someone who understands OSGi
can easily tailor and aspect bundle to only affect the desired bundles in
the system.

Matthew Webster
AOSD Project
Java Technology Centre, MP146
IBM Hursley Park, Winchester,  SO21 2JN, England
Telephone: +44 196 2816139 (external) 246139 (internal)
Email: Matthew Webster/UK/IBM @ IBMGB, matthew_webster@xxxxxxxxxx

Martin Lippert <lippert@xxxxxxx>@eclipse.org on 20/09/2005 22:26:27

Please respond to Equinox development mailing list

Sent by:    equinox-dev-bounces@xxxxxxxxxxx

To: Equinox development mailing list <equinox-dev@xxxxxxxxxxx> cc: Subject: Re: [equinox-dev] Integrating AspectJ Load-Time Weaving into OSGi/Eclipse


LTW can be used weave aspects that are declared in packages already
imported or required by a bundle: one of the goals of this approach is to
make the use of aspects as similar to classes as possible. However the
side-affect of weaving is a new dependency on the (small) AspectJ runtime
which must be added to the "class space": using Require-Bundle semantics
allows aspect bundles to transparently re-export the necessary packages.
Furthermore capabilities in completely new packages can also be
The Supplement-Bundle/Importer/Exporter is both a configuration mechanism
and a means for the resolver to extend the set of dependencies for a
bundle. In the same way a bundle provider selects classes through
Import-Package or Require-Bundle header an aspect bundle provider selects
the target bundles with a Supplement header. WRT it being hard we have a
working version ;-).

Could you help me here? I think I am a bit confused about the point where the possibly affected target classes/bundles are defined... So basically the question is: What is the relation between pointcuts, the weaver options in the aop.xml file and the supplement definitions?



_______________________________________________ equinox-dev mailing list equinox-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/equinox-dev

_______________________________________________ equinox-dev mailing list equinox-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/equinox-dev

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature