diff --git a/WHATSNEW b/WHATSNEW index ce2cce53e..8ad85efb3 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -71,6 +71,8 @@ Other changes: upgraded to 0.1.54. Jsch is the library behind the sshexec and scp Ant tasks. + * Added a new condition. + Changes from Ant 1.10.0 TO Ant 1.10.1 ===================================== diff --git a/build.xml b/build.xml index f7b2fbbc9..7b8cf02a1 100644 --- a/build.xml +++ b/build.xml @@ -383,6 +383,9 @@ + + + diff --git a/manual/Tasks/conditions.html b/manual/Tasks/conditions.html index b1c1c3148..77c76a191 100644 --- a/manual/Tasks/conditions.html +++ b/manual/Tasks/conditions.html @@ -1095,5 +1095,44 @@ is redundant and will be ignored.

<file file="${file}"/> </resourceexists> + +

javaversion

+ +

Tests the version of the JVM executing Ant. Since Ant +1.10.2

+ + + + + + + + + + + + + + + + + + +
AttributeDescriptionRequired
atleastThe version that this JVM is at least. + The format is major.minor.point. Starting with Java9 really + only the major number is determined.NoOne of these.
exactlyThe version that this JVM is exactly. + The format is major.minor.point. Starting with Java9 really + only the major number is determined.No
+ +

+ An example: +

+ +
+<javaversion atleast="9"/>
+
+ +

will evaluate to true if the current JVM is Java9 or above.

+ diff --git a/manual/Tasks/javac.html b/manual/Tasks/javac.html index 68c6310d3..366240242 100644 --- a/manual/Tasks/javac.html +++ b/manual/Tasks/javac.html @@ -78,9 +78,10 @@ attribute are:

javac1.5 and javac1.6 and javac1.7 (since Ant 1.8.2) and - javac1.8 (since Ant 1.8.3) and - javac1.9 (since Ant 1.9.5) and - javac9 (since Ant 1.9.8) can be used as aliases. + javac1.8 (since Ant 1.8.3) and + javac1.9 (since Ant 1.9.5) and + javac9 (since Ant 1.9.8) and + javac10+ (since Ant 1.10.2) can be used as aliases.
  • jikes (the Jikes compiler).
  • @@ -525,7 +526,7 @@ invoking the compiler.

    release - Specify the value for the --release switch.Ignored + Specify the value for the --release switch. Ignored when running on JDK < 9.
    When set and running on JDK >= 9 the source and target attributes as well as the bootclasspath will be ignored. diff --git a/src/main/org/apache/tools/ant/antlib.xml b/src/main/org/apache/tools/ant/antlib.xml index 64498071a..8ec6714e4 100644 --- a/src/main/org/apache/tools/ant/antlib.xml +++ b/src/main/org/apache/tools/ant/antlib.xml @@ -63,6 +63,8 @@ classname="org.apache.tools.ant.taskdefs.condition.IsSigned"/> + * - *

    Legal values are 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, and 5, 6, 7, 8 and 9 + *

    Legal values are 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, and any integral number bigger than 4 * - by default, no -source argument will be used at all.

    * * @param v Value to assign to source. @@ -774,7 +778,7 @@ public class Javac extends MatchingTask { /** * Sets the target VM that the classes will be compiled for. Valid * values depend on the compiler, for jdk 1.4 the valid values are - * "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9", "5", "6", "7", "8", "9". + * "1.1", "1.2", "1.3", "1.4", "1.5", "1.6", "1.7", "1.8", "1.9" and any integral number bigger than 4 * @param target the target VM */ public void setTarget(final String target) { @@ -964,7 +968,8 @@ public class Javac extends MatchingTask { } private String getAltCompilerName(final String anImplementation) { - if (JAVAC9.equalsIgnoreCase(anImplementation) + if (JAVAC10_PLUS.equalsIgnoreCase(anImplementation) + || JAVAC9.equalsIgnoreCase(anImplementation) || JAVAC19.equalsIgnoreCase(anImplementation) || JAVAC18.equalsIgnoreCase(anImplementation) || JAVAC17.equalsIgnoreCase(anImplementation) @@ -980,7 +985,8 @@ public class Javac extends MatchingTask { } if (MODERN.equalsIgnoreCase(anImplementation)) { final String nextSelected = assumedJavaVersion(); - if (JAVAC9.equalsIgnoreCase(nextSelected) + if (JAVAC10_PLUS.equalsIgnoreCase(anImplementation) + || JAVAC9.equalsIgnoreCase(nextSelected) || JAVAC18.equalsIgnoreCase(nextSelected) || JAVAC17.equalsIgnoreCase(nextSelected) || JAVAC16.equalsIgnoreCase(nextSelected) @@ -1183,7 +1189,7 @@ public class Javac extends MatchingTask { scanDir(srcDir, destDir != null ? destDir : srcDir, files); } } - + private void collectFileListFromModulePath() { final FileUtils fu = FileUtils.getFileUtils(); for (String pathElement : moduleSourcepath.list()) { @@ -1248,11 +1254,12 @@ public class Javac extends MatchingTask { * @param compilerImpl the name of the compiler implementation * @return true if compilerImpl is "modern", "classic", * "javac1.1", "javac1.2", "javac1.3", "javac1.4", "javac1.5", - * "javac1.6", "javac1.7", "javac1.8", "javac1.9" or "javac9". + * "javac1.6", "javac1.7", "javac1.8", "javac1.9", "javac9" or "javac10+". */ protected boolean isJdkCompiler(final String compilerImpl) { return MODERN.equals(compilerImpl) || CLASSIC.equals(compilerImpl) + || JAVAC10_PLUS.equals(compilerImpl) || JAVAC9.equals(compilerImpl) || JAVAC18.equals(compilerImpl) || JAVAC17.equals(compilerImpl) diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java index a1fe5c8ba..9cda7a46c 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/CompilerAdapterFactory.java @@ -121,7 +121,8 @@ public final class CompilerAdapterFactory { || "javac1.7".equalsIgnoreCase(compilerType) || "javac1.8".equalsIgnoreCase(compilerType) || "javac1.9".equalsIgnoreCase(compilerType) - || "javac9".equalsIgnoreCase(compilerType)) { + || "javac9".equalsIgnoreCase(compilerType) + || "javac10+".equalsIgnoreCase(compilerType)) { // does the modern compiler exist? if (doesModernCompilerExist()) { return new Javac13(); diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java index f33c4a568..62fb428dc 100644 --- a/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java +++ b/src/main/org/apache/tools/ant/taskdefs/compilers/DefaultCompilerAdapter.java @@ -321,7 +321,7 @@ public abstract class DefaultCompilerAdapter cmd.createArgument().setValue("-sourcepath"); cmd.createArgument().setPath(sourcepath); } - if (release == null || !assumeJava19()) { + if (release == null || !assumeJava9Plus()) { if (target != null) { cmd.createArgument().setValue("-target"); cmd.createArgument().setValue(target); @@ -394,7 +394,7 @@ public abstract class DefaultCompilerAdapter if (!assumeJava13()) { // -source added with JDK 1.4 final String t = attributes.getTarget(); final String s = attributes.getSource(); - if (release == null || !assumeJava19()) { + if (release == null || !assumeJava9Plus()) { if (release != null) { attributes.log( "Support for javac --release has been added in Java9 ignoring it"); @@ -714,6 +714,21 @@ public abstract class DefaultCompilerAdapter return assumeJava19(); } + /** + * Shall we assume JDK 9+ command line switches? + * @return true if JDK 9+ + * @since Ant 1.10.2 + */ + protected boolean assumeJava9Plus() { + return "javac1.9".equals(attributes.getCompilerVersion()) + || "javac9".equals(attributes.getCompilerVersion()) + || "javac10+".equals(attributes.getCompilerVersion()) + || (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9) && + ("classic".equals(attributes.getCompilerVersion()) + || "modern".equals(attributes.getCompilerVersion()) + || "extJavac".equals(attributes.getCompilerVersion()))); + } + /** * Shall we assume command line switches for the given version of Java? * @since Ant 1.8.3 @@ -787,7 +802,7 @@ public abstract class DefaultCompilerAdapter if (assumeJava18()) { return "1.8 in JDK 1.8"; } - if (assumeJava9()) { + if (assumeJava9Plus()) { return "9 in JDK 9"; } return ""; @@ -814,7 +829,7 @@ public abstract class DefaultCompilerAdapter && !assumeJava15() && !assumeJava16()) || ("7".equals(t) && !assumeJava17()) || ("8".equals(t) && !assumeJava18()) - || ("9".equals(t) && !assumeJava9()); + || ("9".equals(t) && !assumeJava9Plus()); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/condition/JavaVersion.java b/src/main/org/apache/tools/ant/taskdefs/condition/JavaVersion.java new file mode 100644 index 000000000..3e37199b2 --- /dev/null +++ b/src/main/org/apache/tools/ant/taskdefs/condition/JavaVersion.java @@ -0,0 +1,115 @@ +/* + * 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. + * + */ +package org.apache.tools.ant.taskdefs.condition; + +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.util.DeweyDecimal; +import org.apache.tools.ant.util.JavaEnvUtils; + +/** + * An Java version condition. + * @since Java 1.10.2 + */ +public class JavaVersion implements Condition { + + private String atLeast = null; + private String exactly = null; + + /** + * Evaluate the condition. + * @return true if the condition is true. + * @throws BuildException if an error occurs. + */ + public boolean eval() throws BuildException { + validate(); + DeweyDecimal actual = JavaEnvUtils.getParsedJavaVersion(); + if (null != atLeast) { + return actual.isGreaterThanOrEqual(new DeweyDecimal(atLeast)); + } + if (null != exactly) { + return actual.isEqual(new DeweyDecimal(exactly)); + } + //default + return false; + } + + private void validate() throws BuildException { + if (atLeast != null && exactly != null) { + throw new BuildException("Only one of atleast or exactly may be set."); + } + if (null == atLeast && null == exactly) { + throw new BuildException("One of atleast or exactly must be set."); + } + if (atLeast != null) { + try { + // only created for side effect + new DeweyDecimal(atLeast); //NOSONAR + } catch (NumberFormatException e) { + throw new BuildException( + "The 'atleast' attribute is not a Dewey Decimal eg 1.1.0 : " + + atLeast); + } + } else { + try { + // only created for side effect + new DeweyDecimal(exactly); //NOSONAR + } catch (NumberFormatException e) { + throw new BuildException( + "The 'exactly' attribute is not a Dewey Decimal eg 1.1.0 : " + + exactly); + } + } + } + + /** + * Get the atleast attribute. + * @return the atleast attribute. + */ + public String getAtLeast() { + return atLeast; + } + + /** + * Set the atleast attribute. + * This is of the form major.minor.point. + * For example 1.7.0. + * @param atLeast the version to check against. + */ + public void setAtLeast(String atLeast) { + this.atLeast = atLeast; + } + + /** + * Get the exactly attribute. + * @return the exactly attribute. + */ + public String getExactly() { + return exactly; + } + + /** + * Set the exactly attribute. + * This is of the form major.minor.point. + * For example 1.7.0. + * @param exactly the version to check against. + */ + public void setExactly(String exactly) { + this.exactly = exactly; + } + +} diff --git a/src/main/org/apache/tools/ant/types/conditions/antlib.xml b/src/main/org/apache/tools/ant/types/conditions/antlib.xml index ff407b28b..5643a2ed0 100644 --- a/src/main/org/apache/tools/ant/types/conditions/antlib.xml +++ b/src/main/org/apache/tools/ant/types/conditions/antlib.xml @@ -66,6 +66,8 @@ classname="org.apache.tools.ant.taskdefs.condition.IsSigned"/> + Starting with Java 10 we've stopped adding JAVA_ + * and VERSION_ attributes for new major version numbers + * of the JVM.

    + * * @since Ant 1.5 */ public final class JavaEnvUtils { @@ -181,6 +185,10 @@ public final class JavaEnvUtils { Class.forName("java.lang.module.ModuleDescriptor"); javaVersion = JAVA_9; javaVersionNumber = VERSION_9; + // at least Java9 and this should properly support the purely numeric version property + String v = System.getProperty("java.specification.version"); + javaVersionNumber = Integer.parseInt(v) * 10; + javaVersion = v; } catch (Throwable t) { // swallow as we've hit the max class version that // we have @@ -448,52 +456,46 @@ public final class JavaEnvUtils { */ private static void buildJrePackages() { - jrePackages = new Vector<>(); - switch(javaVersionNumber) { - case VERSION_9: - case VERSION_1_8: - case VERSION_1_7: - jrePackages.addElement("jdk"); - // fall through - case VERSION_1_6: - case VERSION_1_5: - //In Java1.5, the apache stuff moved. - jrePackages.addElement("com.sun.org.apache"); - //fall through. - case VERSION_1_4: - if (javaVersionNumber == VERSION_1_4) { - jrePackages.addElement("org.apache.crimson"); - jrePackages.addElement("org.apache.xalan"); - jrePackages.addElement("org.apache.xml"); - jrePackages.addElement("org.apache.xpath"); - } - jrePackages.addElement("org.ietf.jgss"); - jrePackages.addElement("org.w3c.dom"); - jrePackages.addElement("org.xml.sax"); - // fall through - case VERSION_1_3: - jrePackages.addElement("org.omg"); - jrePackages.addElement("com.sun.corba"); - jrePackages.addElement("com.sun.jndi"); - jrePackages.addElement("com.sun.media"); - jrePackages.addElement("com.sun.naming"); - jrePackages.addElement("com.sun.org.omg"); - jrePackages.addElement("com.sun.rmi"); - jrePackages.addElement("sunw.io"); - jrePackages.addElement("sunw.util"); - // fall through - case VERSION_1_2: - jrePackages.addElement("com.sun.java"); - jrePackages.addElement("com.sun.image"); - // are there any here that we forgot? - // fall through - case VERSION_1_1: - default: - //things like sun.reflection, sun.misc, sun.net - jrePackages.addElement("sun"); - jrePackages.addElement("java"); - jrePackages.addElement("javax"); - break; + jrePackages = new Vector(); + if (isAtLeastJavaVersion(JAVA_1_1)) { + //things like sun.reflection, sun.misc, sun.net + jrePackages.addElement("sun"); + jrePackages.addElement("java"); + jrePackages.addElement("javax"); + } + if (isAtLeastJavaVersion(JAVA_1_2)) { + jrePackages.addElement("com.sun.java"); + jrePackages.addElement("com.sun.image"); + // are there any here that we forgot? + } + if (isAtLeastJavaVersion(JAVA_1_3)) { + jrePackages.addElement("org.omg"); + jrePackages.addElement("com.sun.corba"); + jrePackages.addElement("com.sun.jndi"); + jrePackages.addElement("com.sun.media"); + jrePackages.addElement("com.sun.naming"); + jrePackages.addElement("com.sun.org.omg"); + jrePackages.addElement("com.sun.rmi"); + jrePackages.addElement("sunw.io"); + jrePackages.addElement("sunw.util"); + } + if (isAtLeastJavaVersion(JAVA_1_4)) { + if (javaVersionNumber == VERSION_1_4) { + jrePackages.addElement("org.apache.crimson"); + jrePackages.addElement("org.apache.xalan"); + jrePackages.addElement("org.apache.xml"); + jrePackages.addElement("org.apache.xpath"); + } + jrePackages.addElement("org.ietf.jgss"); + jrePackages.addElement("org.w3c.dom"); + jrePackages.addElement("org.xml.sax"); + } + if (isAtLeastJavaVersion(JAVA_1_5)) { + //In Java1.5, the apache stuff moved. + jrePackages.addElement("com.sun.org.apache"); + } + if (isAtLeastJavaVersion(JAVA_1_7)) { + jrePackages.addElement("jdk"); } } @@ -504,52 +506,46 @@ public final class JavaEnvUtils { public static Vector getJrePackageTestCases() { Vector tests = new Vector<>(); tests.addElement("java.lang.Object"); - switch(javaVersionNumber) { - case VERSION_9: - case VERSION_1_8: - case VERSION_1_7: - tests.addElement("jdk.net.Sockets"); - // fall through - case VERSION_1_6: - case VERSION_1_5: - tests.addElement( - "com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl "); - // Fall through - case VERSION_1_4: - tests.addElement("sun.audio.AudioPlayer"); - if (javaVersionNumber == VERSION_1_4) { - // only for 1.4, not for higher versions which fall through - tests.addElement("org.apache.crimson.parser.ContentModel"); - tests.addElement("org.apache.xalan.processor.ProcessorImport"); - tests.addElement("org.apache.xml.utils.URI"); - tests.addElement("org.apache.xpath.XPathFactory"); - } - tests.addElement("org.ietf.jgss.Oid"); - tests.addElement("org.w3c.dom.Attr"); - tests.addElement("org.xml.sax.XMLReader"); - // fall through - case VERSION_1_3: - tests.addElement("org.omg.CORBA.Any"); - tests.addElement("com.sun.corba.se.internal.corba.AnyImpl"); - tests.addElement("com.sun.jndi.ldap.LdapURL"); - tests.addElement("com.sun.media.sound.Printer"); - tests.addElement("com.sun.naming.internal.VersionHelper"); - tests.addElement("com.sun.org.omg.CORBA.Initializer"); - tests.addElement("sunw.io.Serializable"); - tests.addElement("sunw.util.EventListener"); - // fall through - case VERSION_1_2: - tests.addElement("javax.accessibility.Accessible"); - tests.addElement("sun.misc.BASE64Encoder"); - tests.addElement("com.sun.image.codec.jpeg.JPEGCodec"); - // fall through - case VERSION_1_1: - default: - //things like sun.reflection, sun.misc, sun.net - tests.addElement("sun.reflect.SerializationConstructorAccessorImpl"); - tests.addElement("sun.net.www.http.HttpClient"); - tests.addElement("sun.audio.AudioPlayer"); - break; + if (isAtLeastJavaVersion(JAVA_1_1)) { + //things like sun.reflection, sun.misc, sun.net + tests.addElement("sun.reflect.SerializationConstructorAccessorImpl"); + tests.addElement("sun.net.www.http.HttpClient"); + tests.addElement("sun.audio.AudioPlayer"); + } + if (isAtLeastJavaVersion(JAVA_1_2)) { + tests.addElement("javax.accessibility.Accessible"); + tests.addElement("sun.misc.BASE64Encoder"); + tests.addElement("com.sun.image.codec.jpeg.JPEGCodec"); + } + if (isAtLeastJavaVersion(JAVA_1_3)) { + tests.addElement("org.omg.CORBA.Any"); + tests.addElement("com.sun.corba.se.internal.corba.AnyImpl"); + tests.addElement("com.sun.jndi.ldap.LdapURL"); + tests.addElement("com.sun.media.sound.Printer"); + tests.addElement("com.sun.naming.internal.VersionHelper"); + tests.addElement("com.sun.org.omg.CORBA.Initializer"); + tests.addElement("sunw.io.Serializable"); + tests.addElement("sunw.util.EventListener"); + } + if (isAtLeastJavaVersion(JAVA_1_4)) { + tests.addElement("sun.audio.AudioPlayer"); + if (javaVersionNumber == VERSION_1_4) { + // only for 1.4, not for higher versions + tests.addElement("org.apache.crimson.parser.ContentModel"); + tests.addElement("org.apache.xalan.processor.ProcessorImport"); + tests.addElement("org.apache.xml.utils.URI"); + tests.addElement("org.apache.xpath.XPathFactory"); + } + tests.addElement("org.ietf.jgss.Oid"); + tests.addElement("org.w3c.dom.Attr"); + tests.addElement("org.xml.sax.XMLReader"); + } + if (isAtLeastJavaVersion(JAVA_1_5)) { + tests.addElement( + "com.sun.org.apache.xerces.internal.jaxp.datatype.DatatypeFactoryImpl"); + } + if (isAtLeastJavaVersion(JAVA_1_7)) { + tests.addElement("jdk.net.Sockets"); } return tests; } diff --git a/src/main/org/apache/tools/bzip2/BlockSort.java b/src/main/org/apache/tools/bzip2/BlockSort.java index 073b2230e..46c6a5ce2 100644 --- a/src/main/org/apache/tools/bzip2/BlockSort.java +++ b/src/main/org/apache/tools/bzip2/BlockSort.java @@ -36,7 +36,7 @@ import java.util.BitSet; *
      *  CompressCommons
      * Commons Compress
    - * CompressCommons 
    + * CompressCommons
      * essCommons Compr
      * mmons CompressCo
      * mons CompressCom
    @@ -251,7 +251,7 @@ class BlockSort {
          * bucket 'ra' with sort index 5.  The fully sorted order then becomes.
          *
          * fmap = { 5, 3, 0, 4, 1, 2 }
    -     * 
    +     *
          */
     
         /**
    @@ -261,12 +261,12 @@ class BlockSort {
          * @param eclass points from the index of a character inside the
          *        block to the first index in fmap that contains the
          *        bucket of its suffix that is sorted in this step.
    -     * @param lo lower boundary of the fmap-interval to be sorted 
    -     * @param hi upper boundary of the fmap-interval to be sorted 
    +     * @param lo lower boundary of the fmap-interval to be sorted
    +     * @param hi upper boundary of the fmap-interval to be sorted
          */
    -    private void fallbackSimpleSort(int[] fmap, 
    -                                    int[] eclass, 
    -                                    int lo, 
    +    private void fallbackSimpleSort(int[] fmap,
    +                                    int[] eclass,
    +                                    int lo,
                                         int hi) {
             if (lo == hi) {
                 return;
    @@ -336,12 +336,12 @@ class BlockSort {
          * @param eclass points from the index of a character inside the
          *        block to the first index in fmap that contains the
          *        bucket of its suffix that is sorted in this step.
    -     * @param loSt lower boundary of the fmap-interval to be sorted 
    -     * @param hiSt upper boundary of the fmap-interval to be sorted 
    +     * @param loSt lower boundary of the fmap-interval to be sorted
    +     * @param hiSt upper boundary of the fmap-interval to be sorted
          */
    -    private void fallbackQSort3(int[] fmap, 
    -                                int[] eclass, 
    -                                int loSt, 
    +    private void fallbackQSort3(int[] fmap,
    +                                int[] eclass,
    +                                int loSt,
                                     int hiSt) {
             int lo, unLo, ltLo, hi, unHi, gtHi, n;
     
    @@ -359,16 +359,16 @@ class BlockSort {
                 }
     
                 /* LBZ2: Random partitioning.  Median of 3 sometimes fails to
    -               avoid bad cases.  Median of 9 seems to help but 
    +               avoid bad cases.  Median of 9 seems to help but
                    looks rather expensive.  This too seems to work but
    -               is cheaper.  Guidance for the magic constants 
    +               is cheaper.  Guidance for the magic constants
                    7621 and 32768 is taken from Sedgewick's algorithms
                    book, chapter 35.
                 */
                 r = ((r * 7621) + 1) % 32768;
                 long r3 = r % 3, med;
                 if (r3 == 0) {
    -                med = eclass[fmap[lo]]; 
    +                med = eclass[fmap[lo]];
                 } else if (r3 == 1) {
                     med = eclass[fmap[(lo + hi) >>> 1]];
                 } else {
    @@ -386,10 +386,10 @@ class BlockSort {
                             break;
                         }
                         n = eclass[fmap[unLo]] - (int) med;
    -                    if (n == 0) { 
    -                        fswap(fmap, unLo, ltLo); 
    -                        ltLo++; unLo++; 
    -                        continue; 
    +                    if (n == 0) {
    +                        fswap(fmap, unLo, ltLo);
    +                        ltLo++; unLo++;
    +                        continue;
                         }
                         if (n > 0) {
                             break;
    @@ -402,9 +402,9 @@ class BlockSort {
                         }
                         n = eclass[fmap[unHi]] - (int) med;
                         if (n == 0) {
    -                        fswap(fmap, unHi, gtHi); 
    -                        gtHi--; unHi--; 
    -                        continue; 
    +                        fswap(fmap, unHi, gtHi);
    +                        gtHi--; unHi--;
    +                        continue;
                         }
                         if (n < 0) {
                             break;
    @@ -510,7 +510,7 @@ class BlockSort {
               --*/
     
             /*-- LBZ2: set sentinel bits for block-end detection --*/
    -        for (i = 0; i < 32; i++) { 
    +        for (i = 0; i < 32; i++) {
                 bhtab.set(nblock + 2 * i);
                 bhtab.clear(nblock + 2 * i + 1);
             }
    diff --git a/src/main/org/apache/tools/bzip2/CBZip2InputStream.java b/src/main/org/apache/tools/bzip2/CBZip2InputStream.java
    index 62315d122..73b6aa19a 100644
    --- a/src/main/org/apache/tools/bzip2/CBZip2InputStream.java
    +++ b/src/main/org/apache/tools/bzip2/CBZip2InputStream.java
    @@ -40,7 +40,7 @@ import java.io.InputStream;
      * source stream via the single byte {@link java.io.InputStream#read()
      * read()} method exclusively. Thus you should consider to use a
      * buffered source stream.

    - * + * *

    Instances of this class are not threadsafe.

    */ public class CBZip2InputStream extends InputStream implements BZip2Constants { @@ -173,7 +173,7 @@ public class CBZip2InputStream extends InputStream implements BZip2Constants { /* * (non-Javadoc) - * + * * @see java.io.InputStream#read(byte[], int, int) */ @Override @@ -261,7 +261,7 @@ public class CBZip2InputStream extends InputStream implements BZip2Constants { if (null == in) { throw new IOException("No InputStream"); } - + if (isFirstStream) { if (in.available() == 0) { throw new IOException("Empty InputStream"); @@ -1059,4 +1059,3 @@ public class CBZip2InputStream extends InputStream implements BZip2Constants { } } - diff --git a/src/tests/antunit/antunit-base.xml b/src/tests/antunit/antunit-base.xml index e8b352968..30bb0ea2b 100644 --- a/src/tests/antunit/antunit-base.xml +++ b/src/tests/antunit/antunit-base.xml @@ -27,6 +27,9 @@ + + + diff --git a/src/tests/antunit/taskdefs/condition/javaversion-test.xml b/src/tests/antunit/taskdefs/condition/javaversion-test.xml new file mode 100644 index 000000000..5f15a1e39 --- /dev/null +++ b/src/tests/antunit/taskdefs/condition/javaversion-test.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/tests/antunit/taskdefs/javac-test.xml b/src/tests/antunit/taskdefs/javac-test.xml index 60bc55287..7c1f462bd 100644 --- a/src/tests/antunit/taskdefs/javac-test.xml +++ b/src/tests/antunit/taskdefs/javac-test.xml @@ -265,7 +265,14 @@ public class Adapter implements CompilerAdapter { - + + + JDK 10+ + + + + + diff --git a/src/tests/junit/org/apache/tools/ant/AntClassLoaderDelegationTest.java b/src/tests/junit/org/apache/tools/ant/AntClassLoaderDelegationTest.java index 6eedf9e0f..b6f5b5f2c 100644 --- a/src/tests/junit/org/apache/tools/ant/AntClassLoaderDelegationTest.java +++ b/src/tests/junit/org/apache/tools/ant/AntClassLoaderDelegationTest.java @@ -101,7 +101,7 @@ public class AntClassLoaderDelegationTest { Arrays.asList(new URL[] {urlFromPath}), enum2List(acl.getResources(TEST_RESOURCE))); } - + private static List enum2List(Enumeration e) { return Collections.list(e); } @@ -111,7 +111,7 @@ public class AntClassLoaderDelegationTest { public ParentLoader() { } - + protected Enumeration findResources(String name) throws IOException { if (name.equals(TEST_RESOURCE)) { return Collections.enumeration( diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/AntTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/AntTest.java index 1a1fea827..b38857ee2 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/AntTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/AntTest.java @@ -45,7 +45,7 @@ import static org.junit.Assert.fail; /** */ public class AntTest { - + @Rule public BuildFileRule buildRule = new BuildFileRule(); diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/AntlibTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/AntlibTest.java index ee11483ff..70abe0c41 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/AntlibTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/AntlibTest.java @@ -89,7 +89,7 @@ public class AntlibTest { Assume.assumeTrue("Test requires shared JVM", isSharedJVM()); buildRule.executeTarget("antlib_uri_auto2"); } - + public static class MyTask extends Task { public void execute() { log("MyTask called"); @@ -103,4 +103,3 @@ public class AntlibTest { } } - diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/AvailableTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/AvailableTest.java index ef97e3757..ae87a5a1f 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/AvailableTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/AvailableTest.java @@ -34,10 +34,10 @@ import static org.junit.Assert.fail; */ public class AvailableTest { - + @Rule public BuildFileRule buildRule = new BuildFileRule(); - + @Before public void setUp() { buildRule.configureProject("src/etc/testcases/taskdefs/available.xml"); diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/CVSPassTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/CVSPassTest.java index 96aad2196..63ee6456c 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/CVSPassTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/CVSPassTest.java @@ -44,7 +44,7 @@ public class CVSPassTest { ":pserver:anoncvs@xml.apache.org:/home/cvspublic Ay=0=h