The BCEL-builder module

This module includes a modified form of BCEL - with some fixes in *and* support for Java5.

Java 5 support

The best way to see how it works is look in the testcases. The only feature that is definetly not implemented yet is package level annotations. What is working is:

All this is implemented without using any Java 5 APIs.

There are a number of new TODO type tags in the code that may prove useful:


The contents of this directory are:


Development Process

We can now follow normal TDD for this. Add a JUnit testcase to the testsrc folder, plus any associated test materials into the testdata directory. Then change BCEL to get your test passing, when you are happy with the result (i.e. all the tests in the bcel-builder module are passing), you should execute the build.xml script whose default target will package up bcel (and bcel src) and deliver it into the lib module, the rest of AspectJ is driven off the version of bcel in the lib/bcel folder - it is *not* driven off the bcel-builder code (we could choose to change that sometime later).

Once you have done this execute all the tests for AspectJ, if they all pass you can check in your mods for bcel-builder and to the lib project.


testdata

The testdata folder includes a load of Java5 code, it needs to be built with a Java5 compiler. There is an ant script in there (build.xml) that builds all the source code into a testcode.jar which is then used by the testcases - so if you do change the testdata code then you should run build.xml to rebuild testcode.jar.

The old stuff...

Before the Java 5 support was added we maintained this module as basically a patch to apply against a particular download of BCEL. Changes to BCEL are occurring more frequently than we integrate a new version of BCEL so it made sense to make the patching process easier, so we have checked in the modified source for BCEL. The original instructions for patching BCEL in the old way are below...

And pretty much nothing else. Well, then, what do you do with this directory? Well, the whole point is to generate bcel/bcel.jar in the lib package. To do so, first stick bcel-5.1-src.zip in this directory, then run ant. (at one point, this was available at http://archive.apache.org/dist/jakarta/bcel/source/bcel-5.1-src.zip) After much unzipping, patching, and compiling, you should get an appropriate bcel.jar file. Now put it in the appropriate place.

If there's something wrong with the bcel.jar in the lib project, well, then you've got some development to do. You'll need to know some more ant targets. But before anything, get that bcel-5.1-src.zip and stick it in this directory. NOTE: You should be working on BCEL when the package names are org.aspectj.apache.bcel, and *not* when the package names are org.apache.bcel. If you run the extractAndPatch task below, you will be left with a src folder in the correct state for further development.

There are five top-level ant targets apart from the usual "clean":

All of the tasks are destructive, so don't do "ant extract", for example, if you have anything in the project source directory you care about.