From 6aba7c5074cad7e7a8e2dfb8cf2fd5e9a4b9f468 Mon Sep 17 00:00:00 2001 From: Peter Reilly Date: Mon, 22 Dec 2003 09:46:23 +0000 Subject: [PATCH] Macrodef can only see lower case attribute names due to its use of DynamicConfigurator. Fix the doc and the code to at least make this consistent. PR: 25687 Obtained from: Geoffrey Wiseman git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@275830 13f79535-47bb-0310-9956-ffa450edef68 --- docs/manual/CoreTasks/macrodef.html | 6 +++++- src/etc/testcases/taskdefs/macrodef.xml | 11 +++++++++++ src/main/org/apache/tools/ant/taskdefs/MacroDef.java | 3 ++- .../org/apache/tools/ant/taskdefs/MacroInstance.java | 3 ++- .../org/apache/tools/ant/taskdefs/MacroDefTest.java | 6 ++++++ 5 files changed, 26 insertions(+), 3 deletions(-) diff --git a/docs/manual/CoreTasks/macrodef.html b/docs/manual/CoreTasks/macrodef.html index efce64230..480527ce6 100644 --- a/docs/manual/CoreTasks/macrodef.html +++ b/docs/manual/CoreTasks/macrodef.html @@ -59,7 +59,11 @@ AT this location"). The escape sequence @@{x} is used to allow @{x} to be placed in the text without substitution of x. - This corresponds to the $${x} escape sequence for properties + This corresponds to the $${x} escape sequence for properties. +

+

+ The case of the attribute is ignored, so @{myAttribute} is treated the + same as @{MyAttribute}.

Parameters

diff --git a/src/etc/testcases/taskdefs/macrodef.xml b/src/etc/testcases/taskdefs/macrodef.xml index 67e4024f3..b9fca2666 100644 --- a/src/etc/testcases/taskdefs/macrodef.xml +++ b/src/etc/testcases/taskdefs/macrodef.xml @@ -75,4 +75,15 @@ + + + + + + @{myattribute} is @{MYATTRIBUTE} + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java index 0cada1721..e9dee157b 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java @@ -57,6 +57,7 @@ package org.apache.tools.ant.taskdefs; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Locale; import java.util.HashMap; import org.apache.tools.ant.AntTypeDefinition; @@ -293,7 +294,7 @@ public class MacroDef extends AntlibDefinition { throw new BuildException( "Illegal name [" + name + "] for attribute"); } - this.name = name; + this.name = name.toLowerCase(Locale.US); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java index 4fff6dd47..639bb5d13 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java @@ -57,6 +57,7 @@ package org.apache.tools.ant.taskdefs; import java.util.ArrayList; import java.util.List; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.HashSet; @@ -200,7 +201,7 @@ public class MacroInstance extends Task implements DynamicConfigurator { case STATE_EXPECT_NAME: if (ch == '}') { state = STATE_NORMAL; - String name = macroName.toString(); + String name = macroName.toString().toLowerCase(Locale.US); String value = (String) macroMapping.get(name); if (value == null) { ret.append("@{" + name + "}"); diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java index 1556134e4..73b4a1c44 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java @@ -103,5 +103,11 @@ public class MacroDefTest extends BuildFileTest { "double", "@{prop} is 'property', value of ${property} is 'A property value'"); } + + public void testIgnoreCase() { + expectLog( + "ignorecase", + "a is ab is b"); + } }