123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 |
- = AJDT Core work items
-
- _Last updated: 2004-05-17 by acolyer_
-
- This document details what needs to be done in ajdt.core and
- shadows/org.eclipse.jdt.core to provide full integration with the eclipse
- JDT model and to support AJDT.
-
- == Unit testing
-
- Determine how we can write efficient and comprehensive unit tests for all
- that follows given the difficult swizzling etc. involved in creating a working
- plugin.
-
- == Builder integration
-
- This work package enables the building of AspectJ projects in batch and
- incremental mode, with problems found during compilation reported back to the
- tasks view. It also supports management of the Aspectjrt.jar classpath variable
- for AspectJ projects.
-
- A new subclass of JavaBuilder, AspectJBuilder has been introduced. This
- delegates to AjIncrementalImageBuilder and AjBatchImageBuilder to perform
- builds.
-
- . Basic builder support: Builds from source only, outputs to project
- specified output directories, problem reporting integration.
-
- . Add support for inpath, outjar, aspectpath in building.
- This task depends on IAspectJProject and implementation being able to
- manage and persist AspectJ specific path elements (see xref:java-model-extension[]).
- ** batch mode
- ** incremental mode (requires delta processing)
-
- . Aspectjrt classpath variable
-
- == Reconciling & structure building
-
- This work package enables updating of structure based views as the contents of
- an editor buffer is edited, and reporting of warnings and errors (early error
- annotations) in the editor buffer.
-
- When a CompilationUnit is asked to build its structure, it creates a
- CompilationUnitStructureRequestor which is fed structure information by a
- SourceElementParser (see 4). It also creates a new CompilationUnitProblemFinder
- (Compiler subclass) and compiles the unit with it to detect any problems.
-
- . Determine how to build AjCompilerAdapter for CompilationUnitProblemFinders
- (which are created outside of AspectJBuilder). This involves where and how
- BcelWorld etc. are managed for the project.
-
- . As changes are made in an editor buffer, a CompilationUnitResolver continually
- compiles the source and reports problems. This is another compiler subclass, and
- we also need to determine how to build an AjCompilerAdapter for it.
-
- [[java-model-extension]]
- == Java Model Extension
-
- This work package is a needed foundation for almost any UI function that works
- with program structure or elements (e.g. to display AspectJ content in an
- outline view).
-
- This requires the creation of AspectJ element interfaces in the IJavaElement
- hierarchy, and then corresponding classes that implement them.
-
- . In the package org.aspectj.ajdt.core :
-
- ** IAspectJModelExtension (extends org.eclipse.jdt.core.IModelExtension)
- ** IAspectJElement (root interface for aspectj elements)
- ** IAjType (extends IType, adds isAspect() )
- ** IAspect (extends IAjType)
- ** IAdvice
- ** IPointcut
- ** IDeclareErrorOrWarning
- ** IDeclareParents
- ** IDeclareSoft
- ** IInterTypeField
- ** IInterTypeMethod
- ** IAspectJProject
-
- . In the package org.aspectj.ajdt.internal.core, for each interface above,
- add SourceXXX and SourceXXXElementInfo classes.
-
- . In the package org.aspectj.ajdt.core.jdom, add classes IDOMxxx for each
- interface in (1), plus implementation classes and SimpleDOMBuilder extension.
-
- . In the package org.aspectj.ajdt.internal.compiler.env, add an
- IGenericXXX and ISourceXXX interface for each element in (1), which are
- implemented by the classes in (2).
-
- == Source Element Parsing (Java Model creation)
-
- This work package populates the structure model on which the outline views
- etc. depend.
-
- . Extend ISourceElementRequestor with AspectJ AST nodes
-
- . Extend SourceElementParser to implement appropriate requestor callbacks
-
- . The 5 implementors of ISourceElementRequestor need updating to do the
- appropriate thing with AspectJ elements:
-
- ** CompilationUnitStructureRequestor (for outline view etc.)
- ** SimpleDOMBuilder (used by portions of UI that generate code - refactoring? what else?)
- ** SourceElementRequestorAdapter
- ** SourceIndexRequestor (used by indexer, for searching and type hierarchy)
- ** SourceMapper (used when attaching source to a jar file)
-
- . This seems to be the point at which we need to implement the
- IExtensionFactory so that we can cleanly create Aj versions of the above
- without polluting the JDT (see UI design of the same).
-
- == DOM extensions
-
- This work package enables the source code of an aspectJ program to be
- modelled as a structured document. Which user-interface actions will be
- broken without this? (Refactoring?)
-
- . In the package org.aspectj.jdt.core.dom, add counterparts to the AspectJ nodes
- already defined in org.aspectj.internal.compiler.ast (not needed first time round?)
- . Extend IDocumentElementRequestor interface
- . Extend DocumentElementParser
- . Extend DOMBuilder
- . Extend DOMFactory
- . Add CreateAspectJXxxOperation classes
-
- == Code completion / code assist
-
- This work package enables Ctrl+Space in an editor to offer completions on
- pointcut names, aspect names, and inter-type declared methods and fields.
-
- . Extend ICompletionRequestor interface
- . Extend ICompletionRequestor implementors (there are 9, 7 of which are anonymous inner classes)
- . Extend CompletionEngine with pointcut
- . Extend ISelectionRequestor with pointcut
- . Investigate changes to SelectionEngine
- . Extend CompletionKeyword family
- . Add CompletionOnPointcut
- . Investigate changes to CompletionParser and CompletionScanner classes
- . Investigate changes in AssistParser
- . Extend keywords in 'impl' package
- . Add SelectionOnxxx classes for AspectJ in 'select' package
- . Investigate changes to SelectionParser and SelectionScanner
-
- == Type Hierarchy
-
- This work package enables the type hierarchy view to correctly display the
- hierarchy for aspects.
-
- . Override hierarchy methods in IAjType
- . Extend ChangeCollector
- . Extend TypeHierarchy
- . Extend HierarchyBinaryType
-
- == ".aj" File extension
-
- This work package ensures that AJDT treats .java and .aj files as equivalent.
-
- . update SuffixConstants class
- . update Util class
-
- == Java Model inclusion
-
- This work package ensures that all types in pure Java projects are visible
- inside the AspectJ model.
-
- Extend model generation logic to look at project that have either the
- AspectJ nature, OR the Java nature.
-
- == Class formatting and dissassembling
-
- This work package enables 'editing' of a .class file to present a view that
- is aware of AspectJ elements (rather than seeing the generated aj-synthetic
- stuff etc.).
-
- (can be deferred for now)
-
- . Make jdt.internal.compiler.classfmt aware of aj-synthetic
- . Make "" understand aj-attributes for pointcut, advice etc.
- . Extend Field and MethodInfo with isAjSynthetic()
- . Extend jdt.internal.core.util.Dissassembler for aspectj
-
- == Quick-fix support
-
- This work package enables quick fix suggestions to be made for AspectJ elements.
-
- . Extend ICorrectionRequestor interface
- . Update implementors (in UI)
-
- == Code formatting
-
- This work package ensures that formatting AspectJ source doesn't mess up
- pointcut declarations etc.
-
- . Update implementation of DefaultCodeFormatter for AspectJ
- . Extend CodeFormatterVisitor
-
- == Searching
-
- This work package enables searching for AspectJ elements in the search dialog and APIs.
-
- . Expand IJavaSearch constants for Aj
- . Expand SearchPattern for Aj
- . Changes to search algorithm required??
- . Extend ReferenceInfoAdapter
- . Extend IIndexSearchRequestor with aj types
- . Extend IndexSearchAdapter with aj types
- . Extend AbstractIndexer with aj types
- . Extend BinaryIndexer with aj types
- . Extend IIndexConstants
- . Extend SourceIndexRequestor (see also 4.3)
- . Add xxxLocator and Pattern classes for aj elements?
-
- == Sorting
-
- This work package enables the correct sorting of AspectJ program elements
- when an outline view is set to 'sorted' mode rather than showing elements in
- their declared order (I think!).
-
- . Extend SortElementBuilder
- . Extend SortJavaElement
-
- == Cross-references
-
- This work package enables the cross-reference view and visualiser to
- correctly display the cross-cutting structure of an aspectj program.
-
- . Create cross-reference map on batch build (1 map for whole workspace)
- . Maintain cross-reference map on incremental build
- . Add interfaces to retrieve cross-references for AspectJ elements
- . Implement IXReferenceProvider
-
- == Name lookups
-
- I'm not sure what user interface features need this...
-
- . Extend IJavaElementRequestor
- . Extend SelectionRequestor, SingleTypeRequestor
- . Investigate other implementors
-
- == Version upgrade
-
- . port to Eclipse 3.0 M9
- . port to Eclipse 3.0 final
-
- == JDT Debug
-
- . Extend jdt.internal.debug.core.hcr.JavaParseTreeBuilder ?
|