Browse Source

Java11 removes support for rmic -idl/-iiop

master
Stefan Bodewig 7 years ago
parent
commit
5aa1e8eff8
7 changed files with 95 additions and 6 deletions
  1. +7
    -0
      WHATSNEW
  2. +14
    -2
      manual/Tasks/rmic.html
  3. +18
    -0
      src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
  4. +15
    -0
      src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java
  5. +10
    -0
      src/main/org/apache/tools/ant/taskdefs/rmic/KaffeRmic.java
  6. +10
    -0
      src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
  7. +21
    -4
      src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java

+ 7
- 0
WHATSNEW View File

@@ -17,6 +17,13 @@ Fixed bugs:
Bugzilla Report 62076


Other changes:
--------------

* when running on Java 11+ rmic will fail early if iiop or idl are
requested. Java11 removes support for CORBA and the switches have
been removed from the rmic tool.

Changes from Ant 1.9.9 TO Ant 1.9.10
====================================



+ 14
- 2
manual/Tasks/rmic.html View File

@@ -74,6 +74,14 @@ attribute. or a nested element.
project contains a compiler implementation for this task as well,
please consult miniRMI's documentation to learn how to use it.</p>

<h4>CORBA support</h4>

<p>Java 11 removes the CORBA and JavaEE packages and rmic no longer
supports either <code>iiop</code> nor <code>idl</code>. Starting
with Ant 1.9.11 the rmic task will fail when using either while
running Java11+ unless you fork the task and explicitly specify an
executable.</p>

<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
<tr>
@@ -168,7 +176,10 @@ please consult miniRMI's documentation to learn how to use it.</p>
</tr>
<tr>
<td valign="top">iiop</td>
<td valign="top">indicates that portable (RMI/IIOP) stubs should be generated</td>
<td valign="top">indicates that portable (RMI/IIOP) stubs should
be generated.<br/>
See the note on CORBA support above.
</td>
<td align="center" valign="top">No</td>
</tr>
<tr>
@@ -178,7 +189,8 @@ please consult miniRMI's documentation to learn how to use it.</p>
</tr>
<tr>
<td valign="top">idl</td>
<td valign="top">indicates that IDL output files should be generated</td>
<td valign="top">indicates that IDL output files should be
generated.<br/> See the note on CORBA support above.</td>
<td align="center" valign="top">No</td>
</tr>
<tr>


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

@@ -176,6 +176,18 @@ public abstract class DefaultRmicAdapter implements RmicAdapter {
return classpath;
}

/**
* Whether the iiop and idl switches are supported.
*
* <p>This implementation returns false if running on Java 11
* onwards and true otherwise.</p>
* @return true if the iiop and idl switches are supported
* @since Ant 1.9.11
*/
protected boolean areIiopAndIdlSupported() {
return !JavaEnvUtils.isAtLeastJavaVersion("11");
}

/**
* Setup rmic argument for rmic.
* @return the command line
@@ -223,6 +235,9 @@ public abstract class DefaultRmicAdapter implements RmicAdapter {
}

if (attributes.getIiop()) {
if (!areIiopAndIdlSupported()) {
throw new BuildException("this rmic implementation doesn't support the -iiop switch");
}
attributes.log("IIOP has been turned on.", Project.MSG_INFO);
cmd.createArgument().setValue("-iiop");
if (attributes.getIiopopts() != null) {
@@ -233,6 +248,9 @@ public abstract class DefaultRmicAdapter implements RmicAdapter {
}

if (attributes.getIdl()) {
if (!areIiopAndIdlSupported()) {
throw new BuildException("this rmic implementation doesn't support the -idl switch");
}
cmd.createArgument().setValue("-idl");
attributes.log("IDL has been turned on.", Project.MSG_INFO);
if (attributes.getIdlopts() != null) {


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

@@ -45,6 +45,21 @@ public class ForkingSunRmic extends DefaultRmicAdapter {
*/
public static final String COMPILER_NAME = "forking";

/**
* @since Ant 1.9.11
*/
@Override
protected boolean areIiopAndIdlSupported() {
boolean supported = !JavaEnvUtils.isAtLeastJavaVersion("11");
if (!supported && getRmic().getExecutable() != null) {
getRmic().getProject()
.log("Allowing -iiop and -idl for forked rmic even though this version of Java doesn't support it.",
Project.MSG_INFO);
return true;
}
return supported;
}

/**
* exec by creating a new command
* @return true if the command ran successfully


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

@@ -43,6 +43,16 @@ public class KaffeRmic extends DefaultRmicAdapter {
*/
public static final String COMPILER_NAME = "kaffe";

/**
* @since Ant 1.9.11
*/
@Override
protected boolean areIiopAndIdlSupported() {
// actually I don't think Kaffee supports either, but we've
// accepted the flags prior to 1.9.11
return true;
}

/** {@inheritDoc} */
public boolean execute() throws BuildException {
getRmic().log("Using Kaffe rmic", Project.MSG_VERBOSE);


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

@@ -52,6 +52,16 @@ public class WLRmic extends DefaultRmicAdapter {
/** unsupported error message */
public static final String UNSUPPORTED_STUB_OPTION = "Unsupported stub option: ";

/**
* @since Ant 1.9.11
*/
@Override
protected boolean areIiopAndIdlSupported() {
// actually I don't think Weblogic's rmic supports either, but
// we've accepted the flags prior to 1.9.11
return true;
}

/**
* Carry out the rmic compilation.
* @return true if the compilation succeeded


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

@@ -411,7 +411,7 @@ public class RmicAdvancedTest {
*/
@Test
public void testIDL() throws Exception {
buildRule.executeTarget("testIDL");
corbaTest("testIDL");
}

/**
@@ -421,7 +421,7 @@ public class RmicAdvancedTest {
*/
@Test
public void testIDLDest() throws Exception {
buildRule.executeTarget("testIDLDest");
corbaTest("testIDLDest");
}

/**
@@ -431,7 +431,7 @@ public class RmicAdvancedTest {
*/
@Test
public void testIIOP() throws Exception {
buildRule.executeTarget("testIIOP");
corbaTest("testIIOP");
}

/**
@@ -441,7 +441,7 @@ public class RmicAdvancedTest {
*/
@Test
public void testIIOPDest() throws Exception {
buildRule.executeTarget("testIIOPDest");
corbaTest("testIIOPDest");
}

private void xnewTest(String target) {
@@ -457,6 +457,23 @@ public class RmicAdvancedTest {
}
}

private void corbaTest(String target) {
if (!JavaEnvUtils.isAtLeastJavaVersion("11")) {
buildRule.executeTarget(target);
} else {
try {
buildRule.executeTarget(target);
fail("Target should have thrown a BuildException");
} catch (BuildException ex) {
if (target.indexOf("IDL") > -1) {
assertEquals("this rmic implementation doesn't support the -idl switch", ex.getMessage());
} else {
assertEquals("this rmic implementation doesn't support the -iiop switch", ex.getMessage());
}
}
}
}

/**
* this little bunny verifies that we can load stuff, and that
* a failure to execute is turned into a fault


Loading…
Cancel
Save