Browse Source

rmic has been removed in Java 15+

master
Stefan Bodewig 5 years ago
parent
commit
45fd589a1f
6 changed files with 74 additions and 29 deletions
  1. +3
    -0
      WHATSNEW
  2. +5
    -0
      manual/Tasks/rmic.html
  3. +33
    -25
      src/etc/testcases/taskdefs/rmic/rmic.xml
  4. +5
    -0
      src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java
  5. +20
    -2
      src/tests/antunit/taskdefs/rmic-test.xml
  6. +8
    -2
      src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java

+ 3
- 0
WHATSNEW View File

@@ -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
=====================================



+ 5
- 0
manual/Tasks/rmic.html View File

@@ -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


+ 33
- 25
src/etc/testcases/taskdefs/rmic/rmic.xml View File

@@ -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"/>


+ 5
- 0
src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java View File

@@ -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());


+ 20
- 2
src/tests/antunit/taskdefs/rmic-test.xml View File

@@ -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>

+ 8
- 2
src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java View File

@@ -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 {


Loading…
Cancel
Save