These pages is intended to assist people establishing equipment to give or work with AJDT/AspectJ. Kindly play a role in this page with any related ideas, like instance rule utilizing the AJDT and/or AspectJ APIs.
This site is out of big date. Our very own purpose will be update these pages for AJDT 1.6.1, but we now have perhaps not got times with this yet. Kindly keep in mind that several of what’s with this web page may no lengthier become appropriate. When you yourself have any questions, please deliver them to the mailing list ajdt-dev.
- 1 buying crosscutting connection details from AJDT
- 2 Collection Units in AJDT
- 2.1 obtaining items in an AJCompilationUnit
- 3 with the AspectJ AST parser
- 4 Known restrictions, bugs, and exceptional dilemmas
- 5 The software resources are expected to use to-drive the AspectJ compiler
Obtaining crosscutting partnership details from AJDT
If you should be establishing an eclipse plugin and require accessibility crosscutting details whenever a project is made, you are able to subscribe a listener with AJDT. The plug-in will have to depend on org.eclipse.ajdt.core, org.eclipse.core.resources and org.eclipse.jdt.core, and org.aspectj.weaver. In org.eclipse.ajdt.core plug-in there is certainly an IAdviceChangedListener software with an individual adviceChanged() approach.
Enter this making use of the AJBuilder class like this (in your plug-in’s start() means for instance):
At this time (AJDT 1.6) that is labeled as after every build of an AspectJ job (i.e. every *potential* suggestions modification). In a future launch this might be enhanced as merely known as when the advice enjoys really changed. AJDT/UI utilizes this method to update the lime arrow picture decorator.
Crosscutting facts are able to feel obtained from the AJProjectModelFacade lessons. Listed here is a good example with pseudo code you’ll be able to adjust:
A number of notes about this:
- The API could have some minor alterations in the long term. Be sure to deliver an email for the ajdt-dev email list if everything with this page may be out of go out.
- The AJProjectModelFacade object try a lightweight access in to the AspectJ community. It is simply valid before the subsequent develop. Very, cannot shop them. Use them and dispose as required.
- AJProjectModelFacade objects best incorporate data following earliest profitable build. You can contact the hasModel() method to see if an AspectJ unit is out there for project.
- As you can tell, you can get the relationship in both information. Read AJRelationshipManager when it comes to full variety of relations, to just ask for the connection type you are interested in.
- IRelationship.getSourceHandle() and IRelationship.getgoals() return Strings that represent AspectJ element handles. You need to use listed here AJProjectModelFacade strategies to convert to model items:
- toProgramElement(sequence) — returns IProgramElement. From here you are able to receive details about the pointcut, intertype component, or declare component.
- programElementToJavaElement(sequence) or programElementToJavaElement(IProgramElement) — comes back IJavaElement. From this point you can easily hook into JDT tooling.
- There isn’t any need to join up a guidance changed listener. You can acquire access to the crosscutting unit at any time (so long as the project has experienced an effective create) with the preceding laws:
Collection Units in AJDT
JDT brings compilation units (cases of ICompilationUnit) for .java documents. AJDT brings collection products for .aj data files, that are instances of AJCompilationUnit (which implements ICompilationproduct). The course AJCompilationUnitManager (in the org.eclipse.ajdt.core plug-in) have some beneficial practices relating to this, particularly:
From an AJCompilationUnit you can get different structural records instance getAllTypes(). The main type for “.aj” data files is typically a piece, which is displayed of the AspectElement class, containing aspect-specific methods such as for example getPointcuts() and getAdvice(). These return more aspect-specific characteristics like PointcutElement and AdviceElement.
Since AJDT 1.6.2 for Eclispe 3.4, we utilize the Eclipse weaving service to weave into JDT. One pair of join points which happen to be guided are the ones about the production of CompilationUnit objects. In the event that file has actually is actually *.aj document, AJCompilationUnit is established instead of a regular coffee collectionUnit.
Acquiring the contents of an AJCompilationUnit
Because JDT wants that provider it truly does work with is true coffee rule, JDT does not work well with AspectJ. In order to get around this, AJCompilationUnits keep two buffers which contain origin information. The first is a java suitable buffer additionally the 2nd will be the earliest content material buffer. The coffee appropriate buffer may be the buffer that’s returned automagically whenever AJCompilationUnit.getContents() is named. This buffer provides the AspectJ laws with aspect-specific syntax stripped away. The initial contents buffer contains (when you would expect) the original contents from the file.
Like if the original content material buffer appears like:
the coffee suitable buffer is
Notice that the origin areas of identifiers are identical in buffers. This ensures that guide choosing and hyperlinking really works needlessly to say.
If you need dealing with the first information of an AspectJ CompilationUnit ajdevice, you can do the following:
Exactly what this process really does requests the AJCU to briefly turn the buffer to the AJ buffer through the Java buffer. It is best to try this in a synchronized block so that you never exposure various other posts coming by and inadvertently making use of the wrong buffer (AJDT it self does not utilize a synchronized block because of this, but it should).
With the AspectJ AST parser
Standard instance, obtained from bug 88861
Make these and operate it:
Understood limitations, pests, and outstanding problems
Constraint: there was at this time no AST assistance for solving type bindings: bug 146528