peterreilly 2004/01/22 08:40:13 Modified: src/main/org/apache/tools/ant/taskdefs Tag: ANT_16_BRANCH MacroDef.java MacroInstance.java docs/manual/CoreTasks Tag: ANT_16_BRANCH macrodef.html src/etc/testcases/taskdefs Tag: ANT_16_BRANCH macrodef.xml src/testcases/org/apache/tools/ant/taskdefs Tag: ANT_16_BRANCH MacroDefTest.java Log: sync with head Revision Changes Path No revision No revision 1.7.2.12 +41 -3 ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java Index: MacroDef.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroDef.java,v retrieving revision 1.7.2.11 retrieving revision 1.7.2.12 diff -u -r1.7.2.11 -r1.7.2.12 --- MacroDef.java 19 Jan 2004 12:11:49 -0000 1.7.2.11 +++ MacroDef.java 22 Jan 2004 16:40:12 -0000 1.7.2.12 @@ -81,6 +81,7 @@ private String name; private List attributes = new ArrayList(); private Map elements = new HashMap(); + private String textName = null; /** * Name of the definition @@ -91,6 +92,25 @@ } /** + * Name of the text attribute. + * @param textName the name of the attribute to use for the + * text content of the macro. + * @since ant 1.6.1 + */ + public void setTextName(String textName) { + this.textName = textName; + } + + /** + * @return the name of the text content attribute + * @since ant 1.6.1 + */ + + public String getTextName() { + return textName; + } + + /** * This is the sequential nested element of the macrodef. * * @return a sequential element to be configured. @@ -222,6 +242,11 @@ throw new BuildException( "the attribute nested element needed a \"name\" attribute"); } + if (attribute.getName().equals(textName)) { + throw new BuildException( + "the attribute name \"" + attribute.getName() + + "\" has already been used by the textname attribute"); + } for (int i = 0; i < attributes.size(); ++i) { if (((Attribute) attributes.get(i)).getName().equals( attribute.getName())) { @@ -324,14 +349,16 @@ /** * @param desc Description of the element. + * @since ant 1.6.1 */ public void setDescription(String desc) { description = desc; } /** - * @return the description of the element, or <code>null</code> if + * @return the description of the element, or <code>null</code> if * no description is available. + * @since ant 1.6.1 */ public String getDescription() { return description; @@ -383,7 +410,7 @@ public static class TemplateElement { private String name; private boolean optional = false; - private String description; + private String description; /** * The name of the element. @@ -424,14 +451,16 @@ /** * @param desc Description of the element. + * @since ant 1.6.1 */ public void setDescription(String desc) { description = desc; } /** - * @return the description of the element, or <code>null</code> if + * @return the description of the element, or <code>null</code> if * no description is available. + * @since ant 1.6.1 */ public String getDescription() { return description; @@ -489,6 +518,15 @@ } if (!name.equals(other.name)) { return false; + } + if (textName == null) { + if (other.textName != null) { + return false; + } + } else { + if (!textName.equals(other.textName)) { + return false; + } } if (getURI() == null || getURI().equals("") || getURI().equals(ProjectHelper.ANT_CORE_URI)) { 1.5.2.11 +13 -0 ant/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java Index: MacroInstance.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java,v retrieving revision 1.5.2.10 retrieving revision 1.5.2.11 diff -u -r1.5.2.10 -r1.5.2.11 --- MacroInstance.java 19 Jan 2004 12:11:49 -0000 1.5.2.10 +++ MacroInstance.java 22 Jan 2004 16:40:12 -0000 1.5.2.11 @@ -88,6 +88,7 @@ private Map nsElements = null; private Map presentElements = new HashMap(); private Hashtable localProperties = new Hashtable(); + private String text = ""; /** * Called from MacroDef.MyAntTypeDefinition#create() @@ -246,6 +247,14 @@ return ret.toString(); } + /** + * Set the text contents for the macro. + * @param text the text to be added to the macro. + */ + public void addText(String text) { + this.text = text; + } + private UnknownElement copy(UnknownElement ue) { UnknownElement ret = new UnknownElement(ue.getTag()); ret.setNamespace(ue.getNamespace()); @@ -331,6 +340,10 @@ if (copyKeys.contains("id")) { copyKeys.remove("id"); } + if (macroDef.getTextName() != null) { + localProperties.put(macroDef.getTextName(), text); + } + if (copyKeys.size() != 0) { throw new BuildException( "Unknown attribute" + (copyKeys.size() > 1 ? "s " : " ") No revision No revision 1.2.2.10 +27 -0 ant/docs/manual/CoreTasks/macrodef.html Index: macrodef.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTasks/macrodef.html,v retrieving revision 1.2.2.9 retrieving revision 1.2.2.10 diff -u -r1.2.2.9 -r1.2.2.10 --- macrodef.html 19 Jan 2004 12:11:49 -0000 1.2.2.9 +++ macrodef.html 22 Jan 2004 16:40:12 -0000 1.2.2.10 @@ -44,6 +44,16 @@ </td> <td valign="top" align="center">No</td> </tr> + <tr> + <td valign="top">textname</td> + <td valign="top"> + The textname attribute value becomes a macrodef + attribute that + gets set to the value of the text contents of the macro. + <em>since ant 1.6.1</em> + </td> + <td valign="top" align="center">No</td> + </tr> </table> <h3>Parameters specified as nested elements</h3> <h4>attribute</h4> @@ -89,6 +99,7 @@ <td valign="top">description</td> <td valign="top"> This contains a description of the attribute. + <em>since ant 1.6.1</em> </td> <td valign="top" align="center">No</td> </tr> @@ -128,6 +139,7 @@ <td valign="top"> This contains a description informing the user what the contents of the element are expected to be. + <em>since ant 1.6.1</em> </td> <td valign="top" align="center">No</td> </tr> @@ -197,6 +209,21 @@ <linker refid="linker-libs"/> </cc-elements> </call-cc> +</pre> + </blockquote> + <p> + The following shows the use of the <code>textname</code> attribute. + </p> + <blockquote> +<pre class="code"> +<macrodef name="echotest" textname="text"> + <sequential> + <echo>@{text}</echo> + </sequential> +</macrodef> +<echotest> + Hello world +</echotest> </pre> </blockquote> <hr> No revision No revision 1.2.2.6 +20 -0 ant/src/etc/testcases/taskdefs/macrodef.xml Index: macrodef.xml =================================================================== RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/macrodef.xml,v retrieving revision 1.2.2.5 retrieving revision 1.2.2.6 diff -u -r1.2.2.5 -r1.2.2.6 --- macrodef.xml 19 Jan 2004 12:11:49 -0000 1.2.2.5 +++ macrodef.xml 22 Jan 2004 16:40:12 -0000 1.2.2.6 @@ -101,4 +101,24 @@ </MYELEMENT> </ignore> </target> + + <target name="textname"> + <macrodef name="echotest" textname="text"> + <sequential> + <echo>@{text}</echo> + </sequential> + </macrodef> + <echotest> + Hello world + </echotest> + </target> + + <target name="duplicatetextname"> + <macrodef name="echotest" textname="text"> + <attribute name="text"/> + <sequential> + <echo>@{text}</echo> + </sequential> + </macrodef> + </target> </project> No revision No revision 1.2.2.6 +11 -0 ant/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java Index: MacroDefTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java,v retrieving revision 1.2.2.5 retrieving revision 1.2.2.6 diff -u -r1.2.2.5 -r1.2.2.6 --- MacroDefTest.java 19 Jan 2004 12:11:50 -0000 1.2.2.5 +++ MacroDefTest.java 22 Jan 2004 16:40:13 -0000 1.2.2.6 @@ -115,5 +115,16 @@ "ignore-element-case", "nested elementnested element"); } + + public void testTextName() { + expectLogContaining( + "textname", "Hello world"); + } + + public void testDuplicateTextName() { + expectBuildException( + "duplicatetextname", + "the attribute text has already been specified"); + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]