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");
+ }
}