You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ajdt.core.workitems.adoc 8.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  1. = AJDT Core work items
  2. _Last updated: 2004-05-17 by acolyer_
  3. This document details what needs to be done in ajdt.core and
  4. shadows/org.eclipse.jdt.core to provide full integration with the eclipse
  5. JDT model and to support AJDT.
  6. == Unit testing
  7. Determine how we can write efficient and comprehensive unit tests for all
  8. that follows given the difficult swizzling etc. involved in creating a working
  9. plugin.
  10. == Builder integration
  11. This work package enables the building of AspectJ projects in batch and
  12. incremental mode, with problems found during compilation reported back to the
  13. tasks view. It also supports management of the Aspectjrt.jar classpath variable
  14. for AspectJ projects.
  15. A new subclass of JavaBuilder, AspectJBuilder has been introduced. This
  16. delegates to AjIncrementalImageBuilder and AjBatchImageBuilder to perform
  17. builds.
  18. . Basic builder support: Builds from source only, outputs to project
  19. specified output directories, problem reporting integration.
  20. . Add support for inpath, outjar, aspectpath in building.
  21. This task depends on IAspectJProject and implementation being able to
  22. manage and persist AspectJ specific path elements (see xref:java-model-extension[]).
  23. ** batch mode
  24. ** incremental mode (requires delta processing)
  25. . Aspectjrt classpath variable
  26. == Reconciling & structure building
  27. This work package enables updating of structure based views as the contents of
  28. an editor buffer is edited, and reporting of warnings and errors (early error
  29. annotations) in the editor buffer.
  30. When a CompilationUnit is asked to build its structure, it creates a
  31. CompilationUnitStructureRequestor which is fed structure information by a
  32. SourceElementParser (see 4). It also creates a new CompilationUnitProblemFinder
  33. (Compiler subclass) and compiles the unit with it to detect any problems.
  34. . Determine how to build AjCompilerAdapter for CompilationUnitProblemFinders
  35. (which are created outside of AspectJBuilder). This involves where and how
  36. BcelWorld etc. are managed for the project.
  37. . As changes are made in an editor buffer, a CompilationUnitResolver continually
  38. compiles the source and reports problems. This is another compiler subclass, and
  39. we also need to determine how to build an AjCompilerAdapter for it.
  40. [[java-model-extension]]
  41. == Java Model Extension
  42. This work package is a needed foundation for almost any UI function that works
  43. with program structure or elements (e.g. to display AspectJ content in an
  44. outline view).
  45. This requires the creation of AspectJ element interfaces in the IJavaElement
  46. hierarchy, and then corresponding classes that implement them.
  47. . In the package org.aspectj.ajdt.core :
  48. ** IAspectJModelExtension (extends org.eclipse.jdt.core.IModelExtension)
  49. ** IAspectJElement (root interface for aspectj elements)
  50. ** IAjType (extends IType, adds isAspect() )
  51. ** IAspect (extends IAjType)
  52. ** IAdvice
  53. ** IPointcut
  54. ** IDeclareErrorOrWarning
  55. ** IDeclareParents
  56. ** IDeclareSoft
  57. ** IInterTypeField
  58. ** IInterTypeMethod
  59. ** IAspectJProject
  60. . In the package org.aspectj.ajdt.internal.core, for each interface above,
  61. add SourceXXX and SourceXXXElementInfo classes.
  62. . In the package org.aspectj.ajdt.core.jdom, add classes IDOMxxx for each
  63. interface in (1), plus implementation classes and SimpleDOMBuilder extension.
  64. . In the package org.aspectj.ajdt.internal.compiler.env, add an
  65. IGenericXXX and ISourceXXX interface for each element in (1), which are
  66. implemented by the classes in (2).
  67. == Source Element Parsing (Java Model creation)
  68. This work package populates the structure model on which the outline views
  69. etc. depend.
  70. . Extend ISourceElementRequestor with AspectJ AST nodes
  71. . Extend SourceElementParser to implement appropriate requestor callbacks
  72. . The 5 implementors of ISourceElementRequestor need updating to do the
  73. appropriate thing with AspectJ elements:
  74. ** CompilationUnitStructureRequestor (for outline view etc.)
  75. ** SimpleDOMBuilder (used by portions of UI that generate code - refactoring? what else?)
  76. ** SourceElementRequestorAdapter
  77. ** SourceIndexRequestor (used by indexer, for searching and type hierarchy)
  78. ** SourceMapper (used when attaching source to a jar file)
  79. . This seems to be the point at which we need to implement the
  80. IExtensionFactory so that we can cleanly create Aj versions of the above
  81. without polluting the JDT (see UI design of the same).
  82. == DOM extensions
  83. This work package enables the source code of an aspectJ program to be
  84. modelled as a structured document. Which user-interface actions will be
  85. broken without this? (Refactoring?)
  86. . In the package org.aspectj.jdt.core.dom, add counterparts to the AspectJ nodes
  87. already defined in org.aspectj.internal.compiler.ast (not needed first time round?)
  88. . Extend IDocumentElementRequestor interface
  89. . Extend DocumentElementParser
  90. . Extend DOMBuilder
  91. . Extend DOMFactory
  92. . Add CreateAspectJXxxOperation classes
  93. == Code completion / code assist
  94. This work package enables Ctrl+Space in an editor to offer completions on
  95. pointcut names, aspect names, and inter-type declared methods and fields.
  96. . Extend ICompletionRequestor interface
  97. . Extend ICompletionRequestor implementors (there are 9, 7 of which are anonymous inner classes)
  98. . Extend CompletionEngine with pointcut
  99. . Extend ISelectionRequestor with pointcut
  100. . Investigate changes to SelectionEngine
  101. . Extend CompletionKeyword family
  102. . Add CompletionOnPointcut
  103. . Investigate changes to CompletionParser and CompletionScanner classes
  104. . Investigate changes in AssistParser
  105. . Extend keywords in 'impl' package
  106. . Add SelectionOnxxx classes for AspectJ in 'select' package
  107. . Investigate changes to SelectionParser and SelectionScanner
  108. == Type Hierarchy
  109. This work package enables the type hierarchy view to correctly display the
  110. hierarchy for aspects.
  111. . Override hierarchy methods in IAjType
  112. . Extend ChangeCollector
  113. . Extend TypeHierarchy
  114. . Extend HierarchyBinaryType
  115. == ".aj" File extension
  116. This work package ensures that AJDT treats .java and .aj files as equivalent.
  117. . update SuffixConstants class
  118. . update Util class
  119. == Java Model inclusion
  120. This work package ensures that all types in pure Java projects are visible
  121. inside the AspectJ model.
  122. Extend model generation logic to look at project that have either the
  123. AspectJ nature, OR the Java nature.
  124. == Class formatting and dissassembling
  125. This work package enables 'editing' of a .class file to present a view that
  126. is aware of AspectJ elements (rather than seeing the generated aj-synthetic
  127. stuff etc.).
  128. (can be deferred for now)
  129. . Make jdt.internal.compiler.classfmt aware of aj-synthetic
  130. . Make "" understand aj-attributes for pointcut, advice etc.
  131. . Extend Field and MethodInfo with isAjSynthetic()
  132. . Extend jdt.internal.core.util.Dissassembler for aspectj
  133. == Quick-fix support
  134. This work package enables quick fix suggestions to be made for AspectJ elements.
  135. . Extend ICorrectionRequestor interface
  136. . Update implementors (in UI)
  137. == Code formatting
  138. This work package ensures that formatting AspectJ source doesn't mess up
  139. pointcut declarations etc.
  140. . Update implementation of DefaultCodeFormatter for AspectJ
  141. . Extend CodeFormatterVisitor
  142. == Searching
  143. This work package enables searching for AspectJ elements in the search dialog and APIs.
  144. . Expand IJavaSearch constants for Aj
  145. . Expand SearchPattern for Aj
  146. . Changes to search algorithm required??
  147. . Extend ReferenceInfoAdapter
  148. . Extend IIndexSearchRequestor with aj types
  149. . Extend IndexSearchAdapter with aj types
  150. . Extend AbstractIndexer with aj types
  151. . Extend BinaryIndexer with aj types
  152. . Extend IIndexConstants
  153. . Extend SourceIndexRequestor (see also 4.3)
  154. . Add xxxLocator and Pattern classes for aj elements?
  155. == Sorting
  156. This work package enables the correct sorting of AspectJ program elements
  157. when an outline view is set to 'sorted' mode rather than showing elements in
  158. their declared order (I think!).
  159. . Extend SortElementBuilder
  160. . Extend SortJavaElement
  161. == Cross-references
  162. This work package enables the cross-reference view and visualiser to
  163. correctly display the cross-cutting structure of an aspectj program.
  164. . Create cross-reference map on batch build (1 map for whole workspace)
  165. . Maintain cross-reference map on incremental build
  166. . Add interfaces to retrieve cross-references for AspectJ elements
  167. . Implement IXReferenceProvider
  168. == Name lookups
  169. I'm not sure what user interface features need this...
  170. . Extend IJavaElementRequestor
  171. . Extend SelectionRequestor, SingleTypeRequestor
  172. . Investigate other implementors
  173. == Version upgrade
  174. . port to Eclipse 3.0 M9
  175. . port to Eclipse 3.0 final
  176. == JDT Debug
  177. . Extend jdt.internal.debug.core.hcr.JavaParseTreeBuilder ?