From a4afa08a96f66c4de0edc676f9c4723cf0819f9e Mon Sep 17 00:00:00 2001 From: acolyer Date: Wed, 12 May 2004 16:08:37 +0000 Subject: [PATCH] to do list for building the 'ajdt.core' part of AJDT. --- docs/developer/ajdt/ajdt.core.workitems.txt | 255 ++++++++++++++++++++ 1 file changed, 255 insertions(+) create mode 100644 docs/developer/ajdt/ajdt.core.workitems.txt diff --git a/docs/developer/ajdt/ajdt.core.workitems.txt b/docs/developer/ajdt/ajdt.core.workitems.txt new file mode 100644 index 000000000..92ae2f8e6 --- /dev/null +++ b/docs/developer/ajdt/ajdt.core.workitems.txt @@ -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 -- 2.39.5