You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@abdera.apache.org by jm...@apache.org on 2006/07/07 00:08:33 UTC
svn commit: r419720 [1/5] - in /incubator/abdera/java/trunk/build: ./ tools/
tools/retroweaver/ tools/retroweaver/docs/ tools/retroweaver/docs/guide/
tools/retroweaver/docs/images/ tools/retroweaver/lib/
tools/retroweaver/release/ tools/retroweaver/src...
Author: jmsnell
Date: Thu Jul 6 15:08:30 2006
New Revision: 419720
URL: http://svn.apache.org/viewvc?rev=419720&view=rev
Log:
Incorporates Retroweaver into the ant build.
To run: ant -f build/build.xml retro
Both the JDK 1.5 and JDK 1.4.2 jars will be in the "dist" folder, with the 1.4.2 jars suffixed with "retro".
There is one additional dependency (retroweaver-rt-1.2.3.jar) for the 1.4.2 jars that is copied to the dist/lib directory.
Added:
incubator/abdera/java/trunk/build/tools/
incubator/abdera/java/trunk/build/tools/retroweaver/
incubator/abdera/java/trunk/build/tools/retroweaver/ChangeLog.txt
incubator/abdera/java/trunk/build/tools/retroweaver/build.properties
incubator/abdera/java/trunk/build/tools/retroweaver/build.xml
incubator/abdera/java/trunk/build/tools/retroweaver/docs/
incubator/abdera/java/trunk/build/tools/retroweaver/docs/asm-license.txt
incubator/abdera/java/trunk/build/tools/retroweaver/docs/documentation.html
incubator/abdera/java/trunk/build/tools/retroweaver/docs/guide/
incubator/abdera/java/trunk/build/tools/retroweaver/docs/guide/retroweaver-guide.html
incubator/abdera/java/trunk/build/tools/retroweaver/docs/guide/retroweaver-guide.jpg (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/guide/retroweaver-guide.odt (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/guide/retroweaver-guide.pdf (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/images/
incubator/abdera/java/trunk/build/tools/retroweaver/docs/images/headerbitty.gif (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/images/menubg.gif (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/images/seascape.gif (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/images/seascape.psd (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/images/sliver.jpg (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/docs/index.html
incubator/abdera/java/trunk/build/tools/retroweaver/docs/news.html
incubator/abdera/java/trunk/build/tools/retroweaver/docs/overview.html
incubator/abdera/java/trunk/build/tools/retroweaver/lib/
incubator/abdera/java/trunk/build/tools/retroweaver/lib/asm-2.2.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/lib/asm-commons-2.2.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/lib/backport-util-concurrent.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/lib/junit.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/release/
incubator/abdera/java/trunk/build/tools/retroweaver/release/retroweaver-1.2.3.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/release/retroweaver-all-1.2.3.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/release/retroweaver-rt-1.2.3.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/release/retroweaver-tests-1.2.3.jar (with props)
incubator/abdera/java/trunk/build/tools/retroweaver/src/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/NameTranslator.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/RefVerifier.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/RetroWeaver.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/RetroWeaverClassLoader.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/RetroWeaverException.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/SignatureStripper.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/WeaveRunner.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/Weaver.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/ant/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/ant/RetroWeaverTask.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/event/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/event/VerifierListener.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/event/WeaveListener.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/gui/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/gui/RetroWeaverGui.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/AnnotationConstantsCollector.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/ClassConstantsCollector.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/Constant.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/ConstantComparator.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/ConstantPool.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/FieldConstantsCollector.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/optimizer/MethodConstantsCollector.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/runtime/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/runtime/Autobox.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/runtime/ClassMethods.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/runtime/Enum_.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/runtime/IterableMethods.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/runtime/Iterable_.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/AbstractTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/AppendableTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/AutoboxTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/BigDecimalTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/ClassLiteralTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/ClassMethodsTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/CollectionsTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/ConcurrentTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/EnumTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/FullCoverageTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/InnerClassTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/InterfaceFieldTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/IterableTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/MapTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/RetroweaverTestSuite.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/RmicEnumTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/StringBufferTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/StringBuilderTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/SystemTest.java
incubator/abdera/java/trunk/build/tools/retroweaver/src/com/rc/retroweaver/tests/VerifierTest.java
Modified:
incubator/abdera/java/trunk/build/build.xml
Modified: incubator/abdera/java/trunk/build/build.xml
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/build.xml?rev=419720&r1=419719&r2=419720&view=diff
==============================================================================
--- incubator/abdera/java/trunk/build/build.xml (original)
+++ incubator/abdera/java/trunk/build/build.xml Thu Jul 6 15:08:30 2006
@@ -38,15 +38,23 @@
<property name="server.src" value="${server}/src/main/java" />
<property name="server.work" value="${work}/server" />
<property name="server.jar" value="${dist}/${ant.project.name}.server.${version}.jar" />
+
+ <property name="retro_core.jar" value="${dist}/${ant.project.name}.core.${version}.retro.jar" />
+ <property name="retro_parser.jar" value="${dist}/${ant.project.name}.parser.${version}.retro.jar" />
+ <property name="retro_extensions.jar" value="${dist}/${ant.project.name}.extensions.${version}.retro.jar" />
+ <property name="retro_server.jar" value="${dist}/${ant.project.name}.server.${version}.retro.jar" />
-
<property name="dependencies" value="${basedir}/dependencies" />
<property file="${dependencies}/deps.properties" />
<path id="jar.dependencies">
<fileset dir="${dependencies}" includes="**/*.jar" />
</path>
-
+
+ <path id="jar.retro">
+ <fileset dir="${basedir}/build/tools/retroweaver/release" includes="**/*.jar" />
+ </path>
+
<target name="dependencies">
<path id="">
<fileset dir="dependencies" includes="*.jar" />
@@ -247,4 +255,29 @@
</copy>
</target>
+ <target name="retro" >
+ <echo>Retroweaving the Jars...</echo>
+ <java classpathref="jar.retro"
+ classname="com.rc.retroweaver.Weaver"
+ fork="yes">
+ <arg line="-jar ${core.jar} ${retro_core.jar}" />
+ </java>
+ <java classpathref="jar.retro"
+ classname="com.rc.retroweaver.Weaver"
+ fork="yes">
+ <arg line="-jar ${parser.jar} ${retro_parser.jar}"/>
+ </java>
+ <java classpathref="jar.retro"
+ classname="com.rc.retroweaver.Weaver"
+ fork="yes">
+ <arg line="-jar ${server.jar} ${retro_server.jar}" />
+ </java>
+ <java classpathref="jar.retro"
+ classname="com.rc.retroweaver.Weaver"
+ fork="yes">
+ <arg line="-jar ${extensions.jar} ${retro_extensions.jar}" />
+ </java>
+ <copy todir="${dist_lib}" file="${basedir}/build/tools/retroweaver/release/retroweaver-rt-1.2.3.jar" />
+ </target>
+
</project>
Added: incubator/abdera/java/trunk/build/tools/retroweaver/ChangeLog.txt
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/tools/retroweaver/ChangeLog.txt?rev=419720&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/tools/retroweaver/ChangeLog.txt (added)
+++ incubator/abdera/java/trunk/build/tools/retroweaver/ChangeLog.txt Thu Jul 6 15:08:30 2006
@@ -0,0 +1,389 @@
+Changes in retroweaver 1.2.3 (April 22 2006)
+
+ - Bug fix (1472581) Ant srcdir property doesn't work
+ classes in subdirectories were not included
+ (bug report by Dan Smith)
+ (Xavier Le Vourch).
+
+ - Bug fix: Target parent directories are not created
+ When a destination directory is specified, subdirectories for packages
+ were not created when needed and a FileNotFoundException was raised.
+ retroweaver bug 1472575
+ (bug report by Dan Smith)
+ (Xavier Le Vourch).
+
+ - RefVerifier: new warning if a class file version is higher than target jdk
+ This should help ensure people use the weaved classes in the verifier
+ class path and not the 1.5 versions.
+ (Xavier Le Vourch).
+
+ - 1.5 flags are kept in generated code if harmless
+ (Xavier Le Vourch).
+
+ - Bug fix: invalid translation of generic signatures
+ (Xavier Le Vourch).
+
+ - New option -stripSignatures for console tool and ant task
+ Removes generic signatures from methods and fields if set. Off by default.
+ Signatures were always removed in previous versions. Keeping signatures
+ allows weaved classes to be used by 1.5 compiler
+ (bug report by Goldin Evgeny)
+ (Xavier Le Vourch).
+
+ - Documentation updates
+ (Xavier Le Vourch).
+
+ - Bug fix: Retroweaver required 1.5, not 1.4
+ Call to String.replace() raised NoSuchMethodException
+ (Xavier Le Vourch).
+
+Changes in retroweaver 1.2.2 (April 5 2006)
+
+ - NameTranslator did not translate exception tables
+ retroweaver bug 1464906
+ (bug report and patch from Ronald Brindl).
+
+ - Iterable improvement: foreach loop now works on Collections
+ (Xavier Le Vourch).
+
+ - Bug fix: Enum initialization by class loader was too lazy
+ retroweaver bug 1442573
+ (problem reported and test case provided by Ronald Brindl).
+ (Xavier Le Vourch).
+
+ - Bug fix: false positives in verifier for abstract classes
+ (Xavier Le Vourch).
+
+Changes in retroweaver 1.2.1 (March 13 2006)
+
+ - Verifier is now lazy: only weaved classes are verified
+ closes bug 1207248
+ (Xavier Le Vourch).
+
+ - System.nanoTime() is processed
+ closes bug 1181380, some requests ignored
+ (Xavier Le Vourch).
+
+ - Bug fix: incorrect exception handling in .class weaved code for 1.2 or 1.3
+ (Xavier Le Vourch).
+
+ - Bug fixes: Enum serialization problems
+ Handles changes in Enum class (missing name raises InvalidObjectException
+ and serialVersionUID set to 0L).
+ Enum inner class wasn't serialized correctly.
+ (Xavier Le Vourch).
+
+ - BigDecimal(int) and BigDecimal(long) constructors are correctly processed
+ closes feature request 1202810
+ (Xavier Le Vourch).
+
+ - Bug fix: Enum.class was not weaved correctly
+ ".class" byte code modification now uses NameTranslator on the LDC
+ manifest string representing the type. This bug also applied to the
+ concurrent backport classes.
+ (Xavier Le Vourch).
+
+ - Bug fix: line number and local variable tables were not kept by optimizer
+ (Xavier Le Vourch).
+
+ - StringBuffer and StringBuilder methods are weaved
+ Constructors, append and insert methods based on CharSequence are
+ weaved. trimToSize() calls are also discarded as its contract states
+ that no action is acceptable.
+ (Xavier Le Vourch).
+
+ - Documentation updates
+ (Xavier Le Vourch).
+
+Changes in retroweaver 1.2 (February 26 2006)
+
+ - retroweaver-ng 1.2.4 merged back into the official retroweaver project
+ and released as retroweaver 1.2
+ (Xavier Le Vourch).
+
+ - Documentation updates
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2.4
+
+ - all java.util.concurrent classes are replaced by their backport equivalent
+ (Xavier Le Vourch).
+
+ - Bug fix: ClassLiteral changes were not working for interfaces
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2.3
+
+ - Documentation updates to reflect changes since retroweaver-1.1
+ (Xavier Le Vourch).
+
+ - regression tests can be run with jre 1.6 if available
+ (Xavier Le Vourch).
+
+ - problem with bridge methods corrected
+ 1.4 rmic can not deal with synthetic methods extending an interface
+ (problem reported and test case provided by Mike Kopp).
+ (Xavier Le Vourch).
+
+ - backport-util-concurrent updated to 2.1
+ (Xavier Le Vourch).
+
+ - Enum flag removed from weaved classes
+ (Xavier Le Vourch).
+
+ - ClassLiteral runtime class removed: byte code generation similar to 1.4
+ (Xavier Le Vourch).
+
+ - Collections: emptyList, emptyMap and emptySet are now handled
+ Retroweaver Feature Request 1207694
+ (Xavier Le Vourch).
+
+ - ClassLiteral: SecurityManager hack removed
+ (Xavier Le Vourch).
+
+ - bug fix: translation of method and field descriptors was incorrect
+ (problem reported by Toby Reyelts).
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2.2
+
+ - Enum changes: initialization is faster, extra routines from Class added
+ byte code init is done in <clinit> once instead of for each enum object
+ isEnum() and getEnumConstants() from Class translated in their equivalent
+ in ClassMethods.
+ (Xavier Le Vourch).
+
+ - Constant compaction based on ASM's optimizer classes
+ (Xavier Le Vourch).
+
+ - Class analysis is now based on ASM: better maintained, smaller, faster lib
+ (Xavier Le Vourch).
+
+ - WeaveRunner class added: ability to perform weaving on the fly
+ (Xavier Le Vourch).
+
+ - code cleanup: authors moved to Contributors.txt file
+ (Xavier Le Vourch).
+
+ - code cleanup: standard formatting + import cleanup
+ (Xavier Le Vourch).
+
+ - bug fix: ClassLiteral didn't deal with arrays correctly
+ recent ClassLoader changes broke the class.
+ Junit test added.
+ (problem reported by Svet Kovich).
+ (Xavier Le Vourch).
+
+ - bug fix: getDeclaringClass() in Enum_ was not correctly implemented
+ found while writing test coverage suite
+ (Xavier Le Vourch).
+
+ - Code coverage target in ant script
+ performed on runtime classes using EMMA Code Coverage tool
+ (Xavier Le Vourch).
+
+ - Test classes are now using junit to automate testing before a release
+ extra tests to improve test coverage of runtime classes
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2.1
+
+ - ClassLiteral was not working for jre 1.2 and 1.3
+ as class sun.reflect.Reflection was introduced in 1.4.
+ New mechanism uses SecurityManager to get the call stack.
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2
+
+ - Gui is the Main-Class in manifest files
+ option "-console" to start the Weaver class
+ version and build revision stored in properties file
+ version in jar file names
+ distribution is now a zip file
+ (Xavier Le Vourch).
+
+ - bcel recompiled with target 1.2
+ (Xavier Le Vourch).
+
+ - retroweaver bug 1323841: GUI should allow you to exit
+ (from Peter Taylor).
+
+ - class file is only written once
+ (Xavier Le Vourch).
+
+ - weaving jar files with -jar option or inputjar/outputjar in ant task
+ closes retroweaver bug 1117628
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2 rc1
+
+ - failonerror raises an ExitStatusException if the verifier found problems
+ (Xavier Le Vourch).
+
+ - retroweaver patch 1165123: ClassLiteral::ContextClassLoader patch
+ modified to declare everything final.
+ (from Vladimir Kirichenko).
+
+ - retroweaver patch 1324045: Use BCEL instead of Jace
+ (from Peter Taylor).
+
+ - ant task: dirset files were included multiple times
+ (Xavier Le Vourch).
+
+ - Warning messages refactoring
+ "-verbose" option for Weaver class added
+ number of classes to process displayed
+ verbose flag is off by default
+ (Xavier Le Vourch).
+
+ - Verifier changes
+ uses BCEL library
+ bug fixes: interfaces are searched for attributes
+ cast and asSubsclass from java.lang.Class don't generate warnings
+ shorter messages
+ (Xavier Le Vourch).
+
+ - bcel.jar update: using svn version 343959 (from Nov 13 2005)
+
+ crash when weaving java/lang/BigDecimal.class twice due to a BCEL bug in
+ LDC_W.java
+ (investigation by Peter Taylor).
+ (Xavier Le Vourch).
+
+ - bug fix: translation of class names
+
+ Previous implementation was incorrect for concurrent classes as pattern
+ was also in resulting string. Weaving a class twice was creating an invalid
+ class name.
+ (Xavier Le Vourch).
+
+Changes in retroweaver-ng 1.2 pre2
+
+ - Enum can now be serialized.
+ Registration code is inefficient and should be done by byte code modification.
+ Inspired by retroweaver bug report 1234732 and patch 1165131
+ (Xavier Le Vourch).
+ (from Vladimir Kirichenko).
+ (from Mike - greywind).
+
+ - code reorganization
+ Verifier now displays warning count
+ partially based on retroweaver patch 1152382
+ (Xavier Le Vourch).
+ (from Stefan Reich).
+
+ - retroweaver patch 1202801: Another fixed reference verifier with tests
+ (example and soft reference cache)
+ (from Guntis Ozols).
+
+ - NPE while creating parent directory for '.'
+ (Xavier Le Vourch).
+
+ - build.xml changes:
+ runtime classes weaved as 1.2 classes
+ test target: verify class path cleanup
+ test target uses retroweaver task
+ use forward slash in paths
+ dist target to build retroweaver-ng-<version>-all.jar (ant dist -Dversion=1.1pre2)
+ (Xavier Le Vourch).
+
+ - -version renamed -target, new option -version (print version and exit)
+ (Xavier Le Vourch).
+
+ - retroweaver patch 1169987: Verifyrefs parameter in Ant task show incorrect
+ RefVerifier changes
+ (from Mike - greywind).
+
+ - retroweaver patch 1170383: Added support for dirsets in anttask
+ (from Mike - greywind).
+
+ - retroweaver patch 1151301:
+ ant task changes
+ creation of output dir if needed
+ (from Paul Wagland).
+
+ - java.util.concurrent backport
+ (from Garret Wilson).
+
+ - cleanup of patch 1214519
+ (from Garret Wilson).
+
+ - retroweaver patch 1214519: support for new java.lang.Class methods
+ asSubclass(Class) and cast(Object)
+ (from David Hovemeyer).
+
+ - retroweaver patch 1324042: debug info not created unless in original class
+ (from Peter Taylor).
+
+ - retroweaver patch 1118409: code cleanup in RefVerifier (unused local)
+ (from Dave Brosius).
+
+Start of retroweaver-ng project based on official retroweaver 1.1
+
+
+Changelog for official retroweaver 1.1 included below
+
+Changes in 1.1
+--------------
+New features:
+ - Support for reference verification. Retroweaver automatically warns you if your code references classes, methods, or fields that don't exist in your target JDK.
+ - An integrated Ant task: com.rc.retroweaver.ant.RetroWeaverTask.
+ - A separate runtime jar: retroweaver-rt.jar. This jar file is smaller and contains the minimum set of classes necessary to support Retroweaver at runtime.
+
+Bug fixes:
+ - 1008851 - Undocumented flags were only getting stripped on synthetic entities.
+
+
+Changes in 1.0 FCS
+------------------
+
+New features:
+ - A new developer's guide (html,pdf,OpenOffice).
+ - A new graphical user interface
+ - A new executable jar - RetroweaverEx.jar
+
+Bug fixes:
+ - 997305 - Typo in src/com/rc/retroweaver/Weaver.java
+ - 1008851 - Retroweaver should strip undocumented method flags
+ - 963245 - NosuchMethodError for String.replace(String, String);
+
+Changes in 1.0 RC5
+------------------
+
+New features:
+ None
+
+Bug fixes:
+ - 922729 - Enum.valueOf fails.
+
+
+Changes in 1.0 RC4
+------------------
+
+New features:
+
+ - New support for enumerations. You can now use the enum language construct. The generated enum classes derive from com.rc.retroweaver.runtime.Enum.
+ - New support for java.lang.Iterable. You can now implement, extend, and use java.lang.Iterable. Look at the example ItTest class for more details.
+ - More optimized autoboxing. Additional caching has been added for chars, shorts, and ints.
+
+
+Changes in 1.0 RC3
+------------------
+
+New features:
+ - Command line usage has changed, you now have to specify -source
+ - You can now set the target virtual machine using -target, for example, -target 1.3
+ - Retroweaver now comes with a set of test unit classes
+
+Bug fixes:
+ - 981204 - java.lang.ClassFormatError: Illegal method name
+
+
+Changes in 1.0 RC2
+------------------
+
+New features:
+ None
+
+Bug fixes:
+ - 917707 - StringBuilder isn't handled correctly.
Added: incubator/abdera/java/trunk/build/tools/retroweaver/build.properties
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/tools/retroweaver/build.properties?rev=419720&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/tools/retroweaver/build.properties (added)
+++ incubator/abdera/java/trunk/build/tools/retroweaver/build.properties Thu Jul 6 15:08:30 2006
@@ -0,0 +1,34 @@
+# Windows properties
+
+jre12.home=c:/Program Files/JavaSoft/JRE/1.2
+jre12.jvm=${jre12.home}/bin/java.exe
+jre12.runtime=${jre12.home}/lib/rt.jar
+
+jre13.home=c:/Program Files/JavaSoft/JRE/1.3.1_17
+jre13.jvm=${jre13.home}/bin/java.exe
+
+jre14.home=c:/Program Files/Java/j2re1.4.2_11
+jre14.jvm=${jre14.home}/bin/java.exe
+jre14.runtime=${jre14.home}/lib/rt.jar
+
+bea14.home=D:/Apps/Java/jrockit-j2sdk1.4.2_08/jre
+bea14.jvm=${bea14.home}/bin/java.exe
+
+jdk14.home=d:/Apps/Java/j2sdk1.4.2_11
+jdk14.rmic=${jdk14.home}/bin/rmic.exe
+
+jre15.home=c:/Program Files/Java/jre1.5.0_06
+jre15.jvm=${jre15.home}/bin/java.exe
+
+bea15.home=D:/Apps/Java/jrockit-R26.0.0-jdk1.5.0_04/jre
+bea15.jvm=${bea15.home}/bin/java.exe
+
+jre16.home=C:/Program Files/Java/jre1.6.0
+jre16.jvm=${jre16.home}/bin/java.exe
+
+emma.home=D:/Apps/Java/emma-2.0.5312
+
+pmd.home=D:/Apps/Java/pmd/pmd-3.6
+
+# end Windows properties
+
Added: incubator/abdera/java/trunk/build/tools/retroweaver/build.xml
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/tools/retroweaver/build.xml?rev=419720&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/tools/retroweaver/build.xml (added)
+++ incubator/abdera/java/trunk/build/tools/retroweaver/build.xml Thu Jul 6 15:08:30 2006
@@ -0,0 +1,403 @@
+<project name="retroweaver" default="compile" basedir=".">
+
+ <!-- set global properties for this build -->
+ <property file="build.properties" />
+
+ <property name="version" value="dev" />
+
+ <available file="${jre12.jvm}" type="file" property="jre12.present" />
+ <available file="${jre13.jvm}" type="file" property="jre13.present" />
+ <available file="${jre14.jvm}" type="file" property="jre14.present" />
+ <available file="${jre14.runtime}" type="file" property="runtime14.present" />
+ <available file="${jre15.jvm}" type="file" property="jre15.present" />
+ <available file="${jre16.jvm}" type="file" property="jre16.present" />
+ <available file="${ibm14.jvm}" type="file" property="ibm14.present" />
+ <available file="${ibm15.jvm}" type="file" property="ibm15.present" />
+ <available file="${bea14.jvm}" type="file" property="bea14.present" />
+ <available file="${bea15.jvm}" type="file" property="bea15.present" />
+
+ <available file="${jdk14.rmic}" type="file" property="rmic14.present" />
+
+ <fail unless="jre14.present" message="jre14.jvm must be defined" />
+ <fail unless="runtime14.present" message="jre14.runtime must be defined" />
+ <fail unless="rmic14.present" message="jdk14.rmic must be defined" />
+ <fail unless="jre15.present" message="jre15.jvm must be defined" />
+
+ <property name="src.dir" value="src" />
+ <property name="classes.dir" value="classes" />
+ <property name="weaved_classes.dir" value="weaved_classes" />
+ <property name="test_classes.dir" value="test_classes" />
+ <property name="weaved_test_classes.dir" value="weaved_test_classes" />
+ <property name="lib.dir" value="lib" />
+ <property name="release.dir" value="release" />
+ <property name="dist.dir" value="retroweaver-${version}" />
+
+ <property name="main.class" value="com.rc.retroweaver.gui.RetroWeaverGui" />
+ <property name="dependency.classes.dir" value="dependency-classes" />
+
+ <property name="backport.jar" value="${lib.dir}/backport-util-concurrent.jar" />
+ <property name="junit.jar" value="${lib.dir}/junit.jar" />
+ <property name="asm.jar" value="${lib.dir}/asm-2.2.jar" />
+ <property name="asm-commons.jar" value="${lib.dir}/asm-commons-2.2.jar" />
+ <property name="ant.jar" value="${ant.home}/lib/ant.jar" />
+
+ <property name="test.main.name" value="com.rc.retroweaver.tests.RetroweaverTestSuite" />
+
+ <available file="${pmd.home}" type="dir" property="pmd.present" />
+
+ <property name="coverage.dir" value="coverage" />
+
+ <available file="${emma.home}" type="dir" property="emma.present" />
+
+ <path id="emma.classpath">
+ <pathelement location="${emma.home}/lib/emma.jar" />
+ <pathelement location="${emma.home}/lib/emma_ant.jar" />
+ </path>
+
+ <path id="test.classpath">
+ <pathelement location="${release.dir}/retroweaver-tests-${version}.jar" />
+ <pathelement location="${release.dir}/retroweaver-rt-${version}.jar" />
+ <pathelement location="${backport.jar}" />
+ <pathelement location="${junit.jar}" />
+ </path>
+
+ <target name="init">
+ <tstamp />
+ <mkdir dir="${classes.dir}" />
+ <mkdir dir="${weaved_classes.dir}" />
+ <mkdir dir="${test_classes.dir}" />
+ <mkdir dir="${weaved_test_classes.dir}" />
+ <mkdir dir="${release.dir}" />
+ </target>
+
+ <target name="clean" description="Clean all temperatory files">
+ <delete quiet="yes" includeEmptyDirs="true">
+ <fileset dir="${classes.dir}" />
+ <fileset dir="${weaved_classes.dir}" />
+ <fileset dir="${test_classes.dir}" />
+ <fileset dir="${weaved_test_classes.dir}" />
+ <fileset dir="${release.dir}" />
+ <fileset dir="${dependency.classes.dir}" />
+ </delete>
+ </target>
+
+ <target name="compile" depends="init" description="Compile all source files">
+ <javac source="1.5" target="1.5" srcdir="${src.dir}" excludes="com/rc/retroweaver/tests/**" destdir="${classes.dir}" debug="on" deprecation="true">
+ <classpath>
+ <fileset dir="${lib.dir}">
+ <include name="**/*.jar" />
+ </fileset>
+ </classpath>
+ </javac>
+
+ <exec executable="svnversion" outputproperty="buildNumber">
+ <arg line="." />
+ </exec>
+
+ <propertyfile file="${classes.dir}/retroweaver.properties">
+ <entry key="retroweaver.version" value="${version}" />
+ <entry key="retroweaver.buildNumber" value="${buildNumber}" />
+ </propertyfile>
+
+ <copy todir="${weaved_classes.dir}">
+ <fileset dir="${classes.dir}" />
+ </copy>
+
+ <!-- weave runtime and weaver classes -->
+ <java classname="com.rc.retroweaver.Weaver">
+ <arg value="-target" />
+ <arg value="1.2" />
+ <arg value="-source" />
+ <arg value="${weaved_classes.dir}" />
+ <classpath>
+ <pathelement location="${classes.dir}" />
+ <fileset dir="${lib.dir}">
+ <include name="**/*" />
+ </fileset>
+ </classpath>
+ </java>
+
+ <jar destfile="${release.dir}/retroweaver-${version}.jar">
+ <manifest>
+ <attribute name="Main-Class" value="${main.class}" />
+ </manifest>
+ <fileset dir="${weaved_classes.dir}">
+ <exclude name="com/rc/retroweaver/runtime/" />
+ </fileset>
+ </jar>
+
+ <jar destfile="${release.dir}/retroweaver-rt-${version}.jar">
+ <fileset dir="${weaved_classes.dir}">
+ <include name="com/rc/retroweaver/runtime/*.class" />
+ </fileset>
+ </jar>
+
+ <unjar src="${asm.jar}" dest="${dependency.classes.dir}" />
+ <unjar src="${asm-commons.jar}" dest="${dependency.classes.dir}" />
+ <delete dir="${dependency.classes.dir}/META-INF" />
+ <jar destfile="${release.dir}/retroweaver-all-${version}.jar">
+ <manifest>
+ <attribute name="Main-Class" value="${main.class}" />
+ </manifest>
+ <fileset dir="${weaved_classes.dir}">
+ </fileset>
+ <fileset dir="${dependency.classes.dir}" />
+ </jar>
+
+ <!-- validate weaved classes: fails if verifier finds missing methods -->
+ <taskdef name="retroweaver" classname="com.rc.retroweaver.ant.RetroWeaverTask" classpath="${release.dir}/retroweaver-all-${version}.jar" />
+ <path id="retroweaverclasspath">
+ <pathelement location="${weaved_classes.dir}" />
+ <pathelement location="${jre14.runtime}" />
+ <pathelement location="${junit.jar}" />
+ <pathelement location="${backport.jar}" />
+ <pathelement location="${asm.jar}" />
+ <pathelement location="${asm-commons.jar}" />
+ <pathelement location="${ant.jar}" />
+ </path>
+ <retroweaver target="1.4" lazy="false" verbose="false" stripsignatures="true" verify="true" failonerror="true">
+ <dirset dir="${weaved_classes.dir}" />
+ <classpath refid="retroweaverclasspath" />
+ </retroweaver>
+ </target>
+
+ <target name="dist" depends="clean, compile, test" description="prepare a release">
+ <delete quiet="yes" includeEmptyDirs="true">
+ <fileset dir="${dist.dir}" />
+ </delete>
+ <mkdir dir="${dist.dir}" />
+ <copy todir="${dist.dir}/docs">
+ <fileset dir="docs">
+ <exclude name="**/.svn" />
+ </fileset>
+ </copy>
+ <copy todir="${dist.dir}">
+ <fileset dir=".">
+ <include name="build.xml" />
+ <include name="build.properties" />
+ <include name="ChangeLog.txt" />
+ <include name="${lib.dir}/*.jar" />
+ <include name="${release.dir}/*.jar" />
+ <include name="${src.dir}/**/*.java" />
+ </fileset>
+ </copy>
+ <zip destfile="${dist.dir}.zip">
+ <fileset dir=".">
+ <include name="${dist.dir}/**/*" />
+ </fileset>
+ </zip>
+ <delete quiet="yes" includeEmptyDirs="true">
+ <fileset dir="${dist.dir}" />
+ </delete>
+ </target>
+
+ <target name="test" depends="testsetup, test12, test13, test14, testibm14, testbea14, testrmic14, test15, testibm15, testbea15, test16" description="Compiles and executes retroweaver tests">
+ <echo message="Testing completed" />
+ </target>
+
+ <target name="testsetup" depends="init" description="Compiles and executes retroweaver tests">
+ <!-- compile and weave the tests classes -->
+ <javac source="1.5" target="1.5" srcdir="${src.dir}" includes="com/rc/retroweaver/tests/**" destdir="${test_classes.dir}" classpath="${junit.jar};${release.dir}/retroweaver-rt-${version}.jar" debug="on" deprecation="true">
+ </javac>
+
+ <javac source="1.5" target="1.5" srcdir="${src.dir}" includes="com/rc/retroweaver/tests/**" destdir="${weaved_test_classes.dir}" classpath="${junit.jar};${release.dir}/retroweaver-rt-${version}.jar" debug="on" deprecation="true">
+ </javac>
+
+ <echo message="" />
+ <echo message="===========================================" />
+ <echo message="Running tests..." />
+ <echo message="Warnings are expected here." />
+ <echo message="===========================================" />
+ <echo message="" />
+
+ <taskdef name="retroweaver" classname="com.rc.retroweaver.ant.RetroWeaverTask" classpath="${release.dir}/retroweaver-all-${version}.jar" />
+
+ <condition property="verify.runtime" value="${jre12.runtime}" else="${jre14.runtime}">
+ <available file="${jre12.runtime}" type="file" />
+ </condition>
+ <echo message="Using runtime: ${verify.runtime}" />
+ <path id="verifyclasspath">
+ <pathelement location="${verify.runtime}" />
+ <pathelement location="${junit.jar}" />
+ <pathelement location="${release.dir}/retroweaver-rt-${version}.jar" />
+ <pathelement location="${backport.jar}" />
+ <pathelement location="${weaved_test_classes.dir}" />
+ </path>
+
+ <retroweaver target="1.2" lazy="false" verbose="false" stripsignatures="false" verify="true" failonerror="false">
+ <dirset dir="${weaved_test_classes.dir}" />
+ <classpath refid="verifyclasspath" />
+ </retroweaver>
+
+ <jar destfile="${release.dir}/retroweaver-tests-${version}.jar">
+ <fileset dir="${weaved_test_classes.dir}">
+ <exclude name="com/rc/retroweaver/tests/MissingClass.class"/>
+ </fileset>
+ <fileset dir="${src.dir}">
+ <include name="com/rc/retroweaver/tests/data/*.ser"/>
+ </fileset>
+ </jar>
+ </target>
+
+ <target name="test12" if="jre12.present">
+ <junit fork="yes" haltonfailure="yes" jvm="${jre12.jvm}">
+ <jvmarg value="-Djava.compiler=NONE" />
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="test13" if="jre13.present">
+ <junit fork="yes" haltonfailure="yes" jvm="${jre13.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="test14">
+ <junit fork="yes" haltonfailure="yes" jvm="${jre14.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="testibm14" if="ibm14.present">
+ <junit fork="yes" haltonfailure="yes" jvm="${ibm14.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="testbea14" if="bea14.present">
+ <junit fork="yes" haltonfailure="no" jvm="${bea14.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="testrmic14">
+ <pathconvert property="rmic.path" refid="test.classpath" />
+ <exec executable="${jdk14.rmic}" failonerror="true">
+ <arg value="-classpath" />
+ <arg value="${rmic.path}" />
+ <arg value="com.rc.retroweaver.tests.RmicEnumTest" />
+ <arg value="-d" />
+ <arg value="${weaved_test_classes.dir}" />
+ </exec>
+ <echo message="Rmic test completed" />
+ </target>
+
+ <target name="test15">
+ <junit fork="yes" haltonfailure="yes" jvm="${jre15.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="testibm15" if="ibm15.present">
+ <junit fork="yes" haltonfailure="yes" jvm="${ibm15.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="testbea15" if="bea15.present">
+ <junit fork="yes" haltonfailure="no" jvm="${bea15.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="test16" if="jre16.present">
+ <junit fork="yes" haltonfailure="yes" jvm="${jre16.jvm}">
+ <test name="${test.main.name}" />
+ <formatter type="brief" usefile="false" />
+ <classpath refid="test.classpath" />
+ </junit>
+ </target>
+
+ <target name="coverage" depends="dist" description="Run coverage test of runtime classes">
+ <fail unless="emma.present" message="EMMA location is not defined properly" />
+
+ <echo message="" />
+ <echo message="===========================================" />
+ <echo message="Coverage report" />
+ <echo message="===========================================" />
+ <echo message="" />
+
+ <mkdir dir="${coverage.dir}" />
+ <delete quiet="yes" includeEmptyDirs="no">
+ <fileset dir="${coverage.dir}" >
+ <include name="coverage*.emma" />
+ </fileset>
+ </delete>
+
+ <taskdef resource="emma_ant.properties" classpathref="emma.classpath" />
+
+ <emmajava enabled="${jre13.present}" fork="yes" jvm="${jre13.jvm}" libclasspathref="emma.classpath" classname="junit.textui.TestRunner" classpathref="test.classpath" sourcepath="${src.dir}" fullmetadata="true" dumpsessiondata="true" outfile="${coverage.dir}/coverage13.emma" verbosity="quiet" >
+ <arg line="${test.main.name}" />
+ <filter includes="com.rc.retroweaver.runtime.*" />
+ <txt outfile="${coverage.dir}/coverage13.txt" />
+ </emmajava>
+ <emmajava fork="yes" jvm="${jre14.jvm}" libclasspathref="emma.classpath" classname="junit.textui.TestRunner" classpathref="test.classpath" sourcepath="${src.dir}" fullmetadata="true" dumpsessiondata="true" outfile="${coverage.dir}/coverage14.emma" verbosity="quiet" >
+ <arg line="${test.main.name}" />
+ <filter includes="com.rc.retroweaver.runtime.*" />
+ <txt outfile="${coverage.dir}/coverage14.txt" />
+ </emmajava>
+ <emma>
+ <report sourcepath="${src.dir}">
+ <fileset dir="${coverage.dir}" >
+ <include name="*.emma" />
+ </fileset>
+ <html outfile="${coverage.dir}/index.html" />
+ </report>
+ </emma>
+ </target>
+
+ <target name="docs">
+ <javadoc
+ destdir="docs/api"
+ author="true"
+ version="true"
+ use="true"
+ source="1.5"
+ linksource="yes"
+ windowtitle="Test API">
+
+ <packageset dir="${src.dir}" defaultexcludes="yes">
+ <include name="com/**"/>
+ </packageset>
+ </javadoc>
+ </target>
+
+ <target name="pmd">
+ <fail unless="pmd.present" message="PMD location is not defined properly" />
+ <path id="pmd.classpath">
+ <fileset dir="${pmd.home}/lib">
+ <include name="*.jar"/>
+ </fileset>
+ </path>
+
+ <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpathref="pmd.classpath"/>
+
+ <pmd shortFilenames="true" targetjdk="1.5">
+ <ruleset>rulesets/junit.xml</ruleset>
+ <ruleset>rulesets/favorites.xml</ruleset>
+ <formatter type="html" toFile="pmd_report.html" linkPrefix="docs/api/src-html/"/>
+ <fileset dir="${src.dir}">
+ <include name="**/*.java" />
+ <exclude name="com/rc/retroweaver/optimizer/*.java" />
+ </fileset>
+ </pmd>
+ </target>
+
+</project>
+
Added: incubator/abdera/java/trunk/build/tools/retroweaver/docs/asm-license.txt
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/tools/retroweaver/docs/asm-license.txt?rev=419720&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/tools/retroweaver/docs/asm-license.txt (added)
+++ incubator/abdera/java/trunk/build/tools/retroweaver/docs/asm-license.txt Thu Jul 6 15:08:30 2006
@@ -0,0 +1,28 @@
+
+ ASM: a very small and fast Java bytecode manipulation framework
+ Copyright (c) 2000-2005 INRIA, France Telecom
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+ 1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holders nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ THE POSSIBILITY OF SUCH DAMAGE.
Added: incubator/abdera/java/trunk/build/tools/retroweaver/docs/documentation.html
URL: http://svn.apache.org/viewvc/incubator/abdera/java/trunk/build/tools/retroweaver/docs/documentation.html?rev=419720&view=auto
==============================================================================
--- incubator/abdera/java/trunk/build/tools/retroweaver/docs/documentation.html (added)
+++ incubator/abdera/java/trunk/build/tools/retroweaver/docs/documentation.html Thu Jul 6 15:08:30 2006
@@ -0,0 +1,95 @@
+<html>
+
+<head>
+ <title>Retroweaver</title>
+ <style type="text/css">
+ <!--body { margin: 0; padding: 0 } -->
+ </style>
+</head>
+
+<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0">
+
+<div align="center">
+<center>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+ <td width="100%" background="images/sliver.jpg"><font face="Arial">
+ <map name="FPMap0">
+ <area href="index.html" coords="300, 75, 357, 94" shape="rect">
+ <area href="news.html" coords="352, 75, 425, 94" shape="rect">
+ <area href="overview.html" coords="425, 75, 520, 94" shape="rect">
+ <area href="documentation.html" coords="520, 75, 630, 93" shape="rect">
+ </map>
+ <img border="0" src="images/seascape.gif" usemap="#FPMap0" width="756" height="133"></font>
+ </td>
+ </tr>
+</table>
+</center>
+</div>
+
+<div align="center">
+<center>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+ <tr>
+
+ <td width="175" valign="top" background="images/menubg.gif">
+ <font size="2" face="Arial"><img border="0" src="images/headerbitty.gif" width="175" height="64"></font>
+ </td>
+
+ <td>
+ <font size="2" face="Arial"><br><b>Documentation</b></font>
+ <font size="2" face="Arial">
+ <p><b>Supported 1.5 Language Features</b>
+ <ul>
+ <li>generics</li>
+ <li>extended for loops</li>
+ <li>static imports</li>
+ <li>autoboxing/unboxing</li>
+ <li>varargs</li>
+ <li>enumerations</li>
+ <li>annotations</li>
+ </ul>
+ </p>
+
+ <p><b>Developer's Guide</b>
+ <blockquote>The Retroweaver Developer's Guide is available in the following formats:</blockquote>
+ <ol>
+ <li><a href="guide/retroweaver-guide.pdf">PDF</a></li>
+ <li><a href="guide/retroweaver-guide.html">HTML</a></li>
+ <li><a href="guide/retroweaver-guide.odt">OpenOffice</a></li>
+ </ol>
+ </p>
+
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <p> </p>
+ <p align="right"><A href="http://sourceforge.net"> <IMG src="http://sourceforge.net/sflogo.php?group_id=104240&type=5" width="210" height="62" border="0" alt="SourceForge.net Logo"/></A> </p>
+ <p> </p>
+ </font>
+ </td>
+ </tr>
+</table>
+</center>
+</div>
+
+<div align="center">
+<center>
+<table border="0" cellpadding="0" cellspacing="0" width="100%">
+<tr>
+<td width="100%" bgcolor="#3999E7">
+<p align="center"><font face="Arial"><font size="2"> </font><font size="1">Site design by <a href="http://www.pegaweb.com"><b><font color="#000000">Pegasus Web Design Resources</font></b></a></font></font></td>
+</tr>
+</table>
+</center>
+</div>
+
+<p> </p>
+
+</body>
+
+</html>