Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Equinox Weaving QuickStart"

(New page: Equinox Weaving Quick Start Guide Weaving Quick Start)
 
(Cobbled together a brief how-to)
Line 1: Line 1:
Equinox Weaving Quick Start Guide
+
{{note | This page replaces the out-of-date [http://www.eclipse.org/equinox/incubator/aspects/equinox-aspects-quick-start.php "Equinox Aspects Quick-Start Guide"]}}
 +
 
 +
As of Eclipse Juno (for 2012), these are the steps to enable Equinox Weaving with AspectJ, as cribbed together from various sources.  Note that the <tt>aop.xml</tt> file is no longer necessary.
 +
 
 +
*Install the AspectJ Development Tooling (AJDT) and Equinox Weaving from the [http://eclipse.org/ajdt/downloads/ AJDT Downloads].
 +
*Define your aspect(s) in a bundle.
 +
*Configure your bundle's MANIFEST.MF to (i) export its aspects, and (ii) specify the bundles that its aspects advise. The former is done by adding a parameter on the <tt>Export-Package</tt> header. The latter is done through the <tt>Eclipse-SupplementBundle</tt> header. For example, a bundle with an aspect swing.edt.EdtRuleChecker, advising bundles com.example.core and com.example.ui would specify:
 +
<pre>Export-Package: swing.edt;aspects="EdtRuleChecker"
 +
Eclipse-SupplementBundle: com.example.core,com.example.ui
 +
</pre>
 +
*Add the following bundles to your launch configuration
 +
**org.aspectj.weaver
 +
**org.eclipse.equinox.weaving.aspectj
 +
**org.eclipse.equinox.weaving.caching
 +
**org.eclipse.equinox.weaving.hook
 +
*Ensure org.eclipse.equinox.weaving.aspectj is auto-started at, say, level 2
 +
*Add the following VM argument to instruct OSGi to load the weaving hooks:
 +
<pre>-Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook
 +
</pre>
 +
 
 +
Basically, <em>Eclipse-BundleSupplement</em> effectively causes the specified bundles to import the packages that are exported by the aspects bundle.
 +
 
 +
Aspects can be defined as opt-in (bundles have to explicitly ask for the aspects to be installed) or opt-out (bundles must explicitly opt-out from weaving).  Opt-out is the default policy.  For example, to change the policy to opt-in:
 +
<pre>
 +
Export-Package: swing.debug; aspects="EdtRuleChecker"; aspect-policy:=opt-in
 +
</pre>
 +
 
 +
A bundle can explicitly accept or forbid aspects through the <tt>apply-aspects</tt> parameter on <tt>Import-Package</tt>:
 +
<pre>
 +
Import-Package: swing.debug; apply-aspects:=false
 +
</pre>
 +
<tt>true</tt> indicates that aspects should be woven into the bundle (the default), whereas <tt>false</tt> indicates that aspects should not be applied.  These parameters override  any supplying bundle's <tt>aspect-policy</tt>.
 +
 
 +
For debugging output, add the following VM arguments:
 +
<pre>-Daj.weaving.verbose=true
 +
-Dorg.aspectj.weaver.showWeaveInfo=true
 +
-Dorg.aspectj.osgi.verbose=true
 +
</pre>
 +
 
 +
== Sources ==
 +
 
 +
* Martin Lippert (2009). [http://www.martinlippert.org/events/JAX2009-WhatsNewInEquinoxAspects.pdf What's New in Equinox Aspects]
 +
* James Sugrue (2010). [http://java.dzone.com/articles/aspect-oriented-programming Aspect Oriented Programming for Eclipse Plug-ins]
 +
* [[JDT_weaving_features | JDT Weaving Features]]
 +
 
 +
<references />
 +
 
  
 
[[Category:Equinox|Weaving Quick Start]]
 
[[Category:Equinox|Weaving Quick Start]]

Revision as of 16:01, 21 December 2011

Note.png
This page replaces the out-of-date "Equinox Aspects Quick-Start Guide"


As of Eclipse Juno (for 2012), these are the steps to enable Equinox Weaving with AspectJ, as cribbed together from various sources. Note that the aop.xml file is no longer necessary.

  • Install the AspectJ Development Tooling (AJDT) and Equinox Weaving from the AJDT Downloads.
  • Define your aspect(s) in a bundle.
  • Configure your bundle's MANIFEST.MF to (i) export its aspects, and (ii) specify the bundles that its aspects advise. The former is done by adding a parameter on the Export-Package header. The latter is done through the Eclipse-SupplementBundle header. For example, a bundle with an aspect swing.edt.EdtRuleChecker, advising bundles com.example.core and com.example.ui would specify:
Export-Package: swing.edt;aspects="EdtRuleChecker"
Eclipse-SupplementBundle: com.example.core,com.example.ui
  • Add the following bundles to your launch configuration
    • org.aspectj.weaver
    • org.eclipse.equinox.weaving.aspectj
    • org.eclipse.equinox.weaving.caching
    • org.eclipse.equinox.weaving.hook
  • Ensure org.eclipse.equinox.weaving.aspectj is auto-started at, say, level 2
  • Add the following VM argument to instruct OSGi to load the weaving hooks:
-Dosgi.framework.extensions=org.eclipse.equinox.weaving.hook

Basically, Eclipse-BundleSupplement effectively causes the specified bundles to import the packages that are exported by the aspects bundle.

Aspects can be defined as opt-in (bundles have to explicitly ask for the aspects to be installed) or opt-out (bundles must explicitly opt-out from weaving). Opt-out is the default policy. For example, to change the policy to opt-in:

Export-Package: swing.debug; aspects="EdtRuleChecker"; aspect-policy:=opt-in

A bundle can explicitly accept or forbid aspects through the apply-aspects parameter on Import-Package:

Import-Package: swing.debug; apply-aspects:=false

true indicates that aspects should be woven into the bundle (the default), whereas false indicates that aspects should not be applied. These parameters override any supplying bundle's aspect-policy.

For debugging output, add the following VM arguments:

-Daj.weaving.verbose=true
-Dorg.aspectj.weaver.showWeaveInfo=true
-Dorg.aspectj.osgi.verbose=true

Sources


Copyright © Eclipse Foundation, Inc. All Rights Reserved.