Project Plan For AspectJ, version 1.0

Introduction

AspectJ major versions match up with Java versions. Currently Java is at 1.6 and so AspectJ is also at 1.6. The AspectJ project then releases service refreshes to that major version every few months. During 2008 there have been 1.6.0 and 1.6.1, and we are planning two more before year end. This is the release model we plan to continue with.
AspectJ always maintains that HEAD will build clean and pass all the tests we have (currently around 3700). This means the development builds created from HEAD after every commit are always at least as good as the previous build.

Release Deliverables

AspectJ releases are delivered as a single .jar download that installs a compiler and the related tools and documentation when executed. The packaging of an AspectJ release into plugins consumable in an Eclipse environment is done by the AJDT project.

Table of Contents

Release Milestones

1.6.210/03/2008
Service refresh of AspectJ 1.6
1.6.312/31/2008
Service refresh of AspectJ 1.6

Table of Contents

Target Environments

The AspectJ compiler pre-reqs a 1.4 JRE (it is based on the Eclipse compiler and so Java requirements for AspectJ tend to follow Eclipse compiler requirements). The woven code produced by AspectJ will run on any VM from Java 1.1 onwards.

Internationalization

We have bundles for many of the messages in the project but they are not translated.

Table of Contents

Compatibility with Previous Releases

AspectJ is strong on compatibility and any level of AspectJ is always intended to parse code/aspects built with any earlier version of AspectJ without requiring recompilation.

Table of Contents

Themes and Priorities

These are the larger themes and priorities right now:

Improving the IDE experience (target 1.6.2)

One factor limiting the take up of AspectJ is that when converting a Java project to an AspectJ project there is a reduction in responsiveness of incremental builds. A tiny degradation is reasonable since AspectJ is also weaving in addition to compiling, but currently the degradation is more than is reasonable.
  • Committed
    • [plan] [incremental] Reduce overhead in preparing for incremental compiles [245566] (target milestone: 1.6.2)
  • Proposed
    • [plan] [incremental] Exception when moving an aspect to it own source file... [148285] (target milestone: 1.6.3)

Reusable Matching (target 1.6.3)

The weaver currently matches based on a bytecode representation of compiled types. A reusable pointcut matcher would allow other representations of the types to be used for matching purposes. A key goal here would be support for a JDT Java Element representation of types - this would mean compilation of code would no longer be required to determine a match. This would result in faster matching in the IDE (matching as you type..) and enable better support for scenarios where weaving is not done until later - for example development of aspects for use with the Equinox Aspects project.
  • Committed
    • No items.
  • Proposed
    • [plan] [split] Split matching and weaving [246125] (target milestone: 1.6.3)

LTW for Equinox Aspects (target 1.6.3)

During the 1.6.3 timeframe the intention is to review AspectJ load-time weaving with respect to how it behaves in equinox aspects. The OSGi environment may require changes to current ltw support.
  • Committed
    • No items.
  • Proposed
    • [plan] [ltw] Revisit LTW and ensure meets the needs of AOSGi (Equinox aspects) [247331] (target milestone: 1.6.3)

Full set of work items for next release

The fixes and enhancements that are in 1.6.2 development builds and those still scheduled to be completed before final release.
  • Committed
    • Generics in parent class removes markers from child classes [197720] (target milestone: 1.6.2)
    • LinkageError with pertarget and LTW [198181] (target milestone: 1.6.2)
    • Fields and methods of parameterized type introduced by ITDs become raw types after weaving [211146] (target milestone: 1.6.2)
    • [Generics + ITD] Strange 'return types don't match' error when trying to override [222648] (target milestone: 1.6.2)
    • More NPEs in Java15AnnotationFinder [222987] (target milestone: 1.6.2)
    • Allow the ltw configuration to be directly specified rather than discovered on the classpath [238666] (target milestone: 1.6.2)
    • Annotation values in declare parents or declare @type. [238992] (target milestone: 1.6.2)
    • Weaving regression [245274] (target milestone: 1.6.2)
    • [plan] [incremental] Reduce overhead in preparing for incremental compiles [245566] (target milestone: 1.6.2)
    • Weaver produce NPE exceptions [247683] (target milestone: 1.6.2)
    • java.util.zip.ZipException: error in opening zip file [110396] (target milestone: 1.6.2)
    • VerifyError in AJSourceElementParser.parseTypeMemberDeclarations [225785] (target milestone: 1.6.2)
    • Build not weaving with errors in project [240360] (target milestone: 1.6.2)
    • generic anonymous inner class with a local variable with an identical name as an instance variable of this generic class causes a compiler error when defined in advice of a privileged aspect [240693] (target milestone: 1.6.2)
    • pointcut does not match methods in subclasses of a generic base class (GBC) when the aspect uses "declare parents : GBC extends SomeInterface" and the pointcut uses SomeInterface+ for matching. [241047] (target milestone: 1.6.2)
    • AJDT throws a RuntimeException from EclipseResolvedMember.getAnnotations [245734] (target milestone: 1.6.2)
    • problem with generic itds [242797] (target milestone: 1.6.2)
    • compiler sometimes doesn't terminate when resources are deleted [119038] (target milestone: 1.6.2)
    • Contribution: Memory Efficient Expendable Type Map [122347] (target milestone: 1.6.2)
    • AspectJ compiler error when weaving spring.jar version 1.2.4 [125916] (target milestone: 1.6.2)
    • [generics] Call generic method from within inter-type method: NoSuchMethodError [145391] (target milestone: 1.6.2)
    • declare annotation problem: AIOOBE at ProblemReporter.java:2992 [149293] (target milestone: 1.6.2)
    • LTW with Spring 2.0rc3 fails (using @Configurable) [153572] (target milestone: 1.6.2)
    • NPE in LTW into Swing App (ClassGen.<init>) [158704] (target milestone: 1.6.2)
    • Provide source package for aspectjrt.jar [161888] (target milestone: 1.6.2)
    • ResolvedType.java:695 ArrayIndexOutOfBoundsException, crash when refreshing externally modified file [165787] (target milestone: 1.6.2)
    • AspectJ website points to wrong version of ajdoc documentation [166347] (target milestone: 1.6.2)
    • NPE when saving class that doesn't implement interface methods [166514] (target milestone: 1.6.2)
    • Failure in chained field declare annotations [176905] (target milestone: 1.6.2)
    • Unhandled Kind of New Exception when have advice for Pointcut call(Throwable+.new(..)) [186884] (target milestone: 1.6.2)
    • [ataspectj] @AspectJ style inter-type declaration causes false compiler error during incremental build [192877] (target milestone: 1.6.2)
    • Error message for BindingTypePattern provides no context [194429] (target milestone: 1.6.2)
    • AJDT 1.5 inheritance handling bug [195794] (target milestone: 1.6.2)
    • annoated types via declare @type are not always matched in type pattern [198341] (target milestone: 1.6.2)
    • IAJC outjar removes directories OR removes all non class files [203235] (target milestone: 1.6.2)
    • Assymetric treatment of compiler limitations [210114] (target milestone: 1.6.2)
    • ajc does not copy resources from source jar on the inpath [211383] (target milestone: 1.6.2)
    • [ataspectj][ltw] @Aspect and @Around [211607] (target milestone: 1.6.2)
    • @target() results in java.lang.VerifyError [214253] (target milestone: 1.6.2)
    • Typo in point example [216067] (target milestone: 1.6.2)
    • ClassCastException on Annotation with field of type Class [221885] (target milestone: 1.6.2)
    • SourceTypeBinding.sourceStart() NPE [229829] (target milestone: 1.6.2)
    • Internal compiler error saving changes to aspect [239576] (target milestone: 1.6.2)
    • Problem setting the binary path of a ProgramElement if name of type is a substring on the fully qualified path of the type [239910] (target milestone: 1.6.2)
    • Update documentation about intertype decls and mixins [242602] (target milestone: 1.6.2)
    • ClassGenException after upgrade from 1.6.0 to 1.6.1 [243192] (target milestone: 1.6.2)
    • [incremental] Incremental compilation in a scenario with a large number of projects [243376] (target milestone: 1.6.2)
    • Aspect doc uses class instead of aspect [243516] (target milestone: 1.6.2)
    • I cannot aspect code written in SJPP-based encoding [244321] (target milestone: 1.6.2)
    • Inconsistency between AJDT and iajc [244497] (target milestone: 1.6.2)
    • Is initFailureCause necessary in pertypewithin aspects? [244830] (target milestone: 1.6.2)
    • ajdoc does not generate signature correctly for generic constructer [245286] (target milestone: 1.6.2)
    • Aspected annotations cause ajdoc to generate ClassCastExceptions [245307] (target milestone: 1.6.2)
    • FindBugs reporting another optimization [246021] (target milestone: 1.6.2)
    • [plan][annotations] VerifyError - annotation value binding when doubly annotated method-execution join point [246264] (target milestone: 1.6.2)
    • [plan] incremental compilation when changing annotations on a type can fail [246281] (target milestone: 1.6.2)
    • Addressing incompatibilities between JDT and AspectJ element handles [247742] (target milestone: 1.6.2)
    • Modify ltw dump directory based on loader/weaver instance [248814] (target milestone: 1.6.2)
    • [incremental] Can't run AJDT tests on windows machines because of lock on file not being removed [249551] (target milestone: 1.6.2)
    • Problems extending an abstract aspect in another package [239539] (target milestone: 1.6.2)
    • declare parents (or @type) problem when using hasmethod with annotation in signature [239441] (target milestone: 1.6.2)
  • Proposed
    • No items.

Planned changes for future releases

Items planned for 1.6.3
  • Proposed
    • [plan][memory][ltw]Reducing weaver memory usage over time [227484] (target milestone: 1.6.3)
    • [plan] [ltw] NullPointerException at ResolvedMemberImpl.matches on ActiveMQ class. [231941] (target milestone: 1.6.3)
    • [plan] [weaving] Wrong packaging of output jar file [240090] (target milestone: 1.6.3)
    • [plan] [annotations] cannot aspect inner class constructor w/ annotated params [241861] (target milestone: 1.6.3)
    • [plan] [memory] Possible resource leak in aspectj 1.6.1 [251019] (target milestone: 1.6.3)
    • [plan] [annotations] Incorrect/asymmetric semantics of inherited annotation for interface vs. class [128664] (target milestone: 1.6.3)
    • [plan] [incremental] Exception when moving an aspect to it own source file... [148285] (target milestone: 1.6.3)
    • [plan] [ataspectj] BCException when @Around is uncommented - if() related [162135] (target milestone: 1.6.3)
    • [plan] [ataspectj] @AfterReturning advice silently sensitive to order of args() and returning args [164573] (target milestone: 1.6.3)
    • [plan] [ataspectj] Assymetry between AfterReturning/Throwing and other advice annotation [169015] (target milestone: 1.6.3)
    • [plan] [iajc] iajc run in ant script should output summary line like javac [171061] (target milestone: 1.6.3)
    • [plan] [deow] declare warning change not picked up on incremental compile [176933] (target milestone: 1.6.3)
    • [plan] [ltw] NoSuchFieldError with cflow and aop.xml concretized aspect [186322] (target milestone: 1.6.3)
    • [plan] [weaving] LocalVariableTable not updated for statically woven around advice [194314] (target milestone: 1.6.3)
    • [plan] [build] Upgrade OSGi Manifest Entries to Version 2 [211768] (target milestone: 1.6.3)
    • [plan] [split] Split matching and weaving [246125] (target milestone: 1.6.3)
    • [plan] Further work on jdt handle interoperability [249216] (target milestone: 1.6.3)
    • [plan] [annotation] param annotation matching pointcut does not always match [241847] (target milestone: 1.6.3)
    • [plan] [matching] subtype array type pattern support is broken [148508] (target milestone: 1.6.3)
    • [plan] [ataspectj] "args(s)" in @Pointcut with "throwing=" in @AfterThrowing cause VerifyError [219419] (target milestone: 1.6.3)

Table of Contents

view raw xml of project plan
from project meta-data key "projectplanurl"