diff --git a/WHATSNEW b/WHATSNEW
index 333004e..0b6b9e5 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -147,7 +147,7 @@
    Bugzilla Report 49587.
 
  * Project#setDefault threw an exception when null was passed in as
-   argument, even though the javadoc says, null is a valid value.
+   argument, even though the Javadoc says null is a valid value.
    Bugzilla Report 49803.
 
  * runant.py would swallow the first argument if CLASSPATH wasn't set.
@@ -223,8 +223,8 @@
    when used in any other way than a CLASSPATH for a forked Java VM. 
    Bugzilla Report 46842.
 
- * A new attribute allows targets to deal with non-existant extensions
-   points, i.e. they can extend and extension-point if it has been
+ * A new attribute allows targets to deal with nonexistent extension
+   points, i.e. they can extend an extension-point if it has been
    defined or silently work as plain targets if it hasn't.  This is
    useful for targets that get included/imported in different
    scenarios where a given extension-point may or may not exist.
diff --git a/docs/antnews.html b/docs/antnews.html
index d67ecd8..2a43717 100644
--- a/docs/antnews.html
+++ b/docs/antnews.html
@@ -211,7 +211,7 @@
       <a name="Apache Ant 1.8.2"></a>
       Apache Ant 1.8.2
     </h3>
-                        <h3>December 20th, 2010 - Apache Ant 1.8.2 Released</h3>
+                        <h3>December 27th, 2010 - Apache Ant 1.8.2 Released</h3>
                                 <p>Apache Ant 1.8.2 is now available for download as source or binary (with and without
       dependencies) from
       <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.</p>
diff --git a/docs/bindownload.html b/docs/bindownload.html
index 23fcc76..5ab8390 100644
--- a/docs/bindownload.html
+++ b/docs/bindownload.html
@@ -257,7 +257,7 @@
 <a href="[preferred]/ant/README.html">release notes</a>.</p>
                                 <div class="warning">
 <div class="label">Note</div>
-<div class="content">Ant 1.8.2 was released on 20-December-2010 and
+<div class="content">Ant 1.8.2 was released on 27-December-2010 and
 may not be available on all mirrors for a few days.</div>
 </div>
                                 <br />
diff --git a/docs/faq.html b/docs/faq.html
index a28c9b9..0ef115d 100644
--- a/docs/faq.html
+++ b/docs/faq.html
@@ -741,7 +741,7 @@
       </td>
                           <td colspan="1" rowspan="1"
       valign="top" align="left">
-          20 December 2010
+          27 December 2010
       </td>
       </tr>
           </table>
diff --git a/docs/index.html b/docs/index.html
index dd77d29..ff6b6bb 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -238,7 +238,7 @@
       <a name="Apache Ant1.8.2"></a>
       Apache Ant1.8.2
     </h3>
-                        <h3>December 20th, 2010 - Apache Ant 1.8.2 Released</h3>
+                        <h3>December 27th, 2010 - Apache Ant 1.8.2 Released</h3>
                                 <p>Apache Ant 1.8.2 is now available for download as source or binary (with and without
       dependencies) from
       <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.</p>
diff --git a/docs/manualdownload.html b/docs/manualdownload.html
index ccd857d..b5af19e 100644
--- a/docs/manualdownload.html
+++ b/docs/manualdownload.html
@@ -251,7 +251,7 @@
 <a href="[preferred]/ant/README.html">release notes</a>.</p>
                                 <div class="warning">
 <div class="label">Note</div>
-<div class="content">Ant 1.8.2 was released on 7-May-2010 and
+<div class="content">Ant 1.8.2 was released on 27-December-2010 and
 may not be available on all mirrors for a few days.</div>
 </div>
                                 <br />
diff --git a/docs/srcdownload.html b/docs/srcdownload.html
index 2b490f2..7600ed8 100644
--- a/docs/srcdownload.html
+++ b/docs/srcdownload.html
@@ -255,7 +255,7 @@
 <a href="[preferred]/ant/README.html">release notes</a>.</p>
                                 <div class="warning">
 <div class="label">Note</div>
-<div class="content">Ant 1.8.2 was released on 20-December-2010 and
+<div class="content">Ant 1.8.2 was released on 27-December-2010 and
 may not be available on all mirrors for a few days.</div>
 </div>
                                 <br />
diff --git a/release/signit.xml b/release/signit.xml
new file mode 100644
index 0000000..81d0ddd
--- /dev/null
+++ b/release/signit.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0"?>
+
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<project name="signit">
+  <!-- use this property file to enter your default key id -->
+  <property file="${user.home}/gnupg.properties"/>
+  <taskdef resource="org/apache/commons/openpgp/ant/antlib.xml">
+    <classpath>
+      <pathelement
+        location="${user.home}/.m2/repository/org/bouncycastle/bcprov-jdk12/130/bcprov-jdk12-130.jar"/>
+      <pathelement
+        location="${user.home}/.m2/repository/org/apache/commons/commons-openpgp/1.0-SNAPSHOT/commons-openpgp-1.0-SNAPSHOT.jar"/>
+      <pathelement
+        location="${user.home}/.m2/repository/org/bouncycastle/bcpg-jdk12/130/bcpg-jdk12-130.jar"/>
+    </classpath>
+  </taskdef>
+  <signer secring="${user.home}/AppData/Roaming/gnupg/secring.gpg"
+    pubring="${user.home}/AppData/Roaming/gnupg/pubring.gpg" password="${password}" keyid="${keyid}">
+    <fileset dir="../java-repository">
+      <include name="**/*.jar"/>
+      <include name="**/*.pom"/>
+    </fileset>
+    <fileset dir="../distribution">
+      <include name="**/*.bz2"/>
+      <include name="**/*.zip"/>
+      <include name="**/*.gz"/>
+    </fileset>
+  </signer>
+
+</project>
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
index 5858065..b30eb61 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/JUnitTask.java
@@ -718,6 +718,7 @@
         addClasspathEntry("/org/apache/tools/ant/launch/AntMain.class");
         addClasspathEntry("/org/apache/tools/ant/Task.class");
         addClasspathEntry("/org/apache/tools/ant/taskdefs/optional/junit/JUnitTestRunner.class");
+        addClasspathEntry("/org/apache/tools/ant/taskdefs/optional/junit/JUnit4TestMethodAdapter.class");
     }
 
     private static JUnitTaskMirror createMirror(JUnitTask task, ClassLoader loader) {
diff --git a/src/main/org/apache/tools/zip/ZipEntry.java b/src/main/org/apache/tools/zip/ZipEntry.java
index 33dbcaa..a14abcc 100644
--- a/src/main/org/apache/tools/zip/ZipEntry.java
+++ b/src/main/org/apache/tools/zip/ZipEntry.java
@@ -28,8 +28,7 @@
  * access to the internal and external file attributes.
  *
  * <p>The extra data is expected to follow the recommendation of
- * {@link http://www.pkware.com/documents/casestudies/APPNOTE.TXT
- * APPNOTE.txt}:</p>
+ * the .ZIP File Format Specification created by PKWARE Inc. :</p>
  * <ul>
  *   <li>the extra byte array consists of a sequence of extra fields</li>
  *   <li>each extra fields starts by a two byte header id followed by
@@ -42,6 +41,8 @@
  * methods of this class.  Versions prior to Apache Commons Compress
  * 1.1 would have thrown an exception if any attempt was made to read
  * or write extra data not conforming to the recommendation.</p>
+ * @see <a href="http://www.pkware.com/documents/casestudies/APPNOTE.TXT">
+ * .ZIP File Format Specification</a> 
  *
  */
 public class ZipEntry extends java.util.zip.ZipEntry implements Cloneable {
diff --git a/src/tests/antunit/antunit-base.xml b/src/tests/antunit/antunit-base.xml
index 7a2d7cd..0a64ebf 100644
--- a/src/tests/antunit/antunit-base.xml
+++ b/src/tests/antunit/antunit-base.xml
@@ -20,6 +20,7 @@
   <property name="input" location="${java.io.tmpdir}/testinput"/>
   <property name="output" location="${java.io.tmpdir}/testoutput"/>
   <available property="jdk1.6+" classname="java.util.ServiceLoader"/>
+  <available property="jdk1.5+" classname="java.net.Proxy"/>
 
   <target name="tearDown">
     <delete dir="${input}"/>
diff --git a/src/tests/antunit/taskdefs/optional/junit/junit-test.xml b/src/tests/antunit/taskdefs/optional/junit/junit-test.xml
index 0741789..6d256a3 100644
--- a/src/tests/antunit/taskdefs/optional/junit/junit-test.xml
+++ b/src/tests/antunit/taskdefs/optional/junit/junit-test.xml
@@ -300,4 +300,53 @@
     </au:expectfailure>
   </target>
 
+	<target name="-setUp.methods" depends="setUp">
+	  <property name="junit-3.8.2.location" location="../../../../lib/optional/junit-3.8.2.jar"/>
+	  <property name="junit-4.8.1.location" location="../../../../lib/optional/junit-4.8.1.jar"/>
+	  <condition property="test.can.run">
+	     <and>
+	     	<available file="${junit-3.8.2.location}"/>
+	     	<available file="${junit-4.8.1.location}"/>
+	     	<isset property="jdk1.5+"/>
+	     </and>
+	  </condition>
+	</target>
+
+	<target name="testFailNone" depends="-setUp.methods" if="test.can.run">
+		<echo file="${input}/T1.java">public class T1 extends
+			junit.framework.TestCase {
+			public void testOK() {}
+			public void testBad() {throw new RuntimeException("failed");}
+			}</echo>
+		<echo file="${input}/T2.java">
+		    import org.junit.Test;
+		    public class T2 {
+			@Test 
+			public void ok() {}
+			@Test 
+			public void bad() {
+			throw new RuntimeException("failed");}
+			}</echo>
+		<javac srcdir="${input}" destdir="${output}" includes="T1.java,T2.java" source="5"
+			 includeantruntime="false" >
+			 <classpath>
+			   <pathelement path="${java.class.path}"/>
+			 </classpath>
+		</javac>
+		<junit fork="true" printsummary="true" failureproperty="test.failed" errorproperty="test.haseerror">
+			<classpath>
+			  <pathelement location="${output}"/>
+			  <pathelement location="${junit-3.8.2.location}"/>
+			  <pathelement location="${junit-4.8.1.location}"/>
+			</classpath>
+			<test name="T1" methods="testOK" />
+			<test name="T2" methods="ok" />
+		</junit>
+		<au:assertFalse>
+		<or>
+		   <isset property="test.failed"/>
+		   <isset property="test.haserror"/>
+		</or>
+		</au:assertFalse>
+	</target>
 </project>
diff --git a/src/tests/antunit/taskdefs/xslt-test.xml b/src/tests/antunit/taskdefs/xslt-test.xml
index 8846bad..069b11c 100644
--- a/src/tests/antunit/taskdefs/xslt-test.xml
+++ b/src/tests/antunit/taskdefs/xslt-test.xml
@@ -147,7 +147,6 @@
     </xslt>
   </target>
 
-  <available property="jdk1.5+" classname="java.net.Proxy"/>
 
   <target name="testTraceJdk14" unless="jdk1.5+" depends="setUp">
     <xslt in="${legacy.dir}/data.xml"
diff --git a/xdocs/antnews.xml b/xdocs/antnews.xml
index 6d931e6..8a1a26c 100644
--- a/xdocs/antnews.xml
+++ b/xdocs/antnews.xml
@@ -27,7 +27,7 @@
 
 <body>
   <section name="Apache Ant 1.8.2">
-    <h3>December 20th, 2010 - Apache Ant 1.8.2 Released</h3>
+    <h3>December 27th, 2010 - Apache Ant 1.8.2 Released</h3>
     <p>Apache Ant 1.8.2 is now available for download as source or binary (with and without
       dependencies) from
       <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.</p>
diff --git a/xdocs/bindownload.xml b/xdocs/bindownload.xml
index c388338..3bf528b 100644
--- a/xdocs/bindownload.xml
+++ b/xdocs/bindownload.xml
@@ -85,7 +85,7 @@
 
 <div class="warning">
 <div class="label">Note</div>
-<div class="content">Ant 1.8.2 was released on 20-December-2010 and
+<div class="content">Ant 1.8.2 was released on 27-December-2010 and
 may not be available on all mirrors for a few days.</div>
 </div>
 <br></br>
diff --git a/xdocs/faq.xml b/xdocs/faq.xml
index 357b4f0..055c213 100644
--- a/xdocs/faq.xml
+++ b/xdocs/faq.xml
@@ -232,7 +232,7 @@
           </tr>
           <tr>
             <td>1.8.2</td>
-            <td>20 December 2010</td>
+            <td>27 December 2010</td>
           </tr>
         </table>
       </answer>
diff --git a/xdocs/index.xml b/xdocs/index.xml
index d6315b9..f8f684b 100644
--- a/xdocs/index.xml
+++ b/xdocs/index.xml
@@ -58,7 +58,7 @@
   </section>
 
   <section name="Apache Ant1.8.2">
-    <h3>December 20th, 2010 - Apache Ant 1.8.2 Released</h3>
+    <h3>December 27th, 2010 - Apache Ant 1.8.2 Released</h3>
     <p>Apache Ant 1.8.2 is now available for download as source or binary (with and without
       dependencies) from
       <a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.</p>
diff --git a/xdocs/manualdownload.xml b/xdocs/manualdownload.xml
index beafd2e..5dd7986 100644
--- a/xdocs/manualdownload.xml
+++ b/xdocs/manualdownload.xml
@@ -80,7 +80,7 @@
 
 <div class="warning">
 <div class="label">Note</div>
-<div class="content">Ant 1.8.2 was released on 7-May-2010 and
+<div class="content">Ant 1.8.2 was released on 27-December-2010 and
 may not be available on all mirrors for a few days.</div>
 </div>
 <br></br>
diff --git a/xdocs/srcdownload.xml b/xdocs/srcdownload.xml
index cf0b75e..927c833 100644
--- a/xdocs/srcdownload.xml
+++ b/xdocs/srcdownload.xml
@@ -82,7 +82,7 @@
 
 <div class="warning">
 <div class="label">Note</div>
-<div class="content">Ant 1.8.2 was released on 20-December-2010 and
+<div class="content">Ant 1.8.2 was released on 27-December-2010 and
 may not be available on all mirrors for a few days.</div>
 </div>
 <br></br>
