]> source.dussan.org Git - aspectj.git/commitdiff
to do list for building the 'ajdt.core' part of AJDT.
authoracolyer <acolyer>
Wed, 12 May 2004 16:08:37 +0000 (16:08 +0000)
committeracolyer <acolyer>
Wed, 12 May 2004 16:08:37 +0000 (16:08 +0000)
docs/developer/ajdt/ajdt.core.workitems.txt [new file with mode: 0644]

diff --git a/docs/developer/ajdt/ajdt.core.workitems.txt b/docs/developer/ajdt/ajdt.core.workitems.txt
new file mode 100644 (file)
index 0000000..92ae2f8
--- /dev/null
@@ -0,0 +1,255 @@
+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.
+
+0) Unit testing
+=============================================================================
+0.1) 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.
+
+1) 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. 
+
+1.1) Basic builder support - builds from source only, outputs to project
+specified output directories, problem reporting integration.
+
+1.2) 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 3).
+  1.2.1) batch mode
+  1.2.2) incremental mode (requires delta processing)
+  
+1.3) Aspectjrt classpath variable
+
+2) 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.
+
+2.1) 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.
+
+2.2) 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.
+
+3) 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.
+
+3.1) 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
+
+3.2) In the package org.aspectj.ajdt.internal.core, for each interface above, 
+add SourceXXX and SourceXXXElementInfo classes.
+
+3.3) In the package org.aspectj.ajdt.core.jdom, add classes IDOMxxx for each
+interface in 3.1., plus implementation classes and SimpleDOMBuilder extension.
+
+3.4) In the package org.aspectj.ajdt.internal.compiler.env, add an 
+IGenericXXX and ISourceXXX interface for each element in 3.1 (these are 
+implemented by the classes in 3.2).
+
+4) Source Element Parsing (Java Model creation)
+=============================================================================
+
+This work package populates the structure model on which the outline views
+etc. depend. 
+
+4.1) Extend ISourceElementRequestor with AspectJ AST nodes
+
+4.2) Extend SourceElementParser to implement appropriate requestor callbacks
+
+4.3) 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)
+
+4.4) 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).
+
+5) 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?)
+
+5.1) 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?)
+5.2) Extend IDocumentElementRequestor interface
+5.3) Extend DocumentElementParser
+5.4) Extend DOMBuilder
+5.5) Extend DOMFactory
+5.6) Add CreateAspectJXxxOperation classes
+
+6) 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.
+
+6.1) Extend ICompletionRequestor interface
+6.2) Extend ICompletionRequestor implementors (there are 9, 7 of which are
+anonymous inner classes)
+6.3) Extend CompletionEngine with pointcut
+6.4) Extend ISelectionRequestor with pointcut
+6.5) Investigate changes to SelectionEngine
+6.6) Extend CompletionKeyword family
+6.7) Add CompletionOnPointcut
+6.8) Investigate changes to CompletionParser and CompletionScanner classes
+6.9) Investigate changes in AssistParser
+6.10) Extend keywords in 'impl' package
+6.11) Add SelectionOnxxx classes for AspectJ in 'select' package
+6.12) Investigate changes to SelectionParser and SelectionScanner
+
+7) Type Hierarchy
+=============================================================================
+This work package enables the type hierarchy view to correctly display the
+hierarchy for aspects.
+
+7.1) Override hierarchy methods in IAjType
+7.2) Extend ChangeCollector
+7.3) Extend TypeHierarchy
+7.4) Extend HierarchyBinaryType
+
+8) ".aj" File extension
+=============================================================================
+This work package ensures that AJDT treats .java and .aj files as equivalent.
+
+8.1) update SuffixConstants class
+8.2) update Util class
+
+9) 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.
+
+10) 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)
+
+10.1) Make jdt.internal.compiler.classfmt aware of aj-synthetic
+10.2) Make "" understand aj-attributes for pointcut, advice etc.
+10.3) Extend Field and MethodInfo with isAjSynthetic()
+10.4) Extend jdt.internal.core.util.Dissassembler for aspectj
+
+11) Quick-fix support
+=============================================================================
+This work package enables quick fix suggestions to be made for AspectJ elements.
+
+11.1) Extend ICorrectionRequestor interface
+11.2) Update implementors (in UI)
+
+12) Code formatting
+=============================================================================
+This work package ensures that formatting AspectJ source doesn't mess up 
+pointcut declarations etc.
+
+12.1) Update implementation of DefaultCodeFormatter for AspectJ
+12.2) Extend CodeFormatterVisitor
+
+13) Searching
+=============================================================================
+This work package enables searching for AspectJ elements in the search dialog
+and APIs.
+
+13.1) Expand IJavaSearch constants for Aj
+13.2) Expand SearchPattern for Aj
+13.3) Changes to search algorithm required??
+13.4) Extend ReferenceInfoAdapter
+13.5) Extend IIndexSearchRequestor with aj types
+13.6) Extend IndexSearchAdapter with aj types
+13.7) Extend AbstractIndexer with aj types
+13.8) Extend BinaryIndexer with aj types
+13.9) Extend IIndexConstants
+13.10) Extend SourceIndexRequestor (see also 4.3)
+13.11) Add xxxLocator and Pattern classes for aj elements?
+
+14) 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!).
+
+14.1) Extend SortElementBuilder
+14.2) Extend SortJavaElement
+
+15) Cross-references
+=============================================================================
+This work package enables the cross-reference view and visualiser to 
+correctly display the cross-cutting structure of an aspectj program.
+
+15.1) Create cross-reference map on batch build (1 map for whole workspace)
+15.2) Maintain cross-reference map on incremental build
+15.3) Add interfaces to retrieve cross-references for AspectJ elements
+15.4) Implement IXReferenceProvider
+
+16) Name lookups
+=============================================================================
+I'm not sure what user interface features need this...
+
+16.1) Extend IJavaElementRequestor
+16.2) Extend SelectionRequestor, SingleTypeRequestor
+16.3) Investigate other implementors
+
+17) Version upgrade
+=============================================================================
+17.1) port to Eclipse 3.0 M9
+17.2) port to Eclipse 2.0 final
+
+18) JDT DEBUG
+=============================================================================
+18.1) Extend jdt.internal.debug.core.hcr.JavaParseTreeBuilder ?
\ No newline at end of file