You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by bo...@apache.org on 2005/11/15 09:30:50 UTC
svn commit: r344333 - in /ant/core/trunk:
docs/manual/CoreTasks/xmlproperty.html
src/etc/testcases/taskdefs/xmlproperty.xml
src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
Author: bodewig
Date: Tue Nov 15 00:30:40 2005
New Revision: 344333
URL: http://svn.apache.org/viewcvs?rev=344333&view=rev
Log:
add resource support to xmlproperty
Modified:
ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html
ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
Modified: ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html
URL: http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html?rev=344333&r1=344332&r2=344333&view=diff
==============================================================================
--- ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html (original)
+++ ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html Tue Nov 15 00:30:40 2005
@@ -85,7 +85,7 @@
<tr>
<td valign="top">file</td>
<td valign="top">The XML file to parse.</td>
- <td valign="top" align="center">Yes</td>
+ <td valign="top" align="center">Yes, or a nested resource collection.</td>
</tr>
<tr>
<td valign="top">prefix</td>
@@ -136,6 +136,11 @@
<h4>xmlcatalog</h4>
<p>The <a href="../CoreTypes/xmlcatalog.html"><tt><xmlcatalog></tt></a>
element is used to perform entity resolution.</p>
+
+<h4>any <a href="../CoreTypes/resources.html">resource</a> or single element
+resource collection</h4>
+
+<p>The specified resource will be used as input.</p>
<a name="examples">
<h3>Examples</h3>
Modified: ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml?rev=344333&r1=344332&r2=344333&view=diff
==============================================================================
--- ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml (original)
+++ ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml Tue Nov 15 00:30:40 2005
@@ -8,6 +8,13 @@
<xmlproperty file="xmlproperty_withdtd.xml"/>
</target>
+ <target name="testResource">
+ <loadfile srcfile="xmlproperty_data.xml" property="prop"/>
+ <xmlproperty>
+ <string value="${prop}"/>
+ </xmlproperty>
+ </target>
+
<target name="testneedscat">
<xmlproperty file="xmlproperty_needscat.xml">
<xmlcatalog>
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java?rev=344333&r1=344332&r2=344333&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java Tue Nov 15 00:30:40 2005
@@ -26,7 +26,10 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.types.Path;
+import org.apache.tools.ant.types.Resource;
+import org.apache.tools.ant.types.ResourceCollection;
import org.apache.tools.ant.types.XMLCatalog;
+import org.apache.tools.ant.types.resources.FileResource;
import org.apache.tools.ant.util.FileUtils;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
@@ -171,7 +174,7 @@
public class XmlProperty extends org.apache.tools.ant.Task {
- private File src;
+ private Resource src;
private String prefix = "";
private boolean keepRoot = true;
private boolean validate = false;
@@ -226,22 +229,29 @@
public void execute()
throws BuildException {
- if (getFile() == null) {
- String msg = "XmlProperty task requires a file attribute";
+ Resource r = getResource();
+
+ if (r == null) {
+ String msg = "XmlProperty task requires a source resource";
throw new BuildException(msg);
}
try {
- log("Loading " + src.getAbsolutePath(), Project.MSG_VERBOSE);
+ log("Loading " + src, Project.MSG_VERBOSE);
- if (src.exists()) {
+ if (r.isExists()) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setValidating(validate);
factory.setNamespaceAware(false);
DocumentBuilder builder = factory.newDocumentBuilder();
builder.setEntityResolver(getEntityResolver());
- Document document = builder.parse(src);
+ Document document = null;
+ if (src instanceof FileResource) {
+ document = builder.parse(((FileResource) src).getFile());
+ } else {
+ document = builder.parse(src.getInputStream());
+ }
Element topElement = document.getDocumentElement();
// Keep a hashtable of attributes added by this task.
@@ -261,7 +271,7 @@
}
} else {
- log("Unable to find property file: " + src.getAbsolutePath(),
+ log("Unable to find property resource: " + r,
Project.MSG_VERBOSE);
}
@@ -547,10 +557,37 @@
* @param src the file to parse
*/
public void setFile(File src) {
+ setSrcResource(new FileResource(src));
+ }
+
+ /**
+ * The resource to pack; required.
+ * @param src resource to expand
+ */
+ public void setSrcResource(Resource src) {
+ if (src.isDirectory()) {
+ throw new BuildException("the source can't be a directory");
+ }
+ if (src instanceof FileResource && !supportsNonFileResources()) {
+ throw new BuildException("Only FileSystem resources are"
+ + " supported.");
+ }
this.src = src;
}
/**
+ * Set the source resource.
+ * @param a the resource to pack as a single element Resource collection.
+ */
+ public void addConfigured(ResourceCollection a) {
+ if (a.size() != 1) {
+ throw new BuildException("only single argument resource collections"
+ + " are supported as archives");
+ }
+ setSrcResource((Resource) a.iterator().next());
+ }
+
+ /**
* the prefix to prepend to each property
* @param prefix the prefix to prepend to each property
*/
@@ -626,7 +663,25 @@
* @return the file attribute.
*/
protected File getFile () {
- return this.src;
+ if (src instanceof FileResource) {
+ return ((FileResource) src).getFile();
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * @return the resource.
+ */
+ protected Resource getResource() {
+ // delegate this way around to support subclasses that
+ // overwrite getFile
+ File f = getFile();
+ if (f != null) {
+ return new FileResource(f);
+ } else {
+ return src;
+ }
}
/**
@@ -689,4 +744,18 @@
return FILE_UTILS.resolveFile(rootDirectory, fileName);
}
+ /**
+ * Whether this task can deal with non-file resources.
+ *
+ * <p>This implementation returns true only if this task is
+ * <gzip>. Any subclass of this class that also wants to
+ * support non-file resources needs to override this method. We
+ * need to do so for backwards compatibility reasons since we
+ * can't expect subclasses to support resources.</p>
+ *
+ * @since Ant 1.7
+ */
+ protected boolean supportsNonFileResources() {
+ return getClass().equals(XmlProperty.class);
+ }
}
Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java?rev=344333&r1=344332&r2=344333&view=diff
==============================================================================
--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java (original)
+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java Tue Nov 15 00:30:40 2005
@@ -44,8 +44,16 @@
configureProject("src/etc/testcases/taskdefs/xmlproperty.xml");
}
- public void testProperties() {
- executeTarget("test");
+ public void testFile() {
+ testProperties("test");
+ }
+
+ public void testResource() {
+ testProperties("testResource");
+ }
+
+ private void testProperties(String target) {
+ executeTarget(target);
assertEquals("true", getProject().getProperty("root-tag(myattr)"));
assertEquals("Text", getProject().getProperty("root-tag.inner-tag"));
assertEquals("val",
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: svn commit: r344333 - in /ant/core/trunk: docs/manual/CoreTasks/xmlproperty.html src/etc/testcases/taskdefs/xmlproperty.xml src/main/org/apache/tools/ant/taskdefs/XmlProperty.java src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
Posted by Matt Benson <gu...@yahoo.com>.
--- Steve Loughran <st...@apache.org> wrote:
> Antoine Levy-Lambert wrote:
> > Dale Anson wrote:
> >
> >
> >>Thanks! How close is 1.7 to release?
> >>
> >
> > Hello Dale,
> >
> > I don't know. I would not be surprised if we
> release 1.7 only in 6
> > months. But this is just me.
> >
> > Maybe we could produce an alpha night build ?
>
>
> I think we should stick out an alpha as a sign of
> progress; it will
> generate bugreps and things, but that is good.
+1. Is this a "Release Plan" vote?
-Matt
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> dev-unsubscribe@ant.apache.org
> For additional commands, e-mail:
> dev-help@ant.apache.org
>
>
__________________________________
Yahoo! FareChase: Search multiple travel sites in one click.
http://farechase.yahoo.com
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: svn commit: r344333 - in /ant/core/trunk: docs/manual/CoreTasks/xmlproperty.html
src/etc/testcases/taskdefs/xmlproperty.xml src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
Posted by Steve Loughran <st...@apache.org>.
Antoine Levy-Lambert wrote:
> Dale Anson wrote:
>
>
>>Thanks! How close is 1.7 to release?
>>
>
> Hello Dale,
>
> I don't know. I would not be surprised if we release 1.7 only in 6
> months. But this is just me.
>
> Maybe we could produce an alpha night build ?
I think we should stick out an alpha as a sign of progress; it will
generate bugreps and things, but that is good.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: svn commit: r344333 - in /ant/core/trunk: docs/manual/CoreTasks/xmlproperty.html
src/etc/testcases/taskdefs/xmlproperty.xml src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
Posted by Antoine Levy-Lambert <an...@gmx.de>.
Dale Anson wrote:
> Thanks! How close is 1.7 to release?
>
Hello Dale,
I don't know. I would not be surprised if we release 1.7 only in 6
months. But this is just me.
Maybe we could produce an alpha night build ?
Cheers,
Antoine
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org
Re: svn commit: r344333 - in /ant/core/trunk: docs/manual/CoreTasks/xmlproperty.html
src/etc/testcases/taskdefs/xmlproperty.xml src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
Posted by Dale Anson <da...@grafidog.com>.
Thanks! How close is 1.7 to release?
bodewig@apache.org wrote:
>Author: bodewig
>Date: Tue Nov 15 00:30:40 2005
>New Revision: 344333
>
>URL: http://svn.apache.org/viewcvs?rev=344333&view=rev
>Log:
>add resource support to xmlproperty
>
>Modified:
> ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html
> ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml
> ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
> ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
>
>Modified: ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html
>URL: http://svn.apache.org/viewcvs/ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html?rev=344333&r1=344332&r2=344333&view=diff
>==============================================================================
>--- ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html (original)
>+++ ant/core/trunk/docs/manual/CoreTasks/xmlproperty.html Tue Nov 15 00:30:40 2005
>@@ -85,7 +85,7 @@
> <tr>
> <td valign="top">file</td>
> <td valign="top">The XML file to parse.</td>
>- <td valign="top" align="center">Yes</td>
>+ <td valign="top" align="center">Yes, or a nested resource collection.</td>
> </tr>
> <tr>
> <td valign="top">prefix</td>
>@@ -136,6 +136,11 @@
> <h4>xmlcatalog</h4>
> <p>The <a href="../CoreTypes/xmlcatalog.html"><tt><xmlcatalog></tt></a>
> element is used to perform entity resolution.</p>
>+
>+<h4>any <a href="../CoreTypes/resources.html">resource</a> or single element
>+resource collection</h4>
>+
>+<p>The specified resource will be used as input.</p>
>
> <a name="examples">
> <h3>Examples</h3>
>
>Modified: ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml
>URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml?rev=344333&r1=344332&r2=344333&view=diff
>==============================================================================
>--- ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml (original)
>+++ ant/core/trunk/src/etc/testcases/taskdefs/xmlproperty.xml Tue Nov 15 00:30:40 2005
>@@ -8,6 +8,13 @@
> <xmlproperty file="xmlproperty_withdtd.xml"/>
> </target>
>
>+ <target name="testResource">
>+ <loadfile srcfile="xmlproperty_data.xml" property="prop"/>
>+ <xmlproperty>
>+ <string value="${prop}"/>
>+ </xmlproperty>
>+ </target>
>+
> <target name="testneedscat">
> <xmlproperty file="xmlproperty_needscat.xml">
> <xmlcatalog>
>
>Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java
>URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java?rev=344333&r1=344332&r2=344333&view=diff
>==============================================================================
>--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java (original)
>+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java Tue Nov 15 00:30:40 2005
>@@ -26,7 +26,10 @@
> import org.apache.tools.ant.BuildException;
> import org.apache.tools.ant.Project;
> import org.apache.tools.ant.types.Path;
>+import org.apache.tools.ant.types.Resource;
>+import org.apache.tools.ant.types.ResourceCollection;
> import org.apache.tools.ant.types.XMLCatalog;
>+import org.apache.tools.ant.types.resources.FileResource;
> import org.apache.tools.ant.util.FileUtils;
> import org.w3c.dom.Document;
> import org.w3c.dom.Element;
>@@ -171,7 +174,7 @@
>
> public class XmlProperty extends org.apache.tools.ant.Task {
>
>- private File src;
>+ private Resource src;
> private String prefix = "";
> private boolean keepRoot = true;
> private boolean validate = false;
>@@ -226,22 +229,29 @@
> public void execute()
> throws BuildException {
>
>- if (getFile() == null) {
>- String msg = "XmlProperty task requires a file attribute";
>+ Resource r = getResource();
>+
>+ if (r == null) {
>+ String msg = "XmlProperty task requires a source resource";
> throw new BuildException(msg);
> }
>
> try {
>- log("Loading " + src.getAbsolutePath(), Project.MSG_VERBOSE);
>+ log("Loading " + src, Project.MSG_VERBOSE);
>
>- if (src.exists()) {
>+ if (r.isExists()) {
>
> DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
> factory.setValidating(validate);
> factory.setNamespaceAware(false);
> DocumentBuilder builder = factory.newDocumentBuilder();
> builder.setEntityResolver(getEntityResolver());
>- Document document = builder.parse(src);
>+ Document document = null;
>+ if (src instanceof FileResource) {
>+ document = builder.parse(((FileResource) src).getFile());
>+ } else {
>+ document = builder.parse(src.getInputStream());
>+ }
> Element topElement = document.getDocumentElement();
>
> // Keep a hashtable of attributes added by this task.
>@@ -261,7 +271,7 @@
> }
>
> } else {
>- log("Unable to find property file: " + src.getAbsolutePath(),
>+ log("Unable to find property resource: " + r,
> Project.MSG_VERBOSE);
> }
>
>@@ -547,10 +557,37 @@
> * @param src the file to parse
> */
> public void setFile(File src) {
>+ setSrcResource(new FileResource(src));
>+ }
>+
>+ /**
>+ * The resource to pack; required.
>+ * @param src resource to expand
>+ */
>+ public void setSrcResource(Resource src) {
>+ if (src.isDirectory()) {
>+ throw new BuildException("the source can't be a directory");
>+ }
>+ if (src instanceof FileResource && !supportsNonFileResources()) {
>+ throw new BuildException("Only FileSystem resources are"
>+ + " supported.");
>+ }
> this.src = src;
> }
>
> /**
>+ * Set the source resource.
>+ * @param a the resource to pack as a single element Resource collection.
>+ */
>+ public void addConfigured(ResourceCollection a) {
>+ if (a.size() != 1) {
>+ throw new BuildException("only single argument resource collections"
>+ + " are supported as archives");
>+ }
>+ setSrcResource((Resource) a.iterator().next());
>+ }
>+
>+ /**
> * the prefix to prepend to each property
> * @param prefix the prefix to prepend to each property
> */
>@@ -626,7 +663,25 @@
> * @return the file attribute.
> */
> protected File getFile () {
>- return this.src;
>+ if (src instanceof FileResource) {
>+ return ((FileResource) src).getFile();
>+ } else {
>+ return null;
>+ }
>+ }
>+
>+ /**
>+ * @return the resource.
>+ */
>+ protected Resource getResource() {
>+ // delegate this way around to support subclasses that
>+ // overwrite getFile
>+ File f = getFile();
>+ if (f != null) {
>+ return new FileResource(f);
>+ } else {
>+ return src;
>+ }
> }
>
> /**
>@@ -689,4 +744,18 @@
> return FILE_UTILS.resolveFile(rootDirectory, fileName);
> }
>
>+ /**
>+ * Whether this task can deal with non-file resources.
>+ *
>+ * <p>This implementation returns true only if this task is
>+ * <gzip>. Any subclass of this class that also wants to
>+ * support non-file resources needs to override this method. We
>+ * need to do so for backwards compatibility reasons since we
>+ * can't expect subclasses to support resources.</p>
>+ *
>+ * @since Ant 1.7
>+ */
>+ protected boolean supportsNonFileResources() {
>+ return getClass().equals(XmlProperty.class);
>+ }
> }
>
>Modified: ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java
>URL: http://svn.apache.org/viewcvs/ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java?rev=344333&r1=344332&r2=344333&view=diff
>==============================================================================
>--- ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java (original)
>+++ ant/core/trunk/src/testcases/org/apache/tools/ant/taskdefs/XmlPropertyTest.java Tue Nov 15 00:30:40 2005
>@@ -44,8 +44,16 @@
> configureProject("src/etc/testcases/taskdefs/xmlproperty.xml");
> }
>
>- public void testProperties() {
>- executeTarget("test");
>+ public void testFile() {
>+ testProperties("test");
>+ }
>+
>+ public void testResource() {
>+ testProperties("testResource");
>+ }
>+
>+ private void testProperties(String target) {
>+ executeTarget(target);
> assertEquals("true", getProject().getProperty("root-tag(myattr)"));
> assertEquals("Text", getProject().getProperty("root-tag.inner-tag"));
> assertEquals("val",
>
>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
>For additional commands, e-mail: dev-help@ant.apache.org
>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org