Changes in retroweaver 2.0.2 (November 10 2007)

  - isSynthethic(), isBridge(), isVarArgs() implemented for Method, Constructor
    and Field reflection classes

    Important Note: the rmic workaround had to be disabled to make the
    reflection methods work.

  - Update to ASM 3.1

  - junit reverted to 3.8.2 so that tests can be done with jdk 1.3

  - maven configuration updates

Changes in retroweaver 2.0.1 (September 30 2007)

  - Bug fix: workaround for ReentrantReadWriteLock readLock() and writeLock()
    incompatible return types
    (bug report by Tushar)

  - backport-util-concurrent updated to 3.1

  - Bug fix(1770111): java.util.zip.ZipException: invalid entry compressed size
    (bug report by mike2103)

  - Bug fix: Array types of mirrored classes not translated
    (based on bug report and patch from olsok)

  - Bug fix: check for runtime classes during Weaving raised NPE
    (only if runtime classes were not present and RetroWeaver was used as
    main class instead of Weaver.)

  - Bug fix(1675220) String_.format in retroweaver RT doesn't handle %%

Changes in retroweaver 2.0 (March 5 2007)

  - Patch to bettter simulate .class applied
    (Xavier Le Vourch).

  - Extra support for reflection features
    (Xavier Le Vourch).

  - Bug fix(1655942) incorrect byte code transformations for constructors
    reported as: java.lang.VerifyError in classes referencing BigDecimal(int)
    (Bug report by Steve Rees)
    (Xavier Le Vourch).

  - Bug fixes: local variable descriptors and signatures were not translated
    correctly.
    (Xavier Le Vourch).

  - Error is raised if retroweaver runtime is not present during weaving.
    (Xavier Le Vourch).

  - Bug fix: exception clauses were not translated correctly.
    (Xavier Le Vourch).

  - Bug fix(1561117) java.lang.Thread stackTrace APIs not converted
    Thread.getStackTrace() implemented for current thread
    (Xavier Le Vourch).

Changes in retroweaver 2.0 Beta 4 (February 3 2007)

  - Extra support for reflection features
    (Xavier Le Vourch).

  - String.contains() added
    (Xavier Le Vourch).

  - bug fixes: annotations
    (Xavier Le Vourch).

  - basic java.util.Formatter support added
    (Xavier Le Vourch).

  - append() methods added for PrintStream
    (Xavier Le Vourch).

Changes in retroweaver 2.0 Beta 3 (January 26 2007)

  - Bug fix(1589128) NoSuchMethodError: String.replace(CharSequence,CharSequ
    (Xavier Le Vourch).

  - Bug fix(1589272) append() methods added for CharArrayWriter, PrintWriter
    and StringWriter.
    Initially reported as NoSuchMethodError: StringWriter.append(CharSequence,
    (Xavier Le Vourch).

  - Bug fix(1614738) field descriptors were not translated correctly.
    Initially reported as NoClassDefFoundError: java/util/concurrent/Executor
    (Xavier Le Vourch).

  - backport-util-concurrent updated to 3.0
    (Xavier Le Vourch).

  - Bug fix (1611825) NullPointerException in append for null CharSequences
    null CharSequence was not handled correctly in the StringBuffer and Writer
    classes.
    (Xavier Le Vourch).

  - Bug fix (1588560) Ant task should be silent by default
    (Bug report by Rob Oxspring)
    (Xavier Le Vourch).

  - Update to ASM 3.0
    (Xavier Le Vourch).

Changes in retroweaver 2.0 Beta 2 (October 10 2006)

  - Web site generation done using maven
    source moved to src/main/java for compatibility with maven reporting tools
    (Xavier Le Vourch).

  - Bug fix: make sure annotation arrays are cloned
    (Xavier Le Vourch).

  - Some classes from java.util are mirrored in concurrent backport
    Only classes introduced in 1.5 or 1.6 are mirrored:
      AbstractQueue, ArrayDeque, Deque, NavigableMap, NavigableSet,
      PriorityQueue, Queue
    (based on bug report from John V Sichi)
    (Xavier Le Vourch).

  - Appendable added to retroweaver runtime
    It works in 1.4 only as it depends on CharSequence
    (Xavier Le Vourch).

  - namespace option added to command line and ant task
    This allows users to provide their own runtime replacement classes or
    methods.
    (Xavier Le Vourch).

  - Static fields are now supported in retroweaver runtime
    (Xavier Le Vourch).

  - Support for append methods in java.io.Writer added (1.4 only)
    (Xavier Le Vourch).

Changes in retroweaver 2.0 Beta 1 (September 4 2006)

  - Constructors can now be simulated in mirror classes
    (Xavier Le Vourch).

  - package com.rc.retroweaver renamed net.sourceforge.retroweaver
    (Xavier Le Vourch).

  - Annotation support added
    (implementation mostly done by Toby Reyelts).
    (merging in current source tree, ASM conversion, fixes and extensions
    by Xavier Le Vourch).

  - Update to ASM 3.0_RC1
    (Xavier Le Vourch).

  - Support for Class methods getSimpleName() and isAnonymousClass()
    Feature request (1542674) RFE: Class.getSimpleName support
    (based on patch submitted by Arnaud Mergey)
    (Xavier Le Vourch).

  - New mirror mechanism to provide missing methods at runtime.
    This makes it easier to extend the runtime by just adding classes or
    methods.
    (implementation by Toby Reyelts).
    (merging in current source tree by Xavier Le Vourch).

Changes in retroweaver 1.2.5 (September 4 2006)

  - Bug fix (1520011) java.io.Writer, Appendable interface
    Synthetic bridge methods may be generated referencing the 1.5 Appendable
    class. Those methods are now removed.
    (bug report by Roland Haag)
    (Xavier Le Vourch).

  - Bug fix: test for ACC_BRIDGE & ACC_SYNTHETIC was incorrect
    (Xavier Le Vourch).

  - Custom attribute with Retroweaver info generated in each class file
    It contains:
    	- retroveaver version (int)
	- original class version (int)
	- weaving timestamp (long)

    The new option -stripAttributes disables custom attribute generation.
    (Xavier Le Vourch).

Changes in retroweaver 1.2.4 (August 13 2006)

  - maven plugin files are generated for each release
    (based on maven plugin on ibiblio uploaded by Jochen Wiedmann)
    (Xavier Le Vourch).

  - parseBoolean and compareTo in Boolean are weaved
    Bug fix (1520009) Boolean.parseBoolean
    (bug report by Roland Haag)
    (Xavier Le Vourch).

  - Arrays and Collections calls are weaved
    Bug fix (1520008) Usage of java.util.Arrays
    (bug report by Roland Haag)
    Feature request (1503062) missing methods
    (feature request by Alexander Merk)
    (Xavier Le Vourch).

  - Bug fix (1520006): translator could introduce duplicate methods
    (bug report by Roland Haag)
    (Xavier Le Vourch).

  - Bug fix (1536605) invalid import directive
    Patch (1507572) Constant pooling code generates a useless class constant
    (bug report by Alexander Darovsky)
    (patch by Dylan Adams)
    (Xavier Le Vourch).

  - backport-util-concurrent updated to 2.2
    (Xavier Le Vourch).

  - Update to ASM 2.2.3
    (Xavier Le Vourch).

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.
