Stefan Bodewig 9 years ago
parent
commit
e74054fbbd
4 changed files with 42 additions and 5 deletions
  1. +4
    -0
      WHATSNEW
  2. +3
    -1
      manual/Tasks/rmic.html
  3. +14
    -0
      src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
  4. +21
    -4
      src/tests/junit/org/apache/tools/ant/taskdefs/RmicAdvancedTest.java

+ 4
- 0
WHATSNEW View File

@@ -12,6 +12,10 @@ Changes that could break older environments:
* The ant.java.version property will now hold the value "9" rather * The ant.java.version property will now hold the value "9" rather
than "1.9" if running on Java 9. than "1.9" if running on Java 9.


* <rmic> will no longer allow the -Xnew option (or xmic compiler) to
be used when running on Java 9 since this option has been removed.
Bugzilla Report 59906

Fixed bugs: Fixed bugs:
----------- -----------




+ 3
- 1
manual/Tasks/rmic.html View File

@@ -61,7 +61,9 @@ attribute. or a nested element.
running on JDK 9+.</li> running on JDK 9+.</li>
<li>xnew - the sun compiler forked into a separate process, <li>xnew - the sun compiler forked into a separate process,
with the -Xnew option (since Ant 1.7). with the -Xnew option (since Ant 1.7).
This is the most reliable way to use -Xnew</li>
This is the most reliable way to use -Xnew.
<br></br>JDK9 has removed support for -Xnew and starting with Ant
1.9.8 this option will be rejected by ant when running on JDK9.</li>
<li> "" (empty string). This has the same behaviour as not setting the compiler attribute. <li> "" (empty string). This has the same behaviour as not setting the compiler attribute.
First the value of <tt>build.rmic</tt> is used if defined, and if not, the default First the value of <tt>build.rmic</tt> is used if defined, and if not, the default
for the platform is chosen. If build.rmic is set to this, you get the default. for the platform is chosen. If build.rmic is set to this, you get the default.


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

@@ -24,11 +24,13 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.Vector; import java.util.Vector;


import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project; import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Rmic; import org.apache.tools.ant.taskdefs.Rmic;
import org.apache.tools.ant.types.Commandline; import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.util.FileNameMapper; import org.apache.tools.ant.util.FileNameMapper;
import org.apache.tools.ant.util.JavaEnvUtils;
import org.apache.tools.ant.util.StringUtils; import org.apache.tools.ant.util.StringUtils;


/** /**
@@ -248,6 +250,8 @@ public abstract class DefaultRmicAdapter implements RmicAdapter {
compilerArgs = preprocessCompilerArgs(compilerArgs); compilerArgs = preprocessCompilerArgs(compilerArgs);
cmd.addArguments(compilerArgs); cmd.addArguments(compilerArgs);


verifyArguments(cmd);

logAndAddFilesToCompile(cmd); logAndAddFilesToCompile(cmd);
return cmd; return cmd;
} }
@@ -349,6 +353,16 @@ public abstract class DefaultRmicAdapter implements RmicAdapter {
attributes.log(niceSourceList.toString(), Project.MSG_VERBOSE); attributes.log(niceSourceList.toString(), Project.MSG_VERBOSE);
} }


private void verifyArguments(Commandline cmd) {
if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) {
for (String arg : cmd.getArguments()) {
if ("-Xnew".equals(arg)) {
throw new BuildException("JDK9 has removed support for -Xnew");
}
}
}
}

/** /**
* Mapper that may return up to two file names. * Mapper that may return up to two file names.
* *


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

@@ -24,11 +24,13 @@ import org.apache.tools.ant.BuildFileRule;
import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.taskdefs.rmic.RmicAdapterFactory; import org.apache.tools.ant.taskdefs.rmic.RmicAdapterFactory;
import org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter; import org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter;
import org.apache.tools.ant.util.JavaEnvUtils;
import org.junit.Before; import org.junit.Before;
import org.junit.Ignore; import org.junit.Ignore;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;


import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;


/** /**
@@ -352,6 +354,7 @@ public class RmicAdvancedTest {
*/ */
@Test @Test
public void testXnew() throws Exception { public void testXnew() throws Exception {
// skipped via unless attribute for JDK > 6
buildRule.executeTarget("testXnew"); buildRule.executeTarget("testXnew");
} }


@@ -362,6 +365,7 @@ public class RmicAdvancedTest {
*/ */
@Test @Test
public void testXnewDest() throws Exception { public void testXnewDest() throws Exception {
// skipped via unless attribute for JDK > 6
buildRule.executeTarget("testXnewDest"); buildRule.executeTarget("testXnewDest");
} }


@@ -372,7 +376,7 @@ public class RmicAdvancedTest {
*/ */
@Test @Test
public void testXnewForked() throws Exception { public void testXnewForked() throws Exception {
buildRule.executeTarget("testXnewForked");
xnewTest("testXnewForked");
} }


/** /**
@@ -382,7 +386,7 @@ public class RmicAdvancedTest {
*/ */
@Test @Test
public void testXnewForkedDest() throws Exception { public void testXnewForkedDest() throws Exception {
buildRule.executeTarget("testXnewForkedDest");
xnewTest("testXnewForkedDest");
} }


/** /**
@@ -392,7 +396,7 @@ public class RmicAdvancedTest {
*/ */
@Test @Test
public void testXnewCompiler() throws Exception { public void testXnewCompiler() throws Exception {
buildRule.executeTarget("testXnewCompiler");
xnewTest("testXnewCompiler");
} }


/** /**
@@ -402,7 +406,7 @@ public class RmicAdvancedTest {
*/ */
@Test @Test
public void testXnewCompilerDest() throws Exception { public void testXnewCompilerDest() throws Exception {
buildRule.executeTarget("testXnewCompilerDest");
xnewTest("testXnewCompilerDest");
} }


/** /**
@@ -445,6 +449,19 @@ public class RmicAdvancedTest {
buildRule.executeTarget("testIIOPDest"); buildRule.executeTarget("testIIOPDest");
} }


private void xnewTest(String target) {
if (!JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) {
buildRule.executeTarget(target);
} else {
try {
buildRule.executeTarget(target);
fail("Target should have thrown a BuildException");
} catch (BuildException ex) {
assertEquals("JDK9 has removed support for -Xnew", 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


Loading…
Cancel
Save