From a7bbb2a52d1dab664bee16d716d9db6540557917 Mon Sep 17 00:00:00 2001 From: Peter Reilly Date: Fri, 18 May 2007 18:23:51 +0000 Subject: [PATCH] bugzilla request: 42301 add default for text element in macrodef git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@539547 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 2 + .../apache/tools/ant/taskdefs/MacroDef.java | 37 ++++++++++++------- .../tools/ant/taskdefs/MacroInstance.java | 5 ++- src/tests/antunit/taskdefs/macrodef-test.xml | 20 ++++++++++ 4 files changed, 48 insertions(+), 16 deletions(-) create mode 100644 src/tests/antunit/taskdefs/macrodef-test.xml diff --git a/WHATSNEW b/WHATSNEW index f88245a2b..8f39103af 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -150,6 +150,8 @@ Other changes: * A new logger, BigProjectLogger, lists the project name with every target +* Default text added to macrodef. Bugzilla report 42301. + Changes from Ant 1.6.5 to Ant 1.7.0 =================================== diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java index 90246f3b2..8b1db97a2 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java @@ -431,6 +431,7 @@ public class MacroDef extends AntlibDefinition { private boolean optional; private boolean trim; private String description; + private String defaultString; /** * The name of the attribute. @@ -500,6 +501,20 @@ public class MacroDef extends AntlibDefinition { return description; } + /** + * @param defaultString default text for the string. + */ + public void setDefault(String defaultString) { + this.defaultString = defaultString; + } + + /** + * @return the default text if set, null otherwise. + */ + public String getDefault() { + return defaultString; + } + /** * equality method * @@ -514,20 +529,10 @@ public class MacroDef extends AntlibDefinition { return false; } Text other = (Text) obj; - if (name == null) { - if (other.name != null) { - return false; - } - } else if (!name.equals(other.name)) { - return false; - } - if (optional != other.optional) { - return false; - } - if (trim != other.trim) { - return false; - } - return true; + return safeCompare(name, other.name) + && optional == other.optional + && trim == other.trim + && safeCompare(defaultString, other.defaultString); } /** @@ -538,6 +543,10 @@ public class MacroDef extends AntlibDefinition { } } + private static boolean safeCompare(Object a, Object b) { + return a == null ? b == null : a.equals(b); + } + /** * A nested element for the MacroDef task. */ diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java index 63f8d2215..dbaaee466 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java @@ -361,11 +361,12 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain } if (macroDef.getText() != null) { if (text == null) { - if (!macroDef.getText().getOptional()) { + String defaultText = macroDef.getText().getDefault(); + if (!macroDef.getText().getOptional() && defaultText == null) { throw new BuildException( "required text missing"); } - text = ""; + text = defaultText == null ? "" : defaultText; } if (macroDef.getText().getTrim()) { text = text.trim(); diff --git a/src/tests/antunit/taskdefs/macrodef-test.xml b/src/tests/antunit/taskdefs/macrodef-test.xml new file mode 100644 index 000000000..82b603489 --- /dev/null +++ b/src/tests/antunit/taskdefs/macrodef-test.xml @@ -0,0 +1,20 @@ + + + + + + + + + @{log} + + + + + THIS IS NOT DEFAULT LOG + + + + +