struts-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From hus...@apache.org
Subject svn commit: r589617 - in /struts: site/src/site/xdoc/ struts2/trunk/ struts2/trunk/api/ struts2/trunk/apps/ struts2/trunk/apps/blank/ struts2/trunk/apps/mailreader/ struts2/trunk/apps/portlet/ struts2/trunk/apps/showcase/ struts2/trunk/assembly/ struts...
Date Mon, 29 Oct 2007 13:12:34 GMT
Author: husted
Date: Mon Oct 29 06:12:30 2007
New Revision: 589617

URL: http://svn.apache.org/viewvc?rev=589617&view=rev
Log:
WW-1715 Update POMs and backport for 2.1.1-SNAPSHOT. 


Modified:
    struts/site/src/site/xdoc/downloads.xml
    struts/struts2/trunk/api/pom.xml
    struts/struts2/trunk/apps/blank/pom.xml
    struts/struts2/trunk/apps/mailreader/pom.xml
    struts/struts2/trunk/apps/pom.xml
    struts/struts2/trunk/apps/portlet/pom.xml
    struts/struts2/trunk/apps/showcase/pom.xml
    struts/struts2/trunk/assembly/pom.xml
    struts/struts2/trunk/backport/LICENSE.txt
    struts/struts2/trunk/backport/readme.html
    struts/struts2/trunk/backport/translate.bat
    struts/struts2/trunk/core/pom.xml
    struts/struts2/trunk/plugins/codebehind/pom.xml
    struts/struts2/trunk/plugins/config-browser/pom.xml
    struts/struts2/trunk/plugins/dojo/pom.xml
    struts/struts2/trunk/plugins/jasperreports/pom.xml
    struts/struts2/trunk/plugins/jfreechart/pom.xml
    struts/struts2/trunk/plugins/jsf/pom.xml
    struts/struts2/trunk/plugins/pell-multipart/pom.xml
    struts/struts2/trunk/plugins/plexus/pom.xml
    struts/struts2/trunk/plugins/pom.xml
    struts/struts2/trunk/plugins/portlet/pom.xml
    struts/struts2/trunk/plugins/sitegraph/pom.xml
    struts/struts2/trunk/plugins/sitemesh/pom.xml
    struts/struts2/trunk/plugins/spring/pom.xml
    struts/struts2/trunk/plugins/struts1/pom.xml
    struts/struts2/trunk/plugins/tiles/pom.xml
    struts/struts2/trunk/pom.xml

Modified: struts/site/src/site/xdoc/downloads.xml
URL: http://svn.apache.org/viewvc/struts/site/src/site/xdoc/downloads.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/site/src/site/xdoc/downloads.xml (original)
+++ struts/site/src/site/xdoc/downloads.xml Mon Oct 29 06:12:30 2007
@@ -119,6 +119,9 @@
                     <a href="http://struts.apache.org/2.0.9/index.html">Struts 2.0.9</a>
                 </li>
                 <li>
+                    <a href="http://struts.apache.org/2.0.8/index.html">Struts 2.0.8</a>
+                </li>
+                <li>
                     <a href="http://struts.apache.org/2.0.6/index.html">Struts 2.0.6</a>
                 </li>
                 <li>

Modified: struts/struts2/trunk/api/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/api/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/api/pom.xml (original)
+++ struts/struts2/trunk/api/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-api</artifactId>

Modified: struts/struts2/trunk/apps/blank/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/blank/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/apps/blank/pom.xml (original)
+++ struts/struts2/trunk/apps/blank/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-apps</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-blank</artifactId>

Modified: struts/struts2/trunk/apps/mailreader/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/apps/mailreader/pom.xml (original)
+++ struts/struts2/trunk/apps/mailreader/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-apps</artifactId>
-      <version>2.1.0</version>
+      <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-mailreader</artifactId>

Modified: struts/struts2/trunk/apps/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/apps/pom.xml (original)
+++ struts/struts2/trunk/apps/pom.xml Mon Oct 29 06:12:30 2007
@@ -28,7 +28,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-apps</artifactId>

Modified: struts/struts2/trunk/apps/portlet/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/portlet/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/apps/portlet/pom.xml (original)
+++ struts/struts2/trunk/apps/portlet/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
       <groupId>org.apache.struts</groupId>
       <artifactId>struts2-apps</artifactId>
-      <version>2.1.0</version>
+      <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-portlet</artifactId>

Modified: struts/struts2/trunk/apps/showcase/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/showcase/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/apps/showcase/pom.xml (original)
+++ struts/struts2/trunk/apps/showcase/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-apps</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-showcase</artifactId>

Modified: struts/struts2/trunk/assembly/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/assembly/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/assembly/pom.xml (original)
+++ struts/struts2/trunk/assembly/pom.xml Mon Oct 29 06:12:30 2007
@@ -33,7 +33,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
 
     <scm>

Modified: struts/struts2/trunk/backport/LICENSE.txt
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/backport/LICENSE.txt?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/backport/LICENSE.txt (original)
+++ struts/struts2/trunk/backport/LICENSE.txt Mon Oct 29 06:12:30 2007
@@ -1,6 +1,3 @@
- Retrotranslator: a Java bytecode transformer that translates Java classes
- compiled with JDK 5.0 into classes that can be run on JVM 1.4.
-
  Copyright (c) 2005 - 2007 Taras Puchko
  All rights reserved.
 

Modified: struts/struts2/trunk/backport/readme.html
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/backport/readme.html?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/backport/readme.html (original)
+++ struts/struts2/trunk/backport/readme.html Mon Oct 29 06:12:30 2007
@@ -3,57 +3,62 @@
 <head>
     <title>Retrotranslator</title>
 </head>
-
 <body>
 <table border="0" width="98%">
     <tr>
         <td><h2>Retrotranslator</h2></td>
-        <td width="125" align="left"><a href="http://sourceforge.net"><img
+        <td width="125"><a href="http://sourceforge.net"><img
                 src="http://sflogo.sourceforge.net/sflogo.php?group_id=153566&amp;type=2"
                 width="125" height="37" border="0" alt="SourceForge.net Logo"/></a>
         </td>
+        <td width="10">&nbsp;
+        </td>
+        <td width="127"><a href="http://www.jetbrains.com/idea/"><img
+                src="http://www.jetbrains.com/idea/opensource/img/banners/idea125x37_white.gif"
+                width="127" height="37" border="0" alt="The best Java IDE"/></a>
+        </td>
     </tr>
 </table>
-
 <h4>Contents</h4>
 <ol>
     <li><a href="#what">What is Retrotranslator?</a></li>
     <li><a href="#features">What Java 5 features are supported?</a></li>
     <li><a href="#commandline">How to use Retrotranslator from a command line?</a></li>
+    <li><a href="#jarfile">How to produce a JAR file compatible with J2SE 1.4?</a></li>
     <li><a href="#ant">How to use Retrotranslator from Apache Ant or Maven?</a></li>
     <li><a href="#idea">How to use Retrotranslator from IntelliJ IDEA?</a></li>
     <li><a href="#jit">How to use Just-in-Time Retrotranslator?</a></li>
-    <li><a href="#supported">What Java 5 classes and methods are supported?</a></li>
-    <li><a href="#extension">How to write an extension for Retrotranslator?</a></li>
+    <li><a href="#supported">What API is supported on J2SE 1.4?</a></li>
+    <li><a href="#extension">How to write an extension?</a></li>
     <li><a href="#limitations">What are the limitations?</a></li>
     <li><a href="#alternative">Alternative tools</a></li>
     <li><a href="#contact">Contact</a></li>
     <li><a href="#license">License</a></li>
 </ol>
-
 <h4><a name="what">What is Retrotranslator?</a></h4>
-<a href="http://sourceforge.net/projects/retrotranslator">Retrotranslator</a> is a Java bytecode transformer
-that translates Java classes compiled with JDK 5.0 into classes that can be run on JVM 1.4.
-It is a free, open-source tool based on the <a href="http://asm.objectweb.org/">ASM bytecode manipulation framework</a>
-and concurrency utilities
-<a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/index.php">backported to Java 1.4</a>.
 
+<p>
+    Retrotranslator is a tool that makes Java applications compatible with various versions of the Java platform.
+    It supports all Java 5 language features and a significant part of Java 5 API on J2SE 1.4. In other Java
+    environments only the Java 5 language features that does not require new API are supported.
+    Retrotranslator is based on the <a href="http://asm.objectweb.org/">ASM</a> bytecode manipulation framework and the
+    <a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/index.php">backport</a> of concurrency utilities.
+</p>
 <h4><a name="features">What Java 5 features are supported?</a></h4>
 <ul>
-    <li>Generics (generic types)</li>
-    <li>Annotations (metadata)</li>
+    <li>Generics</li>
+    <li>Annotations</li>
     <li>Reflection on generics and annotations</li>
-    <li>Typesafe enums (enumerated types)</li>
+    <li>Typesafe enums</li>
     <li>Autoboxing/unboxing</li>
-    <li>Enhanced for loop (for-each loop)</li>
-    <li>Varargs (variable arguments)</li>
+    <li>Enhanced for loop</li>
+    <li>Varargs</li>
     <li>Covariant return types</li>
     <li>Formatted output</li>
     <li>Static import</li>
     <li>Concurrency utilities</li>
     <li>Collections framework enhancements</li>
 </ul>
-
 <h4><a name="commandline">How to use Retrotranslator from a command line?</a></h4>
 <ol>
     <li><a href="http://sourceforge.net/project/showfiles.php?group_id=153566">Download</a>
@@ -61,7 +66,7 @@
         where <i>n.n.n</i> is the latest Retrotranslator release number.
     </li>
     <li>
-        Compile your classes with JDK 5.0 and put them into some directory, e.g. <code>myclasses</code>.
+        Compile your classes with Java 5 or later and put them into some directory, e.g. <code>myclasses</code>.
     </li>
     <li>
         Go to the unzipped directory and execute:<br>
@@ -72,235 +77,179 @@
         <code>backport-util-concurrent-<i>n.n</i>.jar</code> into the classpath of your application.
     </li>
     <li>
-        Run or debug the application as usual on J2SE 1.4.x, preferably 1.4.2.
+        Run or debug the application as usual on J2SE 1.4.x.
     </li>
 </ol>
-
-<p><a name="syntax">The full command line syntax:</a><br>
+<p><a name="syntax">The command line syntax:</a><br>
     <code>java -jar retrotranslator-transformer-<i>n.n.n</i>.jar &lt;options&gt;</code>
     <br>or<br>
-    <code>java -cp retrotranslator-transformer-<i>n.n.n</i>.jar net.sf.retrotranslator.transformer.Retrotranslator &lt;options&gt;</code></p>
+    <code>java -cp retrotranslator-transformer-<i>n.n.n</i>.jar
+        net.sf.retrotranslator.transformer.Retrotranslator &lt;options&gt;</code></p>
 <table border="1" cellspacing="0" cellpadding="5">
-    <tr><th>Option</th><th>Description</th><th>Default</th></tr>
-    <tr>
-        <td nowrap><code>-srcdir</code></td>
-        <td>The directory with classes that should be translated (may be specified several times).</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-srcjar</code></td>
-        <td>The directory with classes that should be translated (may be specified several times).</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-destdir</code></td>
-        <td>The directory to place translated classes.</td>
-        <td>Location of sources</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-destjar</code></td>
-        <td>The JAR file to place translated classes.</td>
-        <td>Location of sources</td>
-    </tr>
-    <tr>
-        <td nowrap><a name="option_advanced"><code>-advanced</code></a></td>
-        <td>Whether to use alternative implementations of Java 1.4 classes and methods for better Java 5 compatibility.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-verify</code></td>
-        <td>Asks the translator to examine translated bytecode for references to classes, methods, or fields
-            that cannot be found in the provided classpath.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-classpath</code></td>
-        <td>The classpath for verification including <code>rt.jar</code>, <code>jce.jar</code>,
-            <code>jsse.jar</code> (from JRE 1.4), <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code>,
-            and <code>backport-util-concurrent-<i>n.n</i>.jar</code>.</td>
-        <td>Current classpath</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-srcmask</code></td>
-        <td>The wildcard pattern specifying files that should be translated (either bytecode or UTF-8 text),
-            e.g. "<code>*.class;*.tld</code>". There are three special characters: "<code>*?;</code>".
-        </td>
-        <td>*.class</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-embed</code></td>
-        <td>Package name for a private copy of <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code> and
-            <code>backport-util-concurrent-<i>n.n</i>.jar</code> to be put into <code>-destdir</code> or <code>-destjar</code>.
-            This makes your application independent of other versions of Retrotranslator present in the classpath.
-            </td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td nowrap><a name="option_backport"><code>-backport</code></a></td>
-        <td>Informs the translator about <a href="#extension">user-defined</a> backport packages.
-            Package names should be separated by semicolons.</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-target</code></td>
-        <td>To make Java 6 classes compatible with Java 5 set this option to 1.5 and supply
-            <a href="#extension">user-defined</a> backport packages via the <code>backport</code> option.</td>
-        <td>1.4</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-lazy</code></td>
-        <td>Asks the translator to only transform classes compiled with a <code>target</code> greater than the current one.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-stripsign</code></td>
-        <td>Asks the translator to strip signature (generics) information.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-verbose</code></td>
-        <td>Asks the translator for verbose output.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-retainapi</code></td>
-        <td>Asks the translator to modify classes for JVM 1.4 compatibility but keep use of Java 5 API.
-            References introduced by a compiler will also remain unchanged,
-            like the use of <code>java.lang.StringBuilder</code> for string concatenation
-            or the implicit <code>valueOf</code> method call for autoboxing.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td nowrap><code>-retainflags</code></td>
-        <td>Asks the translator to keep Java 5 specific access modifiers.</td>
-        <td>Off</td>
-    </tr>
+<tr>
+    <th>Option</th>
+    <th>Description</th>
+    <th>Default</th>
+</tr>
+<tr>
+    <td nowrap><code>-srcdir &lt;path&gt;</code></td>
+    <td>The directory with the files to process (may be specified several times).</td>
+    <td>-</td>
+</tr>
+<tr>
+    <td nowrap><code>-srcjar &lt;file&gt;</code></td>
+    <td>The JAR archive file with the files to process (may be specified several times).</td>
+    <td>-</td>
+</tr>
+<tr>
+    <td nowrap><code>-destdir &lt;path&gt;</code></td>
+    <td>The directory to place processed files.</td>
+    <td>The source directory.</td>
+</tr>
+<tr>
+    <td nowrap><code>-destjar &lt;file&gt;</code></td>
+    <td>The JAR archive file to place processed files.</td>
+    <td>The source JAR file.</td>
+</tr>
+<tr>
+    <td nowrap><code>-srcmask &lt;mask&gt;</code></td>
+    <td>The wildcard pattern specifying the files to transform rather than copy
+        (classes or UTF-8 text files), e.g. <code>*.class;?*.tld</code>.
+    </td>
+    <td><code>*.class</code></td>
+</tr>
+<tr>
+    <td nowrap><a name="option_target"><code>-target &lt;version&gt;</code></a></td>
+    <td>The version of the JVM where classes should be able to run. The supported targets are
+        1.1, 1.2, 1.3, 1.4, and 1.5. While API support is available only for the 1.4 target,
+        user-defined <a href="#option_backport">backport</a> classes may be used for other targets as well.
+    </td>
+    <td><code>1.4</code></td>
+</tr>
+<tr>
+    <td nowrap><a name="option_classpath"><code>-classpath &lt;path&gt;</code></a></td>
+    <td>The dependencies of the translated classes, including the target JVM and Retrotranslator itself.
+        The following files should be specified among others if the target is Sun JRE 1.4: <code>rt.jar</code>,
+        <code>jce.jar</code>, <code>jsse.jar</code>, <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code>,
+        and <code>backport-util-concurrent-<i>n.n</i>.jar</code>.
+        This option may be omitted if the current Java environment matches the target one.
+    </td>
+    <td>The current classpath.</td>
+</tr>
+<tr>
+    <td nowrap><a name="option_verify"><code>-verify</code></a></td>
+    <td>Asks the translator to examine translated bytecode for references to classes, methods, or fields
+        that cannot be found in the <a href="#option_classpath">classpath</a>.
+    </td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><a name="option_support"><code>-support &lt;features&gt;</code></a></td>
+    <td>Enables advanced features. The names specified should be separated with semicolons, e.g.
+        <code>ThreadLocal.remove;BigDecimal.setScale</code>.
+    </td>
+    <td>-</td>
+</tr>
+<tr>
+    <td nowrap><a name="option_advanced"><code>-advanced</code></a></td>
+    <td>Enables all advanced features at once, but it's recommended to enable only required features
+        in order to avoid compatibility issues.
+    </td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><a name="option_smart"><code>-smart</code></a></td>
+    <td>Makes all backport classes inheritable provided that the <a href="#option_classpath">classpath</a>
+        correctly reflects the target environment.
+        For example, the backport of the <code>Writer.append(String)</code> method may be used
+        to translate the following expression: <code>new&nbsp;FileWriter("file.tmp").append("Hello")</code>.
+    </td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><a name="option_backport"><code>-backport &lt;names&gt;</code></a></td>
+    <td>The <a href="#extension">backport</a> names separated with semicolons, e.g. <code>
+        com.myco.all;java.util:com.myco.ju;javax.net.SocketFactory:com.myco.jsse.Factory</code>.
+        The corresponding backport classes must be present in the <a href="#option_classpath">classpath</a>.
+    </td>
+    <td>-</td>
+</tr>
+<tr>
+    <td nowrap><code>-embed &lt;package&gt;</code></td>
+    <td>The package name for a partial copy of <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code> and
+        <code>backport-util-concurrent-<i>n.n</i>.jar</code> to be put along with translated classes.
+        This makes an application independent of other versions of Retrotranslator present in the classpath.
+    </td>
+    <td>-</td>
+</tr>
+<tr>
+    <td nowrap><code>-lazy</code></td>
+    <td>Asks the translator to transform and verify only the classes compiled with a target greater than the
+        <a href="#option_target">current</a> one.
+    </td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><code>-stripsign</code></td>
+    <td>Asks the translator to strip signature (generics) information.</td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><code>-verbose</code></td>
+    <td>Asks the translator for verbose output.</td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><code>-retainapi</code></td>
+    <td>Asks the translator to modify classes for JVM compatibility but keep use of API
+        unless the <a href="#option_backport">backport</a> option is specified.
+        Any references introduced by a compiler remain unchanged, like the use of
+        <code>java.lang.StringBuilder</code> for string concatenation or
+        the implicit <code>valueOf</code> method calls for autoboxing.
+    </td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><code>-retainflags</code></td>
+    <td>Asks the translator to keep Java 5 specific access modifiers.</td>
+    <td><code>false</code></td>
+</tr>
+<tr>
+    <td nowrap><code>-uptodatecheck</code></td>
+    <td>Asks the translator to skip processing of files if the destination files are newer.</td>
+    <td><code>false</code></td>
+</tr>
 </table>
+<h4><a name="jarfile">How to produce a JAR file compatible with J2SE 1.4?</a></h4>
+
 <p>
-    For example, if you have a Java 5 application <code>myapplication5.jar</code> you can use the following command
-    to produce <code>myapplication4.jar</code> that will run on J2SE 1.4 and is independent of Retrotranslator,
-    since required classes are added to the translated application with a different package name:
+    If you have <code>myapplication5.jar</code> file built with Java 5 you can use the following command to produce
+    <code>myapplication4.jar</code>. It will be compatible with Java 1.4 and independent of Retrotranslator because
+    backport classes are added to the translated application with a different package name:
 </p>
+
 <p>
     <code>java -jar retrotranslator-transformer-<i>n.n.n</i>.jar
-    -srcjar myapplication5.jar -destjar myapplication4.jar -embed com.mycompany.internal</code><br>
+        -srcjar myapplication5.jar -destjar myapplication4.jar -embed com.mycompany.internal</code><br>
 </p>
 
+<p>
+    Also it is recommended to specify the <a href="#option_classpath">classpath</a> and
+    <a href="#option_verify">verify</a> options. In case of verification failure try the
+    <a href="#option_smart">smart</a> and <a href="#option_advanced">advanced</a> options.
+</p>
 <h4><a name="ant">How to use Retrotranslator from Apache Ant or Maven?</a></h4>
 
-<p>The distribution contains an integrated <a href="http://ant.apache.org/">Apache Ant</a> task
-    <code>net.sf.retrotranslator.transformer.RetrotranslatorTask</code>. It has the following syntax:</p>
-<table border="1" cellspacing="0" cellpadding="5">
-    <tr><th>Attribute</th><th>Description</th><th>Default</th></tr>
-    <tr>
-        <td><code>srcdir</code></td>
-        <td>The directory with classes that should be translated.</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td><code>srcjar</code></td>
-        <td>The directory with classes that should be translated.</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td><code>destdir</code></td>
-        <td>The directory to place translated classes.</td>
-        <td>Location of sources</td>
-    </tr>
-    <tr>
-        <td><code>destjar</code></td>
-        <td>The JAR file to place translated classes.</td>
-        <td>Location of sources</td>
-    </tr>
-    <tr>
-        <td><code>advanced</code></td>
-        <td>Whether to use alternative implementations of Java 1.4 classes and methods for better Java 5 compatibility.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>verify</code></td>
-        <td>Asks the translator to examine translated bytecode for references to classes, methods, or fields
-            that cannot be found in the provided classpath.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>classpath</code></td>
-        <td>The classpath for the verification, including <code>rt.jar</code>, <code>jce.jar</code>,
-            <code>jsse.jar</code> (from JRE 1.4), <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code>,
-            and <code>backport-util-concurrent-<i>n.n</i>.jar</code>.
-        </td>
-        <td>Current classpath</td>
-    </tr>
-    <tr>
-        <td><code>classpathref</code></td>
-        <td>The classpath for the verification, given as a reference to a path defined elsewhere.
-        </td>
-        <td>Current classpath</td>
-    </tr>
-    <tr>
-        <td><code>srcmask</code></td>
-        <td>The wildcard pattern specifying files that should be translated (either bytecode or UTF-8 text),
-            e.g. "<code>*.class;*.tld</code>". There are three special characters: "<code>*?;</code>".
-        </td>
-        <td>*.class</td>
-    </tr>
-    <tr>
-        <td><code>embed</code></td>
-        <td>Package name for a private copy of <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code> and
-            <code>backport-util-concurrent-<i>n.n</i>.jar</code> to be put into <code>-destdir</code> or <code>-destjar</code>.
-            This makes your application independent of other versions of Retrotranslator present in the classpath.
-            </td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td><code>backport</code></td>
-        <td>Informs the translator about <a href="#extension">user-defined</a> backport packages.
-            Package names should be separated by semicolons.</td>
-        <td>-</td>
-    </tr>
-    <tr>
-        <td><code>target</code></td>
-        <td>Set this option to 1.5 and supply <a href="#extension">user-defined</a> backport packages via
-            the <code>backport</code> option to make Java 6 classes compatible with Java 5.</td>
-        <td>1.4</td>
-    </tr>
-    <tr>
-        <td><code>lazy</code></td>
-        <td>Asks the translator to only transform classes compiled with a <code>target</code> greater than the current one.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>stripsign</code></td>
-        <td>Asks the translator to strip signature (generics) information.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>verbose</code></td>
-        <td>Asks the translator for verbose output.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>retainapi</code></td>
-        <td>Asks the translator to modify classes for JVM 1.4 compatibility but keep use of Java 5 API.
-            References introduced by a compiler will also remain unchanged,
-            like the use of <code>java.lang.StringBuilder</code> for string concatenation
-            or the implicit <code>valueOf</code> method call for autoboxing.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>retainflags</code></td>
-        <td>Asks the translator to keep Java 5 specific access modifiers.</td>
-        <td>Off</td>
-    </tr>
-    <tr>
-        <td><code>failonwarning</code></td>
-        <td>Indicates whether the build will fail when there are verification warnings.</td>
-        <td>On</td>
-    </tr>
-</table>
-<p>
-    You may use nested <code>fileset</code>, <code>jarfileset</code>, and <code>dirset</code> elements to specify
-    source files and <code>classpath</code> elements to specify classpath. For example:
+<p>The distribution contains an <a href="http://ant.apache.org/">Apache Ant</a> task
+    <code>net.sf.retrotranslator.transformer.RetrotranslatorTask</code>. Every <a href="#commandline">command line</a>
+    option can be set using the corresponding attribute. In addition the source files can be specified with nested
+    <code>fileset</code>, <code>jarfileset</code>, and <code>dirset</code> elements and the
+    <a href="#option_classpath">classpath</a> can be set with nested <code>classpath</code>
+    elements or the <code>classpathref</code> attribute.
+    The source directories specified with <code>srcdir</code>, <code>dirset</code>,
+    and the <code>dir</code> attribute of <code>fileset</code> should contain the root package of the classes.
+    In case of warnings the build fails unless the value of
+    the <code>failonwarning</code> attribute is set to <code>false</code>. For example:
 </p>
 <pre>
     &lt;path id="classpath"&gt;
@@ -308,7 +257,7 @@
     &lt;/path&gt;
     &lt;taskdef name="retrotranslator" classpathref="classpath"
              classname="net.sf.retrotranslator.transformer.RetrotranslatorTask" /&gt;
-    &lt;retrotranslator destdir="build/classes14" verify="true"&gt;
+    &lt;retrotranslator destdir="build/classes14" verify="true" failonwarning="false"&gt;
         &lt;fileset dir="build/classes15" includes="**/*.class"&gt;
         &lt;jarfileset dir="build/lib15" includes="**/*.jar"&gt;
         &lt;classpath location="${java14_home}/jre/lib/rt.jar"/&gt;
@@ -321,297 +270,690 @@
     from the <a href="http://mojo.codehaus.org/">Mojo Project</a>.
 </p>
 <h4><a name="idea">How to use Retrotranslator from IntelliJ IDEA?</a></h4>
+
 <p>
     There is a <a href="http://plugins.intellij.net/plugin/?id=145">plugin</a> to automatically translate and verify
     classes compiled by <a href="http://www.jetbrains.com/idea/">IntelliJ IDEA</a>, so you can develop in Java 5 but
     run and debug on JRE 1.4.
 </p>
-
 <h4><a name="jit">How to use Just-in-Time Retrotranslator?</a></h4>
-
 <p>
-    JIT Retrotranslator is able to translate at runtime Java classes loaded with any classloader.
-    It works on J2SE 1.4 from most JVM vendors like Sun, IBM, BEA, and Apple, but does nothing on J2SE 5.0.
-    However translation at runtime consumes additional memory and processing resources and it will not
-	work if your classes make use of Java 5 API but were compiled with "<code>-target 1.4</code>".
+    In order to run a Java 5 application on J2SE 1.4 start it with JIT Retrotranslator:
 </p>
 <ul>
     <li>
-        If you want to run a JAR file with the JIT, execute:<br>
         <code>java -cp retrotranslator-transformer-<i>n.n.n</i>.jar
-            net.sf.retrotranslator.transformer.JITRetrotranslator &lt;options&gt; -jar &lt;jarfile&gt; [&lt;args...&gt;]</code>
+            net.sf.retrotranslator.transformer.JITRetrotranslator
+            &lt;options&gt; -jar &lt;jarfile&gt; [&lt;args...&gt;]</code>
     </li>
     <li>
-        When the first option does not work or if you just want to run a class from your classpath, execute:<br>
         <code>java -cp retrotranslator-transformer-<i>n.n.n</i>.jar:&lt;classpath&gt;
-            net.sf.retrotranslator.transformer.JITRetrotranslator &lt;options&gt; &lt;class&gt; [&lt;args...&gt;]</code>
-    </li>
-    <li>
-        Alternatively you may simply call <code>JITRetrotranslator.run()</code> from some JVM 1.4 compatible class
-        before Java 5 classes are loaded.
+            net.sf.retrotranslator.transformer.JITRetrotranslator
+            &lt;options&gt; &lt;class&gt; [&lt;args...&gt;]</code>
     </li>
 </ul>
 <p>
-    JIT Retrotranslator can accept the <code><a href="#option_advanced">advanced</a></code>
-    and <code><a href="#option_backport">backport</a></code> options.
+    The options can include <code><a href="#option_support">support</a></code>,
+    <code><a href="#option_advanced">advanced</a></code>, <code><a href="#option_smart">smart</a></code>, and
+    <code><a href="#option_backport">backport</a></code>. When running on J2SE 5.0 JIT Retrotranslator simply calls
+    the application, but on J2SE 1.4 it also translates classes compiled for Java 5 or later. However this capability
+    depends on the current JVM and the application itself, so under certain conditions JIT Retrotranslator may be unable
+    to translate either a JAR file or classes from the classpath or both. 
 </p>
 
-<h4><a name="supported">What Java 5 classes and methods are supported?</a></h4>
+<h4><a name="supported">What API is supported on J2SE 1.4?</a></h4>
 <table border="1" cellspacing="0" cellpadding="5">
-    <tr><th>Package</th><th>Class</th><th>Methods and fields</th><th>Compatibility notes</th></tr>
-    <tr><td><code>java.lang.annotation</code></td><td>* (all classes)</td><td>* (all methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>java.lang.instrument</code></td><td>* (all classes)</td><td>* (all methods)</td><td>
-        Bytecode instrumentation is not implemented.</td></tr>
-    <tr><td><code>java.util.concurrent,<br>java.util.concurrent.atomic,<br>java.util.concurrent.locks</code></td>
-        <td>almost all classes<sup><a href="#1">1</a></sup></td><td>almost all methods</td>
-        <td>The <code>LockSupport</code> class may be unusable due to poor efficiency.
-            The <code>Condition.awaitNanos(long)</code> method has
-        <a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/doc/api/edu/emory/mathcs/backport/java/util/concurrent/helpers/Utils.html#awaitNanos(edu.emory.mathcs.backport.java.util.concurrent.locks.Condition, long)">
-        little</a> accuracy guarantees.</td></tr>
-    <tr><td rowspan="6"><code>java.io</code></td><td><code>Closeable<sup><a href="#2">2</a></sup></code>
-    </td><td><code>*</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Flushable<sup><a href="#2">2</a></sup></code></td><td><code>*</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>PrintStream</code></td><td>
+<tr>
+    <th>Package</th>
+    <th>Class</th>
+    <th>Methods and fields</th>
+    <th>Compatibility notes</th>
+</tr>
+<tr>
+    <td rowspan="6"><code>java.io</code></td>
+    <td><code>Closeable<sup><a href="#2">2</a></sup></code>
+    </td>
+    <td>* (all methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Flushable<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>PrintStream</code></td>
+    <td>
         * (11 new methods and constructors)
-        </td><td>&nbsp;</td></tr>
-    <tr><td><code>PrintWriter</code></td><td>
+    </td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>PrintWriter</code></td>
+    <td>
         * (11 new methods and constructors)
-        </td><td>
+    </td>
+    <td>
         The <code>PrintWriter.format</code> and <code>PrintWriter.printf</code> methods always flush the output buffer.
-        </td></tr>
-    <tr><td><code>Reader</code></td><td><code>read(CharBuffer)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Writer</code></td><td>
-        <code>append(CharSequence),<br>
-            append(CharSequence, int, int),<br>
-            append(char)</code>
-        </td><td>&nbsp;</td></tr>
-    <tr><td rowspan="26"><code>java.lang</code></td><td><code>Appendable<sup><a href="#2">2</a></sup></code></td><td>*
-    </td><td>&nbsp;</td></tr>
-    <tr><td><code>Boolean</code></td><td><code>parseBoolean(String),<br>
-        compareTo(Boolean)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Byte</code></td><td><code>valueOf(byte)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Character</code></td><td><code>valueOf(char)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Class</code></td><td>* (21 new methods)</td><td>
-        <code>Class.getMethod(String, Class...)</code> and <code>Class.getDeclaredMethod(String, Class...)</code>
-        are intercepted to better support generics and covariant return types
-        on several platforms<sup><a href="#3">3</a></sup>.
-    </td></tr>
-    <tr><td><code>Deprecated</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Double</code></td><td><code>valueOf(double)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Enum</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Float</code></td><td><code>valueOf(float)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>IllegalArgumentException</code></td><td><code>IllegalArgumentException(String, Throwable),<br>
-        IllegalArgumentException(Throwable)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>IllegalStateException</code></td><td><code>IllegalStateException(String, Throwable),<br>
-        IllegalStateException(Throwable)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Integer</code></td><td><code>valueOf(int), signum(int)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Iterable<sup><a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Long</code></td><td><code>valueOf(long), signum(long)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>Package</code></td><td>* (4 new methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>Readable<sup><a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Short</code></td><td><code>valueOf(short)</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>String</code></td><td><code>contains(CharSequence),<br>
-        contentEquals(CharSequence),<br>
-        format(Locale, String, Object...),<br>
-        format(String, Object...),<br>
-        replace(CharSequence, CharSequence),<br>
+    </td>
+</tr>
+<tr>
+    <td><code>Reader</code></td>
+    <td>* (1 new method)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Writer</code></td>
+    <td>* (3 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td rowspan="28"><code>java.lang</code></td>
+    <td><code>Appendable<sup><a href="#2">2</a></sup></code></td>
+    <td>*
+    </td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Boolean</code></td>
+    <td>* (2 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Byte</code></td>
+    <td>* (1 new method)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Character</code></td>
+    <td>* (44 new methods)</td>
+    <td>New members of <code>Character.UnicodeBlock</code> are not supported.
+        All supplementary code points are considered as unassigned.
+    </td>
+</tr>
+<tr>
+    <td><code>Class</code></td>
+    <td>* (21 new methods)</td>
+    <td>
+        Enable features "<code>Class.getMethod</code>" and "<code>Class.getDeclaredMethod</code>" for more
+        uniform support of generics and covariant return types on different platforms<sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td><code>Deprecated</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Double</code></td>
+    <td><code>valueOf(double)</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Enum</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Float</code></td>
+    <td><code>valueOf(float)</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>IllegalArgumentException</code></td>
+    <td>* (2 new constructors)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>IllegalStateException</code></td>
+    <td>* (2 new constructors)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Integer</code></td>
+    <td><code>valueOf(int),<br>signum(int)</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Iterable<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Long</code></td>
+    <td><code>valueOf(long),<br>signum(long)</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Package</code></td>
+    <td>* (4 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Readable<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Short</code></td>
+    <td>* (2 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>StackTraceElement</code></td>
+    <td>* (1 new constructor)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>String</code></td>
+    <td>* (10 new methods and constructors)<br><code>
         isEmpty()<sup><a href="#4">4</a></sup>
-    </code></td><td>&nbsp;</td></tr>
-    <tr><td><code>StringBuffer</code></td><td><code>
-        StringBuffer(CharSequence),<br>
-        append(CharSequence),<br>
-        append(CharSequence, int, int),<br>
-        insert(int, CharSequence),<br>
-        insert(int, CharSequence, int, int)
-    </code></td><td>&nbsp;</td></tr>
-    <tr><td><code>StringBuilder</code></td><td>
-        All methods supported in <code>StringBuffer</code>
-    </td><td><code>StringBuilder</code> is replaced with <code>StringBuffer</code>.</td></tr>
-    <tr><td><code>SuppressWarnings</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>System</code></td><td><code>nanoTime()<sup><a href="#1">1</a></sup>,<br> clearProperty(String)</code></td><td>
+    </code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>StringBuffer</code></td>
+    <td>* (11 new methods and constructors)</td>
+    <td>
+        Enable feature "<code>StringBuffer.trimToSize</code>" to use an empty implementation of
+        the <code>StringBuffer.trimToSize()</code> method<sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td><code>StringBuilder</code></td>
+    <td>*</td>
+    <td><code>StringBuilder</code> is replaced with <code>StringBuffer</code>.</td>
+</tr>
+<tr>
+    <td><code>SuppressWarnings</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>System</code></td>
+    <td><code>nanoTime()<sup><a href="#1">1</a></sup>,<br> clearProperty(String)</code></td>
+    <td>
         The <code>System.nanoTime()</code> method precision
         <a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/doc/api/edu/emory/mathcs/backport/java/util/concurrent/helpers/Utils.html#nanoTime()">
             may vary</a> on different platforms.
-    </td></tr>
-    <tr><td><code>Thread</code></td><td><code>getStackTrace(),<br> getId()
-    </code></td><td>The <code>Thread.getStackTrace()</code>
-        method returns non-empty stack trace only for the current thread.<br>
-        The <code>Thread.getId()</code> method does not reflect the order in which threads are created.</td></tr>
-    <tr><td><code>Thread.State</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>ThreadLocal</code></td><td><code>remove()<sup><a href="#3">3</a></sup></code></td>
-        <td><code>ThreadLocal</code> and <code>InheritableThreadLocal</code>
-            are replaced by corresponding classes from the runtime library.<sup><a href="#3">3</a></sup>.</td></tr>
-    <tr><td><code>TypeNotPresentException</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td rowspan="2"><code>java.lang.ref</code></td>
-        <td><code>SoftReference</code></td><td>*</td><td>
+    </td>
+</tr>
+<tr>
+    <td><code>Thread</code></td>
+    <td>* (8 new methods)</td>
+    <td>
+        The <code>Thread.getId()</code> method does not reflect the order in which threads are created.<br>
+        The <code>Thread.getStackTrace()</code> and <code>Thread.getAllStackTraces()</code>
+        methods return non-empty stack trace only for the current thread.<br>
+        Enable feature "<code>Thread.getState</code>" to support the <code>Thread.getState()</code> method, but it may
+        be able
+        to detect only <code>NEW</code>, <code>RUNNABLE</code> and <code>TERMINATED</code> states.<sup><a
+            href="#3">3</a></sup><br>
+        Enable features "<code>Thread.setUncaughtExceptionHandler</code>" and
+        "<code>Thread.setDefaultUncaughtExceptionHandler</code>" to support exception handlers for threads
+        created by translated code (in contrast to J2SE 5.0 the default <code>UncaughtExceptionHandler</code>
+        takes precedence over <code>ThreadGroup</code>)<sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td><code>Thread.State</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Thread.UncaughtExceptionHandler<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>ThreadLocal</code></td>
+    <td>* (1 new method)</td>
+    <td>Enable feature "<code>ThreadLocal.remove</code>" to use alternative <code>ThreadLocal</code>
+        and <code>InheritableThreadLocal</code> implementations with method
+        <code>remove()</code><sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td><code>TypeNotPresentException</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>java.lang.annotation</code></td>
+    <td>* (all classes)</td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>java.lang.instrument</code></td>
+    <td>*</td>
+    <td>*</td>
+    <td>
+        Bytecode instrumentation is not implemented.
+    </td>
+</tr>
+<tr>
+    <td><code>java.lang.management</code></td>
+    <td><code>ManagementFactory</code></td>
+    <td>
+        <code>getPlatformMBeanServer()</code></td>
+    <td>
+        The <code>ManagementFactory.getPlatformMBeanServer()</code> method simply returns
+        the first registered <code>MBeanServer</code> or creates it when no one exists.
+        An implementation of JMX 1.2 must be present in a classpath.
+    </td>
+</tr>
+<tr>
+    <td rowspan="2"><code>java.lang.ref</code></td>
+    <td><code>SoftReference</code></td>
+    <td>*</td>
+    <td>
+        Enable feature "<code>SoftReference.NullReferenceQueue</code>" to
+        support <code>null</code> for the second parameter of
         <code>SoftReference(Object,ReferenceQueue)</code>
-        supports <code>null</code> for the second parameter
         on all platforms<sup><a href="#3">3</a></sup>.
-        </td></tr>
-    <tr><td><code>WeakReference</code></td><td>*</td><td>
+    </td>
+</tr>
+<tr>
+    <td><code>WeakReference</code></td>
+    <td>*</td>
+    <td>
+        Enable feature "<code>WeakReference.NullReferenceQueue</code>" to
+        support <code>null</code> for the second parameter of
         <code>WeakReference(Object,ReferenceQueue)</code>
-        supports <code>null</code> for the second parameter
         on all platforms<sup><a href="#3">3</a></sup>.
-        </td></tr>
-
-    <tr><td rowspan="13"><code>java.lang.reflect</code></td>
-        <td><code>AccessibleObject</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>AnnotatedElement<sup><a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Constructor</code></td><td>* (11 new methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>Field</code></td><td>* (8 new methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>GenericArrayType</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>GenericDeclaration<sup><a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>GenericSignatureFormatError</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>MalformedParameterizedTypeException</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Method</code></td><td>* (14 new methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>ParameterizedType</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Type<sup><a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>TypeVariable</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>WildcardType</code></td><td>*</td><td>&nbsp;</td></tr>
-
-    <tr><td ><code>java.math</code></td><td><code>BigDecimal</code></td><td>
-        <code>BigDecimal(int),<br> BigDecimal(long),<br> ZERO, ONE, TEN,<br> divideAndRemainder(BigDecimal),<br>
-            divideToIntegralValue(BigDecimal),<br> pow(int),<br> remainder(BigDecimal),<br>
-            toPlainString(),<br> valueOf(double),<br>
-            valueOf(long)</code></td><td>The <code>BigDecimal.setScale(int, int)</code>
-        method supports negative scales<sup><a href="#3">3</a></sup>.</td></tr>
-
-    <tr><td rowspan="3"><code>java.net</code></td><td><code>URL</code></td>
-        <td><code>openConnection(Proxy)</code>,<br>
-            <code>toURI()</code>
-        </td><td>The <code>Proxy</code> is ignored by the <code>openConnection(Proxy)</code> method.</td></tr>
-    <tr><td><code>Proxy</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>ProxySelector</code></td><td>*</td><td>&nbsp;</td></tr>
-
-    <tr><td ><code>java.rmi.server</code></td><td><code>RemoteObjectInvocationHandler</code></td>
-        <td>*</td><td>&nbsp;</td></tr>
-
-    <tr><td ><code>java.text</code></td><td><code>DecimalFormat</code></td>
-        <td><code>isParseBigDecimal()<sup><a href="#3">3</a></sup>,<br>
-            setParseBigDecimal(boolean)<sup><a href="#3">3</a></sup></code></td><td>
-        <code>BigDecimal</code> parsing and formatting precision is limited by
-        <code>java.lang.Double</code> or <code>java.lang.Long</code> precision.
-        </td></tr>
-
-    <tr><td><code>java.util.nio</code></td><td><code>CharBuffer</code></td><td>
-        <code>append(CharSequence),<br> append(CharSequence, int, int),<br> append(char),<br> read(CharBuffer)</code>
-        </td><td>&nbsp;</td></tr>
-
-    <tr><td rowspan="10"><code>java.util</code></td><td><code>AbstractQueue<sup><a href="#1">1</a></sup></code></td>
-        <td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Arrays</code></td><td>* (21 new methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>Collections<sup><a href="#1">1</a></sup></code></td><td>* (13 new methods)<br>
-        newSetFromMap(Map)<sup><a href="#4">4</a></sup>
-
-    </td><td>&nbsp;</td></tr>
-    <tr><td><code>EnumMap</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>EnumSet</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Formatter</code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>LinkedList</code></td><td>* (5 new methods)</td><td>&nbsp;</td></tr>
-    <tr><td><code>PriorityQueue<sup><a href="#1">1</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Queue<sup><a href="#1">1</a>,<a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>UUID</code></td><td>*</td><td>&nbsp;</td></tr>
-
-    <tr><td rowspan="3"><code>java.util.regex</code></td><td><code>Matcher</code></td><td>
-        <code>quoteReplacement(String),<br> toMatchResult()</code></td><td>&nbsp;</td></tr>
-    <tr><td><code>MatchResult<sup><a href="#2">2</a></sup></code></td><td>*</td><td>&nbsp;</td></tr>
-    <tr><td><code>Pattern</code></td><td><code>quote(String)</code></td><td>&nbsp;</td></tr>
+    </td>
+</tr>
+<tr>
+    <td rowspan="13"><code>java.lang.reflect</code></td>
+    <td><code>AccessibleObject</code></td>
+    <td>* (4 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>AnnotatedElement<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Constructor</code></td>
+    <td>* (11 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Field</code></td>
+    <td>* (8 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>GenericArrayType</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>GenericDeclaration<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>GenericSignatureFormatError</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>MalformedParameterizedTypeException</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Method</code></td>
+    <td>* (14 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>ParameterizedType</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Type<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>TypeVariable</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>WildcardType</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td rowspan="2"><code>java.math</code></td>
+    <td><code>BigDecimal</code></td>
+    <td>
+        <code>ZERO, ONE, TEN,<br>
+            BigDecimal(int),<br>
+            BigDecimal(long),<br>
+            BigDecimal(char[]),<br>
+            BigDecimal(char[], int, int),<br>
+            divideAndRemainder(BigDecimal),<br>
+            divideToIntegralValue(BigDecimal),<br>
+            pow(int),<br>
+            remainder(BigDecimal),<br>
+            toPlainString(),<br>
+            valueOf(double),<br>
+            valueOf(long)</code></td>
+    <td>
+        Enable feature "<code>BigDecimal.setScale</code>" to support negative scales in method
+        <code>BigDecimal.setScale(int, int)</code><sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td><code>BigInteger</code></td>
+    <td><code>TEN</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td rowspan="5"><code>java.net</code></td>
+    <td><code>HttpURLConnection</code></td>
+    <td>* (6 new methods)</td>
+    <td>
+        Enable features "<code>HttpURLConnection.setChunkedStreamingMode</code>",
+        "<code>HttpURLConnection.setFixedLengthStreamingMode</code>"
+        to use the corresponding methods, but on Java 1.4 they will simply return.
+        Consider using alternative or writing own protocol handlers.
+    </td>
+</tr>
+<tr>
+    <td><code>Proxy</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>ProxySelector</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>URL</code></td>
+    <td>* (2 new methods)</td>
+    <td>The <code>Proxy</code> is ignored by the
+        <code>URL.openConnection(Proxy)</code> method.
+    </td>
+</tr>
+<tr>
+    <td><code>URLConnection</code></td>
+    <td>* (4 new methods)</td>
+    <td>
+        Enable features "<code>URLConnection.getConnectTimeout</code>", "<code>URLConnection.setConnectTimeout</code>",
+        "<code>URLConnection.getReadTimeout</code>", "<code>URLConnection.setReadTimeout</code>"
+        to use the corresponding methods, but on Java 1.4 they will simply return.
+        Consider using alternative or writing own protocol handlers.
+    </td>
+</tr>
+<tr>
+    <td rowspan="2"><code>java.nio</code></td>
+    <td><code>CharBuffer</code></td>
+    <td>* (4 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Charset</code></td>
+    <td>* (1 new method)</td>
+    <td>The <code>Charset.defaultCharset()</code> method returns UTF-8
+        if the default charset is unavailable (occurs on JDK 1.4.0).
+    </td>
+</tr>
+<tr>
+    <td><code>java.rmi.server</code></td>
+    <td><code>RemoteObjectInvocationHandler</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>java.text</code></td>
+    <td><code>DecimalFormat</code></td>
+    <td>* (2 new methods)</td>
+    <td>
+        Enable feature "<code>DecimalFormat.setParseBigDecimal</code>" to support the
+        <code>DecimalFormat.setParseBigDecimal(boolean)</code> method, but
+        parsing and formatting precision will still be limited by the <code>java.lang.Double</code>
+        or <code>java.lang.Long</code> precision<sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td rowspan="14"><code>java.util</code></td>
+    <td><code>AbstractQueue<sup><a href="#1">1</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>ArrayDeque<sup><a href="#1">1</a>,<a href="#4">4</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Arrays</code></td>
+    <td>* (21 new methods)<br>
+        <code>copyOf(...)</code><sup><a href="#4">4</a></sup> (10 methods)<br>
+        <code>copyOfRange(...)</code><sup><a href="#4">4</a></sup> (10 methods)
+    </td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Collections<sup><a href="#1">1</a></sup></code></td>
+    <td>* (13 new methods)<br>
+        <code>newSetFromMap(Map)</code><sup><a href="#4">4</a></sup>
+    </td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Deque<sup><a href="#1">1</a>,<a href="#2">2</a>,<a href="#4">4</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>EnumMap</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>EnumSet</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Formatter</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>LinkedList</code></td>
+    <td>* (5 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>PriorityQueue<sup><a href="#1">1</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Properties</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Queue<sup><a href="#1">1</a>,<a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Timer</code></td>
+    <td>* (3 new methods and constructors)</td>
+    <td>
+        Enable feature "<code>Timer.All</code>" to use alternative <code>Timer</code>
+        and <code>TimerTask</code> implementations in order to be able to call <code>Timer(String)</code>,
+        <code>Timer(String, boolean)</code>, and <code>Timer.purge()</code><sup><a href="#3">3</a></sup>.
+    </td>
+</tr>
+<tr>
+    <td><code>UUID</code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>java.util.concurrent,<br>java.util.concurrent.atomic,<br>java.util.concurrent.locks</code></td>
+    <td>almost all classes<sup><a href="#1">1</a></sup></td>
+    <td>almost all methods</td>
+    <td>The <code>LockSupport</code> class may be unusable due to insufficient performance.
+        The <code>Condition.awaitNanos(long)</code> method has
+        <a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/doc/api/edu/emory/mathcs/backport/java/util/concurrent/helpers/Utils.html#awaitNanos(edu.emory.mathcs.backport.java.util.concurrent.locks.Condition, long)">
+            little</a> accuracy guarantees.
+    </td>
+</tr>
+<tr>
+    <td rowspan="3"><code>java.util.regex</code></td>
+    <td><code>Matcher</code></td>
+    <td>
+        <code>quoteReplacement(String),<br> toMatchResult()</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>MatchResult<sup><a href="#2">2</a></sup></code></td>
+    <td>*</td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>Pattern</code></td>
+    <td><code>quote(String)</code></td>
+    <td>&nbsp;</td>
+</tr>
+<tr>
+    <td><code>javax.net.ssl</code></td>
+    <td><code>HttpsURLConnection</code></td>
+    <td> * (2 new methods)</td>
+    <td>&nbsp;</td>
+</tr>
 </table>
 <p>
     <a name="1"><sup>1</sup></a> Supported via the
-        <a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/index.php"> Backport of JSR 166</a>.<br>
-    <a name="2"><sup>2</sup></a> In most cases this type is being replaced with it's base type.<br>
-    <a name="3"><sup>3</sup></a> Supported only in advanced mode, i.e. when
-    the <code><a href="#option_advanced">advanced</a></code> option is specified.<br>
-    <a name="4"><sup>4</sup></a> Introduced in Java 6, but available only for 1.4 target.<br>
+    <a href="http://dcl.mathcs.emory.edu/util/backport-util-concurrent/index.php"> Backport of JSR 166</a>.<br>
+    <a name="2"><sup>2</sup></a> In most cases this type is replaced with its base type.<br>
+    <a name="3"><sup>3</sup></a> Supported only when the corresponding feature is enabled via the
+    <code><a href="#option_support">support</a></code> or
+    <code><a href="#option_advanced">advanced</a></code> options.<br>
+    <a name="4"><sup>4</sup></a> Introduced in Java 6.<br>
+</p>
+<h4><a name="extension">How to write an extension?</a></h4>
+
+<p>
+    In order to support API unavailable on the target platform Retrotranslator should be able to replace all references
+    to new clases, constructors, methods, and fields with references to backports compatible with the platform.
+    The location of the backports must be specified with the <a href="#option_classpath">classpath</a> option. The
+    <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/registry/backport14.properties?view=markup">default</a>
+    backports for the 1.4 target have been packaged into the <code>retrotranslator-runtime-<i>n.n.n</i>.jar</code> and
+    <code>backport-util-concurrent-<i>n.n</i>.jar</code> files, and to complement or override them additional backport
+    names may be specified via the <a href="#option_backport">backport</a> option. The backport names may have five
+    different forms, the first one declares a universal backport package and the others allow to reuse existing backports.
 </p>
-
-<h4><a name="extension">How to write an extension for Retrotranslator?</a></h4>
-
+<table border="1" cellspacing="0" cellpadding="5">
+<tr>
+    <th>Backport name form</th>
+    <th>Example</th>
+</tr>
+<tr>
+    <td><code>&lt;universal backport package name&gt;</code></td>
+    <td><code>net.sf.retrotranslator.runtime<br>
+        com.mycompany.backport</code></td>
+</tr>
+<tr>
+    <td><code>&lt;original package name&gt;:&lt;backport package name&gt;</code></td>
+    <td><code>java.util.concurrent:edu.emory.mathcs.backport.java.util.concurrent<br>
+        com.sun.org.apache.xerces.internal:org.apache.xerces</code></td>
+</tr>
+<tr>
+    <td><code>&lt;original class name&gt;:&lt;backport class name&gt;</code></td>
+    <td><code>java.lang.StringBuilder:java.lang.StringBuffer<br>
+        java.util.LinkedHashMap:org.apache.commons.collections.map.LinkedMap</code></td>
+</tr>
+<tr>
+    <td><code>&lt;original method name&gt;:&lt;backport method name&gt;</code></td>
+    <td><code>java.lang.System.nanoTime:edu.emory.mathcs.backport.java.util.concurrent.helpers.Utils.nanoTime</code></td>
+</tr>
+<tr>
+    <td><code>&lt;original field name&gt;:&lt;backport field name&gt;</code></td>
+    <td><code>java.util.Collections.EMPTY_MAP:edu.emory.mathcs.backport.java.util.Collections.EMPTY_MAP</code></td>
+</tr>
+</table>
 <p>
-    Since most backported classes are discovered by Retrotranslator at translation time,
-    you may write an extension and simply put it into the Retrotranslator classpath to make it work.
-    For example, all references to
-    <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/EnumSet.html"><code>java.util.EnumSet</code></a>
-    are replaced with references to
+    The names of backport classes in a universal backport package consist of the backport package name,
+    the name of the original class, and an optional trailing underscore. For example,
     <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/util/EnumSet_.java?view=markup">
-    <code>net.sf.retrotranslator.runtime.java.util.EnumSet<b>_</b></code></a> (optional trailing underscore) if the latter can be found.
-    But if you replace a whole class that exists in J2SE 1.4 you may encounter interoperability issues with other libraries.
-    So, for example, support for Java 5 fields, methods, and constructors of
-    <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/math/BigDecimal.html"><code>java.math.BigDecimal</code></a> is placed into
-
+    <code>net.sf.retrotranslator.runtime.java.util.EnumSet<b>_</b></code></a> is a complete backport of
+    <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/EnumSet.html"><code>java.util.EnumSet</code></a>.
+    But when classes exist on the target platform then the backports of their new fields, constructors and methods are
+    grouped into classes with a leading underscore in their names. Look at the
     <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/math/_BigDecimal.java?view=markup">
-    <code>net.sf.retrotranslator.runtime.java.math.<b>_</b>BigDecimal</code></a> (leading underscore):
+    <code>net.sf.retrotranslator.runtime.java.math.<b>_</b>BigDecimal</code></a> class:
 </p>
-    <ul>
-        <li>For a static field there is a public static field with the same name and type.</li>
-        <li>For a static method there is a public static method with the same signature.</li>
-        <li>For an instance method there is a public static method with the same signature
-            but with an additional first parameter representing the instance.</li>
-        <li>For a constructor there is a public static <code>convertConstructorArguments</code> method that
-            accepts constructor's arguments an returns an argument for a Java 1.4 constuctor.</li>
-   </ul>
-<p>
-    Another approach for constructor backporting is used by
-    <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/io/_PrintStream.java?view=markup">
-    <code>net.sf.retrotranslator.runtime.java.io.<b>_</b>PrintStream</code></a>. There is a public static
+<ul>
+    <li>For a static field there is a public static field with the same name and type.</li>
+    <li>For a static method there is a public static method with the same signature.</li>
+    <li>For an instance method there is a public static method with the same signature
+        but with an additional first parameter representing the instance.
+    </li>
+    <li>For a constructor there is a public static <code>convertConstructorArguments</code> method that
+        accepts constructor's arguments an returns an argument for a Java 1.4 constuctor.
+    </li>
+</ul>
+<p>
+    The <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/io/_PrintStream.java?view=markup">
+    <code>net.sf.retrotranslator.runtime.java.io.<b>_</b>PrintStream</code></a> and
+    <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/lang/_SecurityException.java?view=markup">
+    <code>net.sf.retrotranslator.runtime.java.lang.<b>_</b>SecurityException</code></a> classes use another type of
+    constructor backports. There is a public static
     <code>createInstanceBuilder</code> method that accepts constructor's arguments an returns an object with public
-    <code>argument1</code>...<code>argumentN</code> methods and optional public void <code>initialize</code> method.
-    All <code>argumentX</code> methods provide arguments for a Java 1.4 constuctor and should not have any parameters.
-    The <code>initialize</code> method has a single parameter for the created instance and may be used for postprocessing.
+    <code>argument1</code>...<code>argumentN</code> methods and an optional public void <code>initialize</code> method.
+    All the <code>argumentX</code> methods provide arguments for a Java 1.4 constuctor and should not have any
+    parameters. The <code>initialize</code> method has a single parameter for the created instance and may be used for
+    postprocessing. If this approach does not work there is another flexible but not always supported one used by
+    <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/lang/_StackTraceElement.java?view=markup">
+        <code>net.sf.retrotranslator.runtime.java.lang.<b>_</b>StackTraceElement</code></a>.
+    If backported methods require access to non-public methods or fields of the instance, they can do it with reflection
+    when the security manager allows such access. The backports of public instance fields are not supported, but private
+    instance fields can be emulated using a weak identity map, see
+    <a href="http://retrotranslator.cvs.sourceforge.net/retrotranslator/Retrotranslator/src/net/sf/retrotranslator/runtime/java/lang/_Thread.java?view=markup">
+    <code>net.sf.retrotranslator.runtime.java.lang.<b>_</b>Thread</code></a> for an example. 
 
 </p>
-<p>
-    However, if the backported methods require access
-    to non-public methods or fields of the instance, they cannot be fully handled by Retrotranslator.
-    While you can use reflection to access any data, translated code generally should not depend on security settings.
-    For example, it is impossible to write an implementation for methods <code>getSource()</code>
-    and <code>setSource()</code> of <code>java.beans.PropertyEditorSupport</code> that will work in any environment.
-    Also this approach cannot be used to replace instance field references.
-</p>
-<p>
-    You can put your extensions into packages other than <code>net.sf.retrotranslator.runtime</code>.
-    For example, specify the following at the command line to make Retrotranslator use
-    <code>com.mycompany.internal.java.lang._String</code> and to rewrite all references to
-    <code>com.sun.org.apache.xerces.internal.*</code> with <code>org.apache.xerces.*</code>:<br>
-    <code>-backport&nbsp;com.mycompany.internal;com.sun.org.apache.xerces.internal:org.apache.xerces</code>
-</p>
-<p>
-    If you have written an extension that does not contain copyrighted code, you may send
-    a <a href="http://sourceforge.net/tracker/?group_id=153566&atid=788281">patch</a>
-    under the <a href="#license">Retrotranslator license</a>.
-</p>
 
 <h4><a name="limitations">What are the limitations?</a></h4>
-
-<p>
-    Basically, only classes, methods, and fields listed <a href="#supported">above</a> should work, and other features,
-    like formatted input, are not supported. Known issues:
-</p>
 <ul>
-    <li>Reflection-based tools may be unable to discover additional classes and methods introduced in Java 5 when running on JRE 1.4.</li>
-    <li>Some applications enable all features only if they detect Java 5, so you may need to override system properties:<br>
-        <code>&nbsp;java -Djava.version=1.5.0 -Djava.specification.version=1.5 -Djava.class.version=49.0 ...</code></li>
-    <li>Translated code running on JRE 5.0 may be incompatible with other Java 5 code when Java 5 API is used.</li>
-    <li>Reflection on generics and metadata may return incomplete information for dynamically generated classes.</li>
-    <li>Constants inlined by a compiler and access modifiers are ignored during the verification.</li>
-    <li>Inherited methods introduced in Java 5 may not work, however upcasting may help in some cases:<br>
-        <code>&nbsp;((Writer) new FileWriter("file.tmp")).append("Hello").close();</code></li>
-    <li>Serialized objects produced by translated code may be incompatible with JRE 5.0.</li>
+    <li>Retrotranslator does not emulate the Java 5 memory model.</li>
+    <li>Only the classes, methods, and fields listed <a href="#supported">above</a> should work
+        and the other features, like formatted input, are not supported.
+    </li>
+    <li>Java 5 reflection methods should be able to load compiled classes as resources,
+        so for dynamically generated classes they may return incomplete information.
+    </li>
+    <li>The backported implementation of Java 5 API may be incompatible
+        with the original API implementation when running on J2SE 5.0.
+    </li>
+    <li>Reflection-based tools may be unable to discover Java 5 API when running on J2SE 1.4.</li>
+    <li>The constants inlined by a compiler and access modifiers are ignored during the verification.</li>
 </ul>
-
 <h4><a name="alternative">Alternative tools</a></h4>
 <ul>
-    <li><a href="http://retroweaver.sourceforge.net/">Retroweaver</a>
-        - a Java bytecode weaver that enables you to take advantage
-        of the new 1.5 language features in your source code,
-        while still retaining compatibility with 1.4 virtual machines.</li>
-    <li><a href="http://tinyurl.com/r8xba">Declawer</a>
-        - a customized Java compiler which reduces 1.5 Generics to equivalent 1.4 syntax.</li>
+    <li><a href="http://retroweaver.sourceforge.net/">Retroweaver</a></li>
+    <li><a href="http://tinyurl.com/r8xba">Declawer</a></li>
+    <li><a href="http://wiki.jboss.org/wiki/Wiki.jsp?page=JBossRetro">JBossRetro</a></li>
 </ul>
-
 <h4><a name="contact">Contact</a></h4>
 <ul>
+    <li><a href="http://sourceforge.net/projects/retrotranslator">Project summary</a></li>
     <li><a href="http://retrotranslator.sourceforge.net/">Latest documentation</a></li>
     <li><a href="http://sourceforge.net/forum/forum.php?forum_id=513539">Open discussion</a></li>
     <li><a href="http://sourceforge.net/forum/forum.php?forum_id=513540">Help</a></li>
@@ -619,12 +961,8 @@
     <li><a href="http://sourceforge.net/tracker/?group_id=153566&atid=788282">Feature requests</a></li>
     <li><a href="http://sourceforge.net/users/tarasp/">Author</a></li>
 </ul>
-
 <h4><a name="license">License</a></h4>
 <pre>
-    Retrotranslator: a Java bytecode transformer that translates Java classes
-    compiled with JDK 5.0 into classes that can be run on JVM 1.4.
-
     Copyright (c) 2005 - 2007 Taras Puchko
     All rights reserved.
 

Modified: struts/struts2/trunk/backport/translate.bat
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/backport/translate.bat?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/backport/translate.bat (original)
+++ struts/struts2/trunk/backport/translate.bat Mon Oct 29 06:12:30 2007
@@ -1,3 +1,3 @@
-java -jar retrotranslator-transformer-1.2.0.jar -advanced -srcjar ../lib/struts2-core-2.0.4.jar -destjar struts2-core-j4-2.0.4.jar 
-java -jar retrotranslator-transformer-1.2.0.jar -advanced -srcjar ../lib/struts2-api-2.0.4.jar -destjar struts2-api-j4-2.0.4.jar 
-java -jar retrotranslator-transformer-1.2.0.jar -advanced -srcjar ../lib/xwork-2.0.0.jar -destjar xwork-j4-2.0.0.jar 
+java -jar retrotranslator-transformer-1.2.3.jar -advanced -srcjar ../lib/struts2-core-2.1.1-SNAPSHOT.jar -destjar struts2-core-backport-2.1.1-SNAPSHOT.jar 
+java -jar retrotranslator-transformer-1.2.3.jar -advanced -srcjar ../lib/struts2-api-2.1.1-SNAPSHOT.jar -destjar struts2-api-backport-2.1.1-SNAPSHOT.jar 
+java -jar retrotranslator-transformer-1.2.3.jar -advanced -srcjar ../lib/xwork-2.1.1-SNAPSHOT.jar -destjar xwork-backport-2.1.1-SNAPSHOT.jar 

Modified: struts/struts2/trunk/core/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/core/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/core/pom.xml (original)
+++ struts/struts2/trunk/core/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-core</artifactId>
@@ -57,7 +57,7 @@
                                 <artifactItem>
                                     <groupId>com.opensymphony</groupId>
                                     <artifactId>xwork</artifactId>
-                                    <version>2.1.0</version>
+                                    <version>2.1.1-SNAPSHOT</version>
                                     <classifier>sources</classifier>
                                 </artifactItem>
                             </artifactItems>
@@ -291,7 +291,7 @@
         <dependency>
             <groupId>com.opensymphony</groupId>
             <artifactId>xwork</artifactId>
-            <version>2.1.0</version>
+            <version>2.1.1-SNAPSHOT</version>
         </dependency>
 
         <!--<dependency>-->

Modified: struts/struts2/trunk/plugins/codebehind/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/codebehind/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/codebehind/pom.xml (original)
+++ struts/struts2/trunk/plugins/codebehind/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-codebehind-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/config-browser/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/config-browser/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/config-browser/pom.xml (original)
+++ struts/struts2/trunk/plugins/config-browser/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-config-browser-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/dojo/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/dojo/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/dojo/pom.xml (original)
+++ struts/struts2/trunk/plugins/dojo/pom.xml Mon Oct 29 06:12:30 2007
@@ -25,7 +25,7 @@
     <parent>
         <artifactId>struts2-plugins</artifactId>
         <groupId>org.apache.struts</groupId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.struts</groupId>

Modified: struts/struts2/trunk/plugins/jasperreports/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jasperreports/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jasperreports/pom.xml (original)
+++ struts/struts2/trunk/plugins/jasperreports/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-jasperreports-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/jfreechart/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jfreechart/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jfreechart/pom.xml (original)
+++ struts/struts2/trunk/plugins/jfreechart/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
    </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-jfreechart-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/jsf/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/jsf/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/jsf/pom.xml (original)
+++ struts/struts2/trunk/plugins/jsf/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-jsf-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/pell-multipart/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pell-multipart/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/pell-multipart/pom.xml (original)
+++ struts/struts2/trunk/plugins/pell-multipart/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-pell-multipart-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/plexus/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/plexus/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/plexus/pom.xml (original)
+++ struts/struts2/trunk/plugins/plexus/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-plexus-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/pom.xml (original)
+++ struts/struts2/trunk/plugins/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-parent</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-plugins</artifactId>

Modified: struts/struts2/trunk/plugins/portlet/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/portlet/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/portlet/pom.xml (original)
+++ struts/struts2/trunk/plugins/portlet/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-portlet-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/sitegraph/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/sitegraph/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/sitegraph/pom.xml (original)
+++ struts/struts2/trunk/plugins/sitegraph/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-sitegraph-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/sitemesh/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/sitemesh/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/sitemesh/pom.xml (original)
+++ struts/struts2/trunk/plugins/sitemesh/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-sitemesh-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/spring/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/spring/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/spring/pom.xml (original)
+++ struts/struts2/trunk/plugins/spring/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-spring-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/struts1/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/struts1/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/struts1/pom.xml (original)
+++ struts/struts2/trunk/plugins/struts1/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-struts1-plugin</artifactId>

Modified: struts/struts2/trunk/plugins/tiles/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/tiles/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/tiles/pom.xml (original)
+++ struts/struts2/trunk/plugins/tiles/pom.xml Mon Oct 29 06:12:30 2007
@@ -27,7 +27,7 @@
     <parent>
         <groupId>org.apache.struts</groupId>
         <artifactId>struts2-plugins</artifactId>
-        <version>2.1.0</version>
+        <version>2.1.1-SNAPSHOT</version>
     </parent>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-tiles-plugin</artifactId>

Modified: struts/struts2/trunk/pom.xml
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/pom.xml?rev=589617&r1=589616&r2=589617&view=diff
==============================================================================
--- struts/struts2/trunk/pom.xml (original)
+++ struts/struts2/trunk/pom.xml Mon Oct 29 06:12:30 2007
@@ -35,7 +35,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts2-parent</artifactId>
-    <version>2.1.0</version>
+    <version>2.1.1-SNAPSHOT</version>
     <packaging>pom</packaging>
     <name>Struts 2</name>
     <url>http://struts.apache.org/struts2</url>



Mime
View raw message