git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278356 13f79535-47bb-0310-9956-ffa450edef68master
@@ -110,9 +110,6 @@ Fixed bugs: | |||
* <xmlvalidate> and <schemavalidate> create a new parser for every file in a | |||
fileset, and so validate multiple files properly. Bugzilla Report 32791 | |||
* New mapper, <scriptmapper>, supports scripted mapping of source files/strings to | |||
destination strings. | |||
Other changes: | |||
-------------- | |||
@@ -228,6 +225,11 @@ Other changes: | |||
* Added initial support for Resource Collections, including the | |||
resourcecount task. | |||
* New mapper, <scriptmapper>, supports scripted mapping of source files/strings | |||
to destination strings. | |||
* Add the echoxml task. | |||
Changes from Ant 1.6.3 to Ant 1.6.4 | |||
=================================== | |||
@@ -0,0 +1,51 @@ | |||
<html> | |||
<head> | |||
<meta http-equiv="Content-Language" content="en-us"> | |||
<link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> | |||
<title>EchoXML Task</title> | |||
</head> | |||
<body> | |||
<h2>EchoXML</h2> | |||
<h3>Description</h3> | |||
<p>Echo nested XML to the console or a file. <b>Since Ant 1.7</b></p> | |||
<h3>Parameters</h3> | |||
<table border="1" cellpadding="2" cellspacing="0"> | |||
<tr> | |||
<td valign="top"><b>Attribute</b></td> | |||
<td valign="top"><b>Description</b></td> | |||
<td align="center" valign="top"><b>Required</b></td> | |||
</tr> | |||
<tr> | |||
<td valign="top">file</td> | |||
<td valign="top">The file to receive the XML. If omitted nested | |||
XML will be echoed to the log.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
<tr> | |||
<td valign="top">append</td> | |||
<td valign="top">Whether to append <code>file</code>, if specified.</td> | |||
<td valign="top" align="center">No</td> | |||
</tr> | |||
</table> | |||
<h3>Parameters specified as nested elements</h3> | |||
Nested XML content is required. | |||
<h3>Examples</h3> | |||
<pre><echoxml file="subbuild.xml"> | |||
<project default="foo"> | |||
<target name="foo"> | |||
<echo>foo</echo> | |||
</target> | |||
</project> | |||
</echoxml> | |||
</pre> | |||
<p>Creates an Ant buildfile, <code>subbuild.xml</code>.</p> | |||
<hr> | |||
<p align="center">Copyright © 2005 The Apache Software Foundation. | |||
All rights Reserved.</p> | |||
</body> | |||
</html> | |||
@@ -46,6 +46,7 @@ | |||
<a href="CoreTasks/dirname.html">Dirname</a><br> | |||
<a href="CoreTasks/ear.html">Ear</a><br> | |||
<a href="CoreTasks/echo.html">Echo</a><br> | |||
<a href="CoreTasks/echoxml.html">EchoXML</a><br> | |||
<a href="CoreTasks/exec.html">Exec</a><br> | |||
<a href="CoreTasks/fail.html">Fail</a><br> | |||
<a href="CoreTasks/filter.html">Filter</a><br> | |||
@@ -0,0 +1,29 @@ | |||
<project> | |||
<property name="file" location="echoed.xml" /> | |||
<target name="init"> | |||
<echoxml file="${file}"> | |||
<project> | |||
<property name="foo" value="bar" /> | |||
<fail message="$$$${foo}=$${foo}"> | |||
<condition> | |||
<istrue value="${mustfail}" /> | |||
</condition> | |||
</fail> | |||
</project> | |||
</echoxml> | |||
</target> | |||
<target name="tearDown"> | |||
<delete file="${file}" /> | |||
</target> | |||
<target name="testPass" depends="init"> | |||
<ant antfile="${file}" /> | |||
</target> | |||
<target name="testFail" depends="init"> | |||
<ant antfile="${file}"> | |||
<property name="mustfail" value="true" /> | |||
</ant> | |||
</target> | |||
<target name="testEmpty"> | |||
<echoxml /> | |||
</target> | |||
</project> |
@@ -0,0 +1,81 @@ | |||
/* | |||
* Copyright 2005 The Apache Software Foundation | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); | |||
* you may not use this file except in compliance with the License. | |||
* You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
* | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import java.io.File; | |||
import java.io.IOException; | |||
import java.io.OutputStream; | |||
import java.io.FileOutputStream; | |||
import java.io.FileNotFoundException; | |||
import org.apache.tools.ant.Project; | |||
import org.apache.tools.ant.BuildException; | |||
import org.apache.tools.ant.util.XMLFragment; | |||
import org.apache.tools.ant.util.DOMElementWriter; | |||
import org.w3c.dom.Node; | |||
import org.w3c.dom.Element; | |||
/** | |||
* Echo XML. | |||
* @since Ant 1.7 | |||
*/ | |||
public class EchoXML extends XMLFragment { | |||
private static final DOMElementWriter writer = new DOMElementWriter(); | |||
private File file; | |||
private boolean append; | |||
/** | |||
* Set the output file. | |||
* @param f the output file. | |||
*/ | |||
public void setFile(File f) { | |||
file = f; | |||
} | |||
/** | |||
* Set whether to append the output file. | |||
* @param b boolean append flag. | |||
*/ | |||
public void setAppend(boolean b) { | |||
append = b; | |||
} | |||
/** | |||
* Execute the task. | |||
*/ | |||
public void execute() { | |||
try { | |||
OutputStream os = null; | |||
if (file != null) { | |||
os = new FileOutputStream(file, append); | |||
} else { | |||
os = new LogOutputStream(this, Project.MSG_INFO); | |||
} | |||
Node n = getFragment().getFirstChild(); | |||
if (n == null) { | |||
throw new BuildException("No nested XML specified"); | |||
} | |||
writer.write((Element) n, os); | |||
} catch (Exception e) { | |||
throw new BuildException(e); | |||
} | |||
} | |||
} |
@@ -208,6 +208,7 @@ apt=org.apache.tools.ant.taskdefs.Apt | |||
schemavalidate=org.apache.tools.ant.taskdefs.optional.SchemaValidate | |||
verifyjar=org.apache.tools.ant.taskdefs.VerifyJar | |||
resourcecount=org.apache.tools.ant.taskdefs.ResourceCount | |||
echoxml=org.apache.tools.ant.taskdefs.EchoXML | |||
# deprecated ant tasks (kept for back compatibility) | |||
starteam=org.apache.tools.ant.taskdefs.optional.scm.AntStarTeamCheckOut | |||
@@ -0,0 +1,48 @@ | |||
/* | |||
* Copyright 2005 The Apache Software Foundation | |||
* | |||
* Licensed under the Apache License, Version 2.0 (the "License"); | |||
* you may not use this file except in compliance with the License. | |||
* You may obtain a copy of the License at | |||
* | |||
* http://www.apache.org/licenses/LICENSE-2.0 | |||
* | |||
* Unless required by applicable law or agreed to in writing, software | |||
* distributed under the License is distributed on an "AS IS" BASIS, | |||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |||
* See the License for the specific language governing permissions and | |||
* limitations under the License. | |||
* | |||
*/ | |||
package org.apache.tools.ant.taskdefs; | |||
import org.apache.tools.ant.BuildFileTest; | |||
public class EchoXMLTest extends BuildFileTest { | |||
public EchoXMLTest(String name) { | |||
super(name); | |||
} | |||
public void setUp() { | |||
configureProject("src/etc/testcases/taskdefs/echoxml.xml"); | |||
} | |||
public void tearDown() { | |||
executeTarget("tearDown"); | |||
} | |||
public void testPass() { | |||
executeTarget("testPass"); | |||
} | |||
public void testFail() { | |||
expectBuildExceptionContaining("testFail", "must fail", "${foo}=bar"); | |||
} | |||
public void testEmpty() { | |||
expectBuildExceptionContaining("testEmpty", "must fail", "No nested XML specified"); | |||
} | |||
} |