Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
JDT weaving implementation
For more information on the JDT Weaving plugin and how to install it, see JDT weaving features. This plugin uses Equinox Aspects to weave into the org.eclipse.jdt.core, org.eclipse.jdt.ui, and org.eclipse.jdt.debug.core plugins. This allows AJDT to integrate more deeply with JDT.
The JDT Weaving plugin contains four aspects. Three of these aspects are exposed as extension points and are fairly general in the sense that editors for languages besides AspectJ could gain benefit from them. The fourth aspect provides AspectJ-specific functionality and will be explained later.
In order to receive a callback from any of the aspects, a plugin extends the associated extension point and implements the associated interface.
CompilationUnitProvider
Extending this extension point allows a plugin to be part of the IJavaElement hierarchy. By registering a file extension with a compilation unit provider, a plugin can use its implementation (a subclass of CompilationUnit), rather than default org.eclipse.jdt.internal.core.CompilationUnit.
SourceProvider
Extending this extension point allows a plugin to contribute to Java's indexing mechanism. Once this happens, the Java-like program elements (such as aspects, pointcuts, etc.) can be indexed just like regular Java code. This means that the Java-like code can be searched for in the Java search pane, and can appear in the Open Type dialog.
The source transformer must provide a Java-compatible version of the source code that is syntactically correct. More information on how to do this later.
ImageDescriptorSelector
This extension point allows plugins to provide their own image descriptors for certain kinds of objects. This allows a plugin to, for example, show custom icons in search results, type hierarchies, and in other places that a plugin typically does not have access to.
ITDAwareness
This aspect is not exposed as a pointcut and is not meant for external consumption. This aspect provides intertype declation awareness across the Eclipse framework.