@@ -17,6 +17,13 @@ Fixed bugs: | |||||
Bugzilla Report 62076 | 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 | 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, | project contains a compiler implementation for this task as well, | ||||
please consult miniRMI's documentation to learn how to use it.</p> | 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> | <h3>Parameters</h3> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | <tr> | ||||
@@ -168,7 +176,10 @@ please consult miniRMI's documentation to learn how to use it.</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">iiop</td> | <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> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -178,7 +189,8 @@ please consult miniRMI's documentation to learn how to use it.</p> | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">idl</td> | <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> | <td align="center" valign="top">No</td> | ||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
@@ -176,6 +176,18 @@ public abstract class DefaultRmicAdapter implements RmicAdapter { | |||||
return classpath; | 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. | * Setup rmic argument for rmic. | ||||
* @return the command line | * @return the command line | ||||
@@ -223,6 +235,9 @@ public abstract class DefaultRmicAdapter implements RmicAdapter { | |||||
} | } | ||||
if (attributes.getIiop()) { | 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); | attributes.log("IIOP has been turned on.", Project.MSG_INFO); | ||||
cmd.createArgument().setValue("-iiop"); | cmd.createArgument().setValue("-iiop"); | ||||
if (attributes.getIiopopts() != null) { | if (attributes.getIiopopts() != null) { | ||||
@@ -233,6 +248,9 @@ public abstract class DefaultRmicAdapter implements RmicAdapter { | |||||
} | } | ||||
if (attributes.getIdl()) { | if (attributes.getIdl()) { | ||||
if (!areIiopAndIdlSupported()) { | |||||
throw new BuildException("this rmic implementation doesn't support the -idl switch"); | |||||
} | |||||
cmd.createArgument().setValue("-idl"); | cmd.createArgument().setValue("-idl"); | ||||
attributes.log("IDL has been turned on.", Project.MSG_INFO); | attributes.log("IDL has been turned on.", Project.MSG_INFO); | ||||
if (attributes.getIdlopts() != null) { | if (attributes.getIdlopts() != null) { | ||||
@@ -45,6 +45,21 @@ public class ForkingSunRmic extends DefaultRmicAdapter { | |||||
*/ | */ | ||||
public static final String COMPILER_NAME = "forking"; | 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 | * exec by creating a new command | ||||
* @return true if the command ran successfully | * @return true if the command ran successfully | ||||
@@ -43,6 +43,16 @@ public class KaffeRmic extends DefaultRmicAdapter { | |||||
*/ | */ | ||||
public static final String COMPILER_NAME = "kaffe"; | 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} */ | /** {@inheritDoc} */ | ||||
public boolean execute() throws BuildException { | public boolean execute() throws BuildException { | ||||
getRmic().log("Using Kaffe rmic", Project.MSG_VERBOSE); | getRmic().log("Using Kaffe rmic", Project.MSG_VERBOSE); | ||||
@@ -52,6 +52,16 @@ public class WLRmic extends DefaultRmicAdapter { | |||||
/** unsupported error message */ | /** unsupported error message */ | ||||
public static final String UNSUPPORTED_STUB_OPTION = "Unsupported stub option: "; | 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. | * Carry out the rmic compilation. | ||||
* @return true if the compilation succeeded | * @return true if the compilation succeeded | ||||
@@ -411,7 +411,7 @@ public class RmicAdvancedTest { | |||||
*/ | */ | ||||
@Test | @Test | ||||
public void testIDL() throws Exception { | public void testIDL() throws Exception { | ||||
buildRule.executeTarget("testIDL"); | |||||
corbaTest("testIDL"); | |||||
} | } | ||||
/** | /** | ||||
@@ -421,7 +421,7 @@ public class RmicAdvancedTest { | |||||
*/ | */ | ||||
@Test | @Test | ||||
public void testIDLDest() throws Exception { | public void testIDLDest() throws Exception { | ||||
buildRule.executeTarget("testIDLDest"); | |||||
corbaTest("testIDLDest"); | |||||
} | } | ||||
/** | /** | ||||
@@ -431,7 +431,7 @@ public class RmicAdvancedTest { | |||||
*/ | */ | ||||
@Test | @Test | ||||
public void testIIOP() throws Exception { | public void testIIOP() throws Exception { | ||||
buildRule.executeTarget("testIIOP"); | |||||
corbaTest("testIIOP"); | |||||
} | } | ||||
/** | /** | ||||
@@ -441,7 +441,7 @@ public class RmicAdvancedTest { | |||||
*/ | */ | ||||
@Test | @Test | ||||
public void testIIOPDest() throws Exception { | public void testIIOPDest() throws Exception { | ||||
buildRule.executeTarget("testIIOPDest"); | |||||
corbaTest("testIIOPDest"); | |||||
} | } | ||||
private void xnewTest(String target) { | 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 | * this little bunny verifies that we can load stuff, and that | ||||
* a failure to execute is turned into a fault | * a failure to execute is turned into a fault | ||||