Developer’s self-help guide to developing technology in addition to AJDT and AspectJ

Developer’s self-help guide to developing technology in addition to AJDT and AspectJ

These pages is meant to help any individual creating resources to extend or assist AJDT/AspectJ. Kindly subscribe to this page with any relevant records, such as instance laws by using the AJDT and/or AspectJ APIs.

This site is out of day. Our very own intention should update these pages for AJDT 1.6.1, but we now have maybe not had time for this yet. Kindly understand that a few of understanding about this web page may no lengthier end up being proper. For those who have any queries, please submit them to the mailing list ajdt-dev.


  • 1 getting crosscutting relationship facts from AJDT
  • 2 Collection Models in AJDT
    • 2.1 having the contents of an AJCompilationUnit
  • 3 Using the AspectJ AST parser
  • 4 recognized limits, pests, and outstanding issues
  • 5 The user interface hardware are required to make use of to drive the AspectJ compiler

Acquiring crosscutting partnership information from AJDT

If you find yourself establishing an eclipse plug-in and call for access to crosscutting ideas whenever a project is built, you can register a listener with AJDT. Their plug-in will have to be determined by org.eclipse.ajdt.core, org.eclipse.core.resources and org.eclipse.jdt.core, and org.aspectj.weaver. For the org.eclipse.ajdt.core plug-in there’s an IAdviceChangedListener program with one adviceChanged() technique.

Sign-up this because of the AJBuilder course in this way (within plug-in’s start() means for instance):

Currently (AJDT 1.6) that is known as after every create of an AspectJ venture (i.e. every *potential* suggestions modification). In the next release this might be enhanced becoming best called in the event that recommendations possess really changed. AJDT/UI uses this apparatus to revise the tangerine arrow graphics decorator.

Crosscutting suggestions can then end up being extracted from the AJProjectModelFacade class. Here’s an illustration with many pseudo-code you’ll be able to adjust:

Several notes concerning this:

  1. The API could have some small changes in tomorrow. Be sure to submit a note on ajdt-dev subscriber list if something about webpage is out of day.
  2. The AJProjectModelFacade item was a light entry to the AspectJ business. It can be valid through to the after that create. So, don’t shop them. Make use of them and dispose as needed.
  3. AJProjectModelFacade stuff merely incorporate data after the basic winning acquire. Possible call the possessModel() approach to see if an AspectJ unit exists when it comes down to task.
  4. Perhaps you have realized, obtain the relationship both in guidelines. Discover AJRelationshipManager for all the complete list of connections, to only require the relationship sort you’re interested in.
  5. IRelationship.getSourceHandle() and IRelationship.getobjectives() return chain that signify AspectJ aspect handles. You need the following AJProjectModelFacade solutions to become model items:
    • toProgramElement(sequence) — profits IProgramElement. From here you can acquire details about the pointcut, intertype element, or declare factor.
    • programElementToJavaElement(sequence) or programElementToJavaElement(IProgramElement) — comes back IJavaElement. From this point you can hook into JDT tooling.
  6. There’s absolutely no needs to join up an advice changed listener. You can aquire accessibility the crosscutting model whenever you want (so long as your panels has already established a successful develop) with the next laws:

Collection Devices in AJDT

JDT brings compilation products (cases of ICompilationUnit) for .java records. AJDT brings collection products for .aj files, that are instances of AJCompilationUnit (which implements ICompilationdevice). The course AJCompilationUnitManager (into the org.eclipse.ajdt.core plug-in) includes some useful strategies concerning this, eg:

From an AJCompilationUnit you can easily receive numerous architectural details such as for example getAllTypes(). The principal sort for «.aj» files is normally an aspect, which will be symbolized by the AspectElement class, containing aspect-specific means such as for example getPointcuts() and getAdvice(). These return more aspect-specific elements including PointcutElement and AdviceElement.

Since AJDT 1.6.2 for Eclispe 3.4, we utilize the Eclipse weaving service to weave into JDT. One set of join things that are encouraged are the ones connected with the creation of CompilationUnit stuff. In the event the document possess is *.aj document, AJCompilationUnit is made as opposed to a typical Java Compilationproduct.

Acquiring the belongings in an AJCompilationUnit

Because JDT anticipates that most origin it functions with does work coffee signal, JDT does not work better with AspectJ. To get around this, AJCompilationUnits uphold two buffers containing origin contents. The very first is a java compatible buffer plus the second could be the initial articles buffer. The coffee compatible buffer is the buffer that is came back automatically when AJCompilationUnit.getContents() is named. This buffer contains the AspectJ laws with all aspect-specific syntax stripped down. The initial information buffer contains (just like you would count on) the first contents from the file.

Eg when the initial contents buffer appears like:

the coffee appropriate buffer is

Observe that the source areas of identifiers are the same in both buffers. This means that guide finding and hyperlinking really works as you expected.

Should you decide need using the initial material of an AspectJ CompilationUnit ajUnit, you are able to do the following:

What this technique really does requests for the AJCU to briefly change its buffer into AJ buffer through the Java buffer. It’s always best to do this in a synchronized block so that you will don’t chance some other posts coming by and inadvertently utilising the incorrect buffer (AJDT by itself does not incorporate a synchronized block because of this, it should).

Utilising the AspectJ AST parser

Basic example, obtained from bug 88861

Make the aforementioned and manage it:

Identified limitations, bugs, and outstanding dilemmas

Restriction: There is presently no AST service for solving type bindings: insect 146528

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *