As you may be aware, Apache Tomcat is using a packaged renamed copy of BCEL to implement the annotation scanning neccessary for the Servlet 3.0 implementation. As part of a recent release review, concerns were raised over two files that originated in BCEL. [1], [2]
These files are CPL licensed and may not [3] be included in ASF releases in source form. I have managed to track down the Andy Clements listed as the original author in the header of those files. By chance, he now works for the company as me (SpringSource/VMWare). As best I can tell, the history of the files is: a) BCEL didn't support Java 5 b) AspectJ was using BCEL c) AspectJ needed Java 5 support d) Andy added Java 5 support to AspectJ's copy of BCEL in November 2004. eg [5] e) The 2006 GSoC student contacted Andy for advice on how to add Java 5 support to BCEL f) Andy replied "Why bother? I've already done it" and never heard from the student again g) Java 5 support was added to BCEL Comparing [1] and [5], apart from the package names, the files are byte for byte identical. It therefore looks highly likely that the Java 5 implementation for BCEL was implemented, at least in part, by copying the files from AspectJ. I checked a small number of the other changes made as part of this GSoC project. Some look OK (eg [6]) whereas some look suspicious - for example by changing names of constants from those used in BCEL to match those used in AspectJ [7]. I will enquire if Andy is a) in a position to be able to and b) willing to license his AspectJ modifications for BCEL under the AL2 or any other license [8] that would allow BCEL to continue to include these changes. There is a reasonable degree of urgency about resolving this issue since it is currently blocking the imminent Tomcat 7 release. Mark [1] https://svn.apache.org/repos/asf/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/EnclosingMethod.java [2] https://svn.apache.org/repos/asf/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/LocalVariableTypeTable.java [3] http://www.apache.org/legal/resolved.html#category-b [4] http://svn.apache.org/viewvc?view=revision&revision=411580 [5] http://dev.eclipse.org/viewcvs/index.cgi/org.aspectj/modules/bcel-builder/src/org/aspectj/apache/bcel/classfile/EnclosingMethod.java?revision=1.1&root=Tools_Project&view=markup [6] http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/classfile/RuntimeInvisibleAnnotations.java?r1=411580&r2=411579&pathrev=411580 [7] http://svn.apache.org/viewvc/jakarta/bcel/trunk/src/main/java/org/apache/bcel/Constants.java?r1=411580&r2=411579&pathrev=411580 [8] http://www.apache.org/legal/resolved.html#category-a
