diff --git a/src/main/org/apache/tools/ant/taskdefs/Javac.java b/src/main/org/apache/tools/ant/taskdefs/Javac.java index dcfda7026..ab456f0bf 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Javac.java +++ b/src/main/org/apache/tools/ant/taskdefs/Javac.java @@ -755,8 +755,10 @@ public class Javac extends MatchingTask { String compilerImpl = getCompilerVersion(); if (fork) { if (isJdkCompiler(compilerImpl)) { - log("Since fork is true, ignoring compiler setting.", - Project.MSG_WARN); + if (facade.hasBeenSet()) { + log("Since fork is true, ignoring compiler setting.", + Project.MSG_WARN); + } compilerImpl = "extJavac"; } else { log("Since compiler setting isn't classic or modern," diff --git a/src/main/org/apache/tools/ant/util/facade/FacadeTaskHelper.java b/src/main/org/apache/tools/ant/util/facade/FacadeTaskHelper.java index 73ac32e14..50dd995d8 100644 --- a/src/main/org/apache/tools/ant/util/facade/FacadeTaskHelper.java +++ b/src/main/org/apache/tools/ant/util/facade/FacadeTaskHelper.java @@ -164,4 +164,14 @@ public class FacadeTaskHelper { tmp.copyInto(res); return res; } + + /** + * Tests whether the implementation has been chosen by the user + * (either via a magic property or explicitly. + * + * @since Ant 1.5.2 + */ + public boolean hasBeenSet() { + return userChoice != null || magicValue != null; + } } diff --git a/src/testcases/org/apache/tools/ant/util/facade/FacadeTaskHelperTest.java b/src/testcases/org/apache/tools/ant/util/facade/FacadeTaskHelperTest.java index 68f4310f5..f08631610 100644 --- a/src/testcases/org/apache/tools/ant/util/facade/FacadeTaskHelperTest.java +++ b/src/testcases/org/apache/tools/ant/util/facade/FacadeTaskHelperTest.java @@ -84,4 +84,17 @@ public class FacadeTaskHelperTest extends TestCase { fth.setImplementation("baz"); assertEquals("baz", fth.getImplementation()); } + + public void testHasBeenSet() { + FacadeTaskHelper fth = new FacadeTaskHelper("foo"); + assertTrue("nothing set", !fth.hasBeenSet()); + fth.setMagicValue(null); + assertTrue("magic has not been set", !fth.hasBeenSet()); + fth.setMagicValue("foo"); + assertTrue("magic has been set", fth.hasBeenSet()); + fth.setMagicValue(null); + assertTrue(!fth.hasBeenSet()); + fth.setImplementation("baz"); + assertTrue("set explicitly", fth.hasBeenSet()); + } }