| @@ -54,6 +54,9 @@ Other changes: | |||
| reproducible builds (https://reproducible-builds.org/specs/source-date-epoch/#idm55) | |||
| Bugzilla Report 62617 | |||
| * rmic has been removed from Java 15. The task will now throw an | |||
| exception if you try to use it while running Java 15 or newer. | |||
| Changes from Ant 1.10.6 TO Ant 1.10.7 | |||
| ===================================== | |||
| @@ -27,6 +27,11 @@ | |||
| <h2 id="rmic">Rmic</h2> | |||
| <h3>Description</h3> | |||
| <p>Runs the <kbd>rmic</kbd> compiler for a certain class.</p> | |||
| <p><b>Note</b> <kbd>rmic</kbd> has been deprecated as of Java 13 and | |||
| removed as of Java 15. Trying to use it with Java15 will fail unless | |||
| you specifiy the execxutable or rmic-adapter explicitly.</p> | |||
| <p><code>Rmic</code> can be run on a single class (as specified with the classname attribute) or a | |||
| number of classes at once (all classes below base that are neither <code>_Stub</code> | |||
| nor <code>_Skel</code> classes). If you want to <code>rmic</code> a single class and this class is | |||
| @@ -201,67 +201,75 @@ | |||
| <target name="probe-rmic"> | |||
| <available property="kaffe.present" classname="jkaffe.rmi.rmic.RMIC"/> | |||
| <condition property="rmic.present"> | |||
| <or> | |||
| <available classname="sun.rmi.rmic.Main"/> | |||
| <!-- we'll use forking as default for Java9 --> | |||
| <available classname="java.lang.module.ModuleDescriptor"/> | |||
| </or> | |||
| <and> | |||
| <or> | |||
| <available classname="sun.rmi.rmic.Main"/> | |||
| <!-- we'll use forking as default for Java9 --> | |||
| <available classname="java.lang.module.ModuleDescriptor"/> | |||
| </or> | |||
| <not> | |||
| <javaversion atleast="15"/> | |||
| </not> | |||
| </and> | |||
| </condition> | |||
| <condition property="rmic.compiler" value="forking"> | |||
| <available classname="java.lang.module.ModuleDescriptor"/> | |||
| </condition> | |||
| <property name="rmic.compiler" value="sun"/> | |||
| <available property="wlrmic.present" classname="weblogic.rmic"/> | |||
| <condition property="java15+"> | |||
| <javaversion atleast="15"/> | |||
| </condition> | |||
| </target> | |||
| <target name="testDefault" depends="init"> | |||
| <target name="testDefault" depends="init" unless="java15+"> | |||
| <base-rmic compiler="default" listfiles="true"/> | |||
| <assertBaseCompiled/> | |||
| </target> | |||
| <target name="testDefaultDest" depends="init"> | |||
| <target name="testDefaultDest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler="default"/> | |||
| <assertBaseCompiledInDest/> | |||
| </target> | |||
| <target name="testEmpty" depends="init"> | |||
| <target name="testEmpty" depends="init" unless="java15+"> | |||
| <base-rmic compiler=""/> | |||
| <assertBaseCompiled/> | |||
| </target> | |||
| <target name="testEmptyDest" depends="init"> | |||
| <target name="testEmptyDest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler=""/> | |||
| <assertBaseCompiledInDest/> | |||
| </target> | |||
| <target name="testVersion11" depends="init"> | |||
| <target name="testVersion11" depends="init" unless="java15+"> | |||
| <base-rmic compiler="default" stubversion="1.1" /> | |||
| <assertBaseCompiled/> | |||
| </target> | |||
| <target name="testVersion11Dest" depends="init"> | |||
| <target name="testVersion11Dest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler="default" stubversion="1.1" /> | |||
| <assertBaseCompiledInDest/> | |||
| </target> | |||
| <target name="testVersion12" depends="init"> | |||
| <target name="testVersion12" depends="init" unless="java15+"> | |||
| <base-rmic compiler="default" stubversion="1.2" /> | |||
| <assertStubCompiled/> | |||
| <assertSkelAbsent/> | |||
| </target> | |||
| <target name="testVersion12Dest" depends="init"> | |||
| <target name="testVersion12Dest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler="default" stubversion="1.2" /> | |||
| <assertStubCompiledInDest/> | |||
| <assertSkelAbsentInDest/> | |||
| </target> | |||
| <target name="testVersionCompat" depends="init"> | |||
| <target name="testVersionCompat" depends="init" unless="java15+"> | |||
| <base-rmic compiler="default" stubversion="compat" /> | |||
| <assertBaseCompiled/> | |||
| </target> | |||
| <target name="testVersionCompatDest" depends="init"> | |||
| <target name="testVersionCompatDest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler="default" stubversion="compat" /> | |||
| <assertBaseCompiledInDest/> | |||
| </target> | |||
| @@ -379,35 +387,35 @@ | |||
| </javac> | |||
| </target> | |||
| <target name="testAntClasspath" depends="compileAntTimestamp"> | |||
| <target name="testAntClasspath" depends="compileAntTimestamp" unless="java15+"> | |||
| <base-rmic | |||
| compiler="default" | |||
| /> | |||
| <assertAntCompiled/> | |||
| </target> | |||
| <target name="testAntClasspathDest" depends="compileAntTimestamp"> | |||
| <target name="testAntClasspathDest" depends="compileAntTimestamp" unless="java15+"> | |||
| <dest-rmic | |||
| compiler="default" | |||
| /> | |||
| <assertAntCompiledInDest/> | |||
| </target> | |||
| <target name="testForkingAntClasspath" depends="compileAntTimestamp"> | |||
| <target name="testForkingAntClasspath" depends="compileAntTimestamp" unless="java15+"> | |||
| <base-rmic | |||
| compiler="forking" | |||
| /> | |||
| <assertAntCompiled /> | |||
| </target> | |||
| <target name="testForkingAntClasspathDest" depends="compileAntTimestamp"> | |||
| <target name="testForkingAntClasspathDest" depends="compileAntTimestamp" unless="java15+"> | |||
| <dest-rmic | |||
| compiler="forking" | |||
| /> | |||
| <assertAntCompiledInDest /> | |||
| </target> | |||
| <target name="testDefaultBadClass" depends="init"> | |||
| <target name="testDefaultBadClass" depends="init" unless="java15+"> | |||
| <rmic-bad-class compiler="default"/> | |||
| </target> | |||
| @@ -423,7 +431,7 @@ | |||
| /> | |||
| </target> | |||
| <target name="testMagicPropertyIsEmptyString" depends="init"> | |||
| <target name="testMagicPropertyIsEmptyString" depends="init" unless="java15+"> | |||
| <property name="build.rmic" value=""/> | |||
| <base-rmic /> | |||
| <assertBaseCompiled/> | |||
| @@ -455,23 +463,23 @@ | |||
| <assertBaseCompiledInDest/> | |||
| </target> | |||
| <target name="testIDL" depends="init"> | |||
| <target name="testIDL" depends="init" unless="java15+"> | |||
| <base-rmic compiler="default" idl="true"/> | |||
| <assertFileCreated file="RemoteTimestamp.idl"/> | |||
| </target> | |||
| <target name="testIDLDest" depends="init"> | |||
| <target name="testIDLDest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler="default" idl="true"/> | |||
| <assertFileCreatedInDest file="RemoteTimestamp.idl"/> | |||
| </target> | |||
| <target name="testIIOP" depends="init"> | |||
| <target name="testIIOP" depends="init" unless="java15+"> | |||
| <base-rmic compiler="default" iiop="true"/> | |||
| <assertFileCreated file="_RemoteTimestamp_Stub.class"/> | |||
| <assertFileCreated file="_RemoteTimestampImpl_Tie.class"/> | |||
| </target> | |||
| <target name="testIIOPDest" depends="init"> | |||
| <target name="testIIOPDest" depends="init" unless="java15+"> | |||
| <dest-rmic compiler="default" iiop="true"/> | |||
| <assertFileCreatedInDest file="_RemoteTimestamp_Stub.class"/> | |||
| <assertFileCreatedInDest file="_RemoteTimestampImpl_Tie.class"/> | |||
| @@ -72,6 +72,11 @@ public class ForkingSunRmic extends DefaultRmicAdapter { | |||
| Project project = owner.getProject(); | |||
| String executable = owner.getExecutable(); | |||
| if (executable == null) { | |||
| if (JavaEnvUtils.isAtLeastJavaVersion("15")) { | |||
| throw new BuildException("rmic does not exist under Java 15 and higher," | |||
| + " use rmic of an older JDK and explicitly set the executable attribute"); | |||
| } | |||
| // no explicitly specified executable | |||
| // rely on RMIC being on the path | |||
| executable = JavaEnvUtils.getJdkExecutable(getExecutableName()); | |||
| @@ -76,8 +76,13 @@ public class Adapter implements RmicAdapter { | |||
| <au:assertLogContains text="adapter called"/> | |||
| </target> | |||
| <target name="testSourceBase" | |||
| description="https://issues.apache.org/bugzilla/show_bug.cgi?id=48970"> | |||
| <target name="-check-jdk"> | |||
| <condition property="java15+"> | |||
| <javaversion atleast="15"/> | |||
| </condition> | |||
| </target> | |||
| <target name="-setup-real-test"> | |||
| <mkdir dir="${input}/org/example"/> | |||
| <mkdir dir="${output}"/> | |||
| <echo file="${input}/org/example/Foo.java"><![CDATA[ | |||
| @@ -96,10 +101,23 @@ public class FooImpl implements Foo { | |||
| } | |||
| }]]></echo> | |||
| <javac srcdir="${input}" destdir="${output}"/> | |||
| </target> | |||
| <target name="testSourceBase" depends="-check-jdk, -setup-real-test" unless="java15+" | |||
| description="https://issues.apache.org/bugzilla/show_bug.cgi?id=48970"> | |||
| <rmic sourcebase="${input}" base="${output}"> | |||
| <include name="**/*Impl.class"/> | |||
| </rmic> | |||
| <au:assertFileExists file="${input}/org/example/FooImpl_Stub.java"/> | |||
| <au:assertFileDoesntExist file="${output}/org/example/FooImpl_Stub.java"/> | |||
| </target> | |||
| <target name="testSimpleCompileFailsOnJava15+" depends="-check-jdk, -setup-real-test" | |||
| if="java15+"> | |||
| <au:expectfailure> | |||
| <rmic sourcebase="${input}" base="${output}"> | |||
| <include name="**/*Impl.class"/> | |||
| </rmic> | |||
| </au:expectfailure> | |||
| </target> | |||
| </project> | |||
| @@ -229,6 +229,8 @@ public class RmicAdvancedTest { | |||
| */ | |||
| @Test | |||
| public void testDefaultBadClass() { | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage(Rmic.ERROR_RMIC_FAILED); | |||
| try { | |||
| @@ -337,6 +339,8 @@ public class RmicAdvancedTest { | |||
| public void testXnewForkedJava9plus() { | |||
| assumeTrue("Current system is Java 8 or older", | |||
| JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("JDK9 has removed support for -Xnew"); | |||
| buildRule.executeTarget("testXnewForked"); | |||
| @@ -359,6 +363,8 @@ public class RmicAdvancedTest { | |||
| public void testXnewForkedDestJava9plus() { | |||
| assumeTrue("Current system is Java 8 or older", | |||
| JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("JDK9 has removed support for -Xnew"); | |||
| buildRule.executeTarget("testXnewForkedDest"); | |||
| @@ -381,6 +387,8 @@ public class RmicAdvancedTest { | |||
| public void testXnewCompilerJava9plus() { | |||
| assumeTrue("Current system is Java 8 or older", | |||
| JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("JDK9 has removed support for -Xnew"); | |||
| buildRule.executeTarget("testXnewCompiler"); | |||
| @@ -403,6 +411,8 @@ public class RmicAdvancedTest { | |||
| public void testXnewCompilerDestJava9plus() { | |||
| assumeTrue("Current system is Java 8 or older", | |||
| JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("JDK9 has removed support for -Xnew"); | |||
| buildRule.executeTarget("testXnewCompilerDest"); | |||
| @@ -423,6 +433,8 @@ public class RmicAdvancedTest { | |||
| @Test | |||
| public void testIDLJava11plus() { | |||
| assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("this rmic implementation doesn't support the -idl switch"); | |||
| buildRule.executeTarget("testIDL"); | |||
| @@ -443,6 +455,8 @@ public class RmicAdvancedTest { | |||
| @Test | |||
| public void testIDLDestJava11plus() { | |||
| assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("this rmic implementation doesn't support the -idl switch"); | |||
| buildRule.executeTarget("testIDL"); | |||
| @@ -463,6 +477,8 @@ public class RmicAdvancedTest { | |||
| @Test | |||
| public void testIIOPJava11plus() { | |||
| assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("this rmic implementation doesn't support the -iiop switch"); | |||
| buildRule.executeTarget("testIIOP"); | |||
| @@ -483,6 +499,8 @@ public class RmicAdvancedTest { | |||
| @Test | |||
| public void testIIOPDestJava11plus() { | |||
| assumeTrue("Current system is Java 10 or older", JavaEnvUtils.isAtLeastJavaVersion("11")); | |||
| assumeFalse("Current system is Java 15 or newer", | |||
| JavaEnvUtils.isAtLeastJavaVersion("15")); | |||
| thrown.expect(BuildException.class); | |||
| thrown.expectMessage("this rmic implementation doesn't support the -iiop switch"); | |||
| buildRule.executeTarget("testIIOP"); | |||