Browse Source

add text for macro element. Bugzilla report 36803

git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@439869 13f79535-47bb-0310-9956-ffa450edef68
master
Peter Reilly 19 years ago
parent
commit
e56743fb3b
4 changed files with 36 additions and 8 deletions
  1. +1
    -0
      WHATSNEW
  2. +14
    -0
      src/etc/testcases/taskdefs/macrodef.xml
  3. +17
    -8
      src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
  4. +4
    -0
      src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java

+ 1
- 0
WHATSNEW View File

@@ -13,6 +13,7 @@ Fixed bugs:
* <zip filesonly="true"> included empty directories. Bugzilla report 40258.
* Invalid hash code of Target causes XmlLogger to fail.
Bugzilla report 40207.
* Macro element did not include top level Text. Bugzilla report 36803.

Other changes:
--------------


+ 14
- 0
src/etc/testcases/taskdefs/macrodef.xml View File

@@ -256,4 +256,18 @@
</macrodef>
<nobacktrace/>
</target>

<target name="top-level-text">
<macrodef name="top">
<element name="em"/>
<sequential>
<echo><em/></echo>
</sequential>
</macrodef>
<top>
<em>
Hello World
</em>
</top>
</target>
</project>

+ 17
- 8
src/main/org/apache/tools/ant/taskdefs/MacroInstance.java View File

@@ -133,7 +133,7 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
if (presentElements.get(name) != null) {
throw new BuildException("Element " + name + " already present");
}
presentElements.put(name, ue.getChildren());
presentElements.put(name, ue);
}
}

@@ -297,8 +297,9 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
ret.addChild(child);
}
} else {
List list = (List) presentElements.get(tag);
if (list == null) {
UnknownElement presentElement =
(UnknownElement) presentElements.get(tag);
if (presentElement == null) {
if (!templateElement.isOptional()) {
throw new BuildException(
"Required nested element "
@@ -306,11 +307,19 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
}
continue;
}
for (Iterator i = list.iterator();
i.hasNext();) {
UnknownElement child = copy((UnknownElement) i.next());
rc.addChild(child.getWrapper());
ret.addChild(child);
String presentText =
presentElement.getWrapper().getText().toString();
if (!"".equals(presentText)) {
rc.addText(macroSubs(presentText, localAttributes));
}
List list = presentElement.getChildren();
if (list != null) {
for (Iterator i = list.iterator();
i.hasNext();) {
UnknownElement child = copy((UnknownElement) i.next());
rc.addChild(child.getWrapper());
ret.addChild(child);
}
}
}
}


+ 4
- 0
src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java View File

@@ -150,5 +150,9 @@ public class MacroDefTest extends BuildFileTest {
"Checking if a back trace is created",
"following error occurred");
}

public void testTopLevelText() {
expectLogContaining("top-level-text", "Hello World");
}
}


Loading…
Cancel
Save