From 51ce8fac7296500ba974ee639616c82475b4f171 Mon Sep 17 00:00:00 2001 From: Antoine Levy-Lambert Date: Sun, 12 May 2013 22:37:56 +0000 Subject: [PATCH] fix for Target rewriting for nested "include" only works when "as" is specified, Bugzilla PR 54940 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1481662 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 8 +++++++ .../org/apache/tools/ant/ProjectHelper.java | 6 +++++ .../tools/ant/helper/ProjectHelper2.java | 8 +++---- .../apache/tools/ant/taskdefs/ImportTask.java | 8 ++++--- src/tests/antunit/taskdefs/importtests/w.xml | 22 +++++++++++++++++++ src/tests/antunit/taskdefs/importtests/x.xml | 22 +++++++++++++++++++ src/tests/antunit/taskdefs/importtests/y.xml | 22 +++++++++++++++++++ src/tests/antunit/taskdefs/importtests/z.xml | 21 ++++++++++++++++++ src/tests/antunit/taskdefs/include-test.xml | 11 +++++++--- 9 files changed, 117 insertions(+), 11 deletions(-) create mode 100644 src/tests/antunit/taskdefs/importtests/w.xml create mode 100644 src/tests/antunit/taskdefs/importtests/x.xml create mode 100644 src/tests/antunit/taskdefs/importtests/y.xml create mode 100644 src/tests/antunit/taskdefs/importtests/z.xml diff --git a/WHATSNEW b/WHATSNEW index 138baa622..e157334c6 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -4,6 +4,9 @@ Changes from Ant 1.9.0 TO current Changes that could break older environments: ------------------------------------------- + * Users who have their own ProjectHelper implementation will need to change it because the import and include tasks + will now default the targetPrefix to ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX. + Users using the default ProjectHelper2 with ant need not worry about this change done to fix Bugzilla Report 54940. Fixed bugs: @@ -21,6 +24,11 @@ Fixed bugs: * Fixed loading of external dependencies in JUnit task. Bugzilla Report 54835. + * Target rewriting for nested "include" only works when "as" is specified. + See also "Changes that could break older environments" + Bugzilla Report 54940. + + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/ProjectHelper.java b/src/main/org/apache/tools/ant/ProjectHelper.java index b9df28cae..fa54a9f24 100644 --- a/src/main/org/apache/tools/ant/ProjectHelper.java +++ b/src/main/org/apache/tools/ant/ProjectHelper.java @@ -71,6 +71,12 @@ public class ProjectHelper { */ public static final String PROJECTHELPER_REFERENCE = MagicNames.REFID_PROJECT_HELPER; + /** + * constant to denote use project name as target prefix + * @since Ant 1.9.1 + */ + public static final String USE_PROJECT_NAME_AS_TARGET_PREFIX = "USE_PROJECT_NAME_AS_TARGET_PREFIX"; + /** * Configures the project with the contents of the specified build file. * diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java index 517f1ca5b..57936b7be 100644 --- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java +++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java @@ -732,12 +732,10 @@ public class ProjectHelper2 extends ProjectHelper { project.setName(value); project.addReference(value, project); } else if (isInIncludeMode()) { - if (!"".equals(value) - && (getCurrentTargetPrefix() == null - || getCurrentTargetPrefix().length() == 0) - ) { + if (!"".equals(value) && getCurrentTargetPrefix()!= null && getCurrentTargetPrefix().endsWith(ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX)) { + String newTargetPrefix = getCurrentTargetPrefix().replace(ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX, value); // help nested include tasks - setCurrentTargetPrefix(value); + setCurrentTargetPrefix(newTargetPrefix); } } } diff --git a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java index d6de610b3..2da7f55b4 100644 --- a/src/main/org/apache/tools/ant/taskdefs/ImportTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/ImportTask.java @@ -64,7 +64,7 @@ import java.util.Vector; public class ImportTask extends Task { private String file; private boolean optional; - private String targetPrefix; + private String targetPrefix = ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX; private String prefixSeparator = "."; private final Union resources = new Union(); private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); @@ -199,7 +199,7 @@ public class ImportTask extends Task { return; } - // nested invokations are possible like an imported file + // nested invocations are possible like an imported file // importing another one String oldPrefix = ProjectHelper.getCurrentTargetPrefix(); boolean oldIncludeMode = ProjectHelper.isInIncludeMode(); @@ -209,7 +209,9 @@ public class ImportTask extends Task { if (isInIncludeMode() && oldPrefix != null && targetPrefix != null) { prefix = oldPrefix + oldSep + targetPrefix; - } else if (targetPrefix != null) { + } else if (isInIncludeMode()) { + prefix = targetPrefix; + } else if (!ProjectHelper.USE_PROJECT_NAME_AS_TARGET_PREFIX.equals(targetPrefix)) { prefix = targetPrefix; } else { prefix = oldPrefix; diff --git a/src/tests/antunit/taskdefs/importtests/w.xml b/src/tests/antunit/taskdefs/importtests/w.xml new file mode 100644 index 000000000..e400c501d --- /dev/null +++ b/src/tests/antunit/taskdefs/importtests/w.xml @@ -0,0 +1,22 @@ + + + + ${ant.file.w} + + + diff --git a/src/tests/antunit/taskdefs/importtests/x.xml b/src/tests/antunit/taskdefs/importtests/x.xml new file mode 100644 index 000000000..a509e574e --- /dev/null +++ b/src/tests/antunit/taskdefs/importtests/x.xml @@ -0,0 +1,22 @@ + + + + ${ant.file.x} + + + diff --git a/src/tests/antunit/taskdefs/importtests/y.xml b/src/tests/antunit/taskdefs/importtests/y.xml new file mode 100644 index 000000000..0e54fa838 --- /dev/null +++ b/src/tests/antunit/taskdefs/importtests/y.xml @@ -0,0 +1,22 @@ + + + + ${ant.file.y} + + + diff --git a/src/tests/antunit/taskdefs/importtests/z.xml b/src/tests/antunit/taskdefs/importtests/z.xml new file mode 100644 index 000000000..607dee7e9 --- /dev/null +++ b/src/tests/antunit/taskdefs/importtests/z.xml @@ -0,0 +1,21 @@ + + + + ${ant.file.z} + + diff --git a/src/tests/antunit/taskdefs/include-test.xml b/src/tests/antunit/taskdefs/include-test.xml index 74da94e73..7e1a45231 100644 --- a/src/tests/antunit/taskdefs/include-test.xml +++ b/src/tests/antunit/taskdefs/include-test.xml @@ -18,9 +18,9 @@ - - - + + + @@ -50,4 +50,9 @@ + + + + +