| @@ -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 | |||
| ==================================== | |||
| @@ -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> | |||
| @@ -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) { | |||
| @@ -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 | |||
| @@ -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); | |||
| @@ -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 | |||
| @@ -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 | |||