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. * <zip filesonly="true"> included empty directories. Bugzilla report 40258.
* Invalid hash code of Target causes XmlLogger to fail. * Invalid hash code of Target causes XmlLogger to fail.
Bugzilla report 40207. Bugzilla report 40207.
* Macro element did not include top level Text. Bugzilla report 36803.


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


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

@@ -256,4 +256,18 @@
</macrodef> </macrodef>
<nobacktrace/> <nobacktrace/>
</target> </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> </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) { if (presentElements.get(name) != null) {
throw new BuildException("Element " + name + " already present"); 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); ret.addChild(child);
} }
} else { } else {
List list = (List) presentElements.get(tag);
if (list == null) {
UnknownElement presentElement =
(UnknownElement) presentElements.get(tag);
if (presentElement == null) {
if (!templateElement.isOptional()) { if (!templateElement.isOptional()) {
throw new BuildException( throw new BuildException(
"Required nested element " "Required nested element "
@@ -306,11 +307,19 @@ public class MacroInstance extends Task implements DynamicAttribute, TaskContain
} }
continue; 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", "Checking if a back trace is created",
"following error occurred"); "following error occurred");
} }

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



Loading…
Cancel
Save