This is an automated email from the ASF dual-hosted git repository. bodewig pushed a commit to branch 1.9.x in repository https://gitbox.apache.org/repos/asf/ant.git
The following commit(s) were added to refs/heads/1.9.x by this push: new 45fd589 rmic has been removed in Java 15+ 45fd589 is described below commit 45fd589a1fb2eece010993b43eb220821ea0d22a Author: Stefan Bodewig <bode...@apache.org> AuthorDate: Tue May 5 11:53:39 2020 +0200 rmic has been removed in Java 15+ --- WHATSNEW | 3 ++ manual/Tasks/rmic.html | 5 ++ src/etc/testcases/taskdefs/rmic/rmic.xml | 58 ++++++++++++---------- .../tools/ant/taskdefs/rmic/ForkingSunRmic.java | 5 ++ src/tests/antunit/taskdefs/rmic-test.xml | 22 +++++++- .../tools/ant/taskdefs/RmicAdvancedTest.java | 10 +++- 6 files changed, 74 insertions(+), 29 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index aac8219..55ef289 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -7,6 +7,9 @@ Other changes: * The runant.py script should now work with Python 3. Github Pull Request #96 + * 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.9.13 TO Ant 1.9.14 ===================================== diff --git a/manual/Tasks/rmic.html b/manual/Tasks/rmic.html index c0d6daf..226b54b 100644 --- a/manual/Tasks/rmic.html +++ b/manual/Tasks/rmic.html @@ -27,6 +27,11 @@ <h2><a name="rmic">Rmic</a></h2> <h3>Description</h3> <p>Runs the rmic compiler for a certain class.</p> + +<p><b>Note</b> <code>rmic</code> 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>Rmic 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 _Stub nor _Skel classes). If you want to rmic a single diff --git a/src/etc/testcases/taskdefs/rmic/rmic.xml b/src/etc/testcases/taskdefs/rmic/rmic.xml index 4670f43..fe9973e 100644 --- a/src/etc/testcases/taskdefs/rmic/rmic.xml +++ b/src/etc/testcases/taskdefs/rmic/rmic.xml @@ -201,11 +201,16 @@ <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"/> @@ -218,56 +223,59 @@ <available classname="java.util.ServiceLoader"/> </and> </condition> + <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> @@ -385,35 +393,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> @@ -429,7 +437,7 @@ /> </target> - <target name="testMagicPropertyIsEmptyString" depends="init"> + <target name="testMagicPropertyIsEmptyString" depends="init" unless="java15+"> <property name="build.rmic" value=""/> <base-rmic /> <assertBaseCompiled/> @@ -478,23 +486,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"/> diff --git a/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java b/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java index 9efc486..5afae42 100644 --- a/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java +++ b/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java @@ -71,6 +71,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()); diff --git a/src/tests/antunit/taskdefs/rmic-test.xml b/src/tests/antunit/taskdefs/rmic-test.xml index 67b4afc..3fdf5a5 100644 --- a/src/tests/antunit/taskdefs/rmic-test.xml +++ b/src/tests/antunit/taskdefs/rmic-test.xml @@ -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> diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java index 676eda4..4ca4fe2 100644 --- a/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java +++ b/src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java @@ -25,6 +25,7 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.taskdefs.rmic.RmicAdapterFactory; import org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter; import org.apache.tools.ant.util.JavaEnvUtils; +import org.junit.Assume; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; @@ -232,6 +233,7 @@ public class RmicAdvancedTest { */ @Test public void testDefaultBadClass() throws Exception { + Assume.assumeFalse(JavaEnvUtils.isAtLeastJavaVersion("15")); try { buildRule.executeTarget("testDefaultBadClass"); fail("expected the class to fail"); @@ -445,7 +447,9 @@ public class RmicAdvancedTest { } private void xnewTest(String target) { - if (!JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) { + if (!JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9) + || JavaEnvUtils.isAtLeastJavaVersion("15")) { + // target is skipped with Java 15+ buildRule.executeTarget(target); } else { try { @@ -458,7 +462,9 @@ public class RmicAdvancedTest { } private void corbaTest(String target) { - if (!JavaEnvUtils.isAtLeastJavaVersion("11")) { + if (!JavaEnvUtils.isAtLeastJavaVersion("11") + || JavaEnvUtils.isAtLeastJavaVersion("15")) { + // target is skipped with Java 15+ buildRule.executeTarget(target); } else { try {