should load-dom be a core thing?
--
dIon Gillard, Multitask Consulting
Work: http://www.multitask.com.au
Developers: http://adslgateway.multitask.com.au/developers
Peter Donald <peter@apache.org> wrote on 06/26/2002 12:27:46 PM:
> yea yea yea!
>
> On Wed, 26 Jun 2002 12:12, adammurdoch@apache.org wrote:
> > adammurdoch 2002/06/25 19:12:36
> >
> > Modified: antlib/src/java/org/apache/antlib/core
Resources.properties
> > Added: antlib/src/java/org/apache/antlib/core IncludeTask.java
> > LoadDOMTask.java
> > antlib/src/test/org/apache/antlib/core/test
> > IncludeTaskTestCase.java
LoadDOMTaskTestCase.java
> > include-log.ant include-props.ant include.ant
> > load-dom.ant test.xml
> > Log:
> > - Added <include> task, which loads and executes the contents of an
XML
> > file. Execution happens in the same scope as the <include> task.
> > - Added <load-dom> task, which loads the DOM of an XML file into a
> > property, where it can be slurped over using XPath.
> > - Added test cases.
> >
> > Revision Changes Path
> > 1.7 +6 -2
> >
jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/core/Resources.prope
> >rties
> >
> > Index: Resources.properties
> > ===================================================================
> > RCS file:
> >
/home/cvs/jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/core/Resou
> >rces.properties,v retrieving revision 1.6
> > retrieving revision 1.7
> > diff -u -r1.6 -r1.7
> > --- Resources.properties 6 Jun 2002 10:57:03 -0000 1.6
> > +++ Resources.properties 26 Jun 2002 02:12:36 -0000 1.7
> > @@ -33,5 +33,9 @@
> > load-resource.loading.notice=Loading properties from resource "{0}".
> > load-resource.missing-resource.notice=Unable to find resource "{0}".
> >
> > -for-each.no-propertry.error=No property name specified.
> > -for-each.no-list.error=No values specified.
> > \ No newline at end of file
> > +load-dom.no-file.error=No source file specified.
> > +load-dom.no-property.error=No property name specified.
> > +load-dom.load-file.error=Could not load file "{0}".
> > +
> > +include.no-file.error=No source file specified.
> > +include.load-file.error=Could not load file "{0}".
> > \ No newline at end of file
> >
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/core/IncludeTask.jav
> >a
> >
> > Index: IncludeTask.java
> > ===================================================================
> > /*
> > * Copyright (C) The Apache Software Foundation. All rights reserved.
> > *
> > * This software is published under the terms of the Apache Software
> > License * version 1.1, a copy of which has been included with this
> > distribution in * the LICENSE.txt file.
> > */
> > package org.apache.antlib.core;
> >
> > import java.io.File;
> > import org.apache.avalon.excalibur.i18n.ResourceManager;
> > import org.apache.avalon.excalibur.i18n.Resources;
> > import org.apache.myrmidon.api.TaskException;
> > import org.apache.myrmidon.api.metadata.ModelElement;
> > import org.apache.myrmidon.framework.AbstractContainerTask;
> > import org.apache.myrmidon.interfaces.builder.ModelBuilder;
> >
> > /**
> > * A task that loads and executes an XML fragment.
> > *
> > * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
> > * @version $Revision: 1.1 $ $Date: 2002/06/26 02:12:36 $
> > *
> > * @ant.task name="include"
> > */
> > public class IncludeTask
> > extends AbstractContainerTask
> > {
> > private static final Resources REZ =
> > ResourceManager.getPackageResources( IncludeTask.class );
> >
> > private File m_file;
> >
> > /**
> > * The file to load the XML fragment from.
> > * @param file
> > */
> > public void setFile( final File file )
> > {
> > m_file = file;
> > }
> >
> > /**
> > * Executes the task.
> > */
> > public void execute()
> > throws TaskException
> > {
> > if( m_file == null )
> > {
> > final String message = REZ.getString
( "include.no-file.error"
> > ); throw new TaskException( message );
> > }
> >
> > // Load the model
> > final ModelElement model;
> > try
> > {
> > final ModelBuilder builder = (ModelBuilder)getService(
> > ModelBuilder.class ); model = builder.build( m_file.getAbsolutePath()
);
> > }
> > catch( final Exception e )
> > {
> > final String message = REZ.getString(
> > "include.load-file.error", m_file ); throw new TaskException( message,
e );
> > }
> >
> > // Execute the children
> > executeTasks( model.getChildren() );
> > }
> > }
> >
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/java/org/apache/antlib/core/LoadDOMTask.jav
> >a
> >
> > Index: LoadDOMTask.java
> > ===================================================================
> > /*
> > * Copyright (C) The Apache Software Foundation. All rights reserved.
> > *
> > * This software is published under the terms of the Apache Software
> > License * version 1.1, a copy of which has been included with this
> > distribution in * the LICENSE.txt file.
> > */
> > package org.apache.antlib.core;
> >
> > import java.io.File;
> > import javax.xml.parsers.DocumentBuilderFactory;
> > import org.apache.myrmidon.api.AbstractTask;
> > import org.apache.myrmidon.api.TaskException;
> > import org.apache.avalon.excalibur.i18n.ResourceManager;
> > import org.apache.avalon.excalibur.i18n.Resources;
> > import org.w3c.dom.Document;
> >
> > /**
> > * Loads an XML DOM from a file, and sets it as a property.
> > *
> > * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
> > * @version $Revision: 1.1 $ $Date: 2002/06/26 02:12:36 $
> > *
> > * @ant.task name="load-dom"
> > *
> > * @todo - Convert this task into a data-type, instead.
> > */
> > public class LoadDOMTask
> > extends AbstractTask
> > {
> > private static final Resources REZ =
> > ResourceManager.getPackageResources( LoadDOMTask.class );
> >
> > private File m_file;
> > private String m_property;
> >
> > /**
> > * The file to load the XML DOM from.
> > */
> > public void setFile( final File file )
> > {
> > m_file = file;
> > }
> >
> > /**
> > * The name of the property to set.
> > */
> > public void setProperty( final String property )
> > {
> > m_property = property;
> > }
> >
> > /**
> > * Executes this task.
> > */
> > public void execute()
> > throws TaskException
> > {
> > if( m_file == null )
> > {
> > final String message = REZ.getString(
> > "load-dom.no-file.error" ); throw new TaskException( message );
> > }
> > if( m_property == null )
> > {
> > final String message = REZ.getString(
> > "load-dom.no-property.error" ); throw new TaskException( message );
> > }
> >
> > try
> > {
> > final Document dom =
> > DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( m_file
);
> > getContext().setProperty( m_property, dom.getDocumentElement() ); }
> > catch( final Exception e )
> > {
> > final String message = REZ.getString(
> > "load-dom.load-file.error", m_file ); throw new TaskException( message,
e
> > );
> > }
> > }
> > }
> >
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/IncludeTas
> >kTestCase.java
> >
> > Index: IncludeTaskTestCase.java
> > ===================================================================
> > /*
> > * Copyright (C) The Apache Software Foundation. All rights reserved.
> > *
> > * This software is published under the terms of the Apache Software
> > License * version 1.1, a copy of which has been included with this
> > distribution in * the LICENSE.txt file.
> > */
> > package org.apache.antlib.core.test;
> >
> > import org.apache.antlib.AbstractProjectTestCase;
> > import java.io.File;
> >
> > /**
> > * Test cases for the <include> task.
> > *
> > * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
> > * @version $Revision: 1.1 $ $Date: 2002/06/26 02:12:36 $
> > */
> > public class IncludeTaskTestCase
> > extends AbstractProjectTestCase
> > {
> > public IncludeTaskTestCase( final String name )
> > {
> > super( name );
> > }
> >
> > public void testExecution() throws Exception
> > {
> > final File projectFile = getTestResource( "include.ant" );
> > executeTarget( projectFile, "include-log" );
> > executeTarget( projectFile, "include-use-props" );
> > executeTarget( projectFile, "no-file" );
> > executeTarget( projectFile, "unknown-file" );
> > }
> > }
> >
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/LoadDOMTas
> >kTestCase.java
> >
> > Index: LoadDOMTaskTestCase.java
> > ===================================================================
> > /*
> > * Copyright (C) The Apache Software Foundation. All rights reserved.
> > *
> > * This software is published under the terms of the Apache Software
> > License * version 1.1, a copy of which has been included with this
> > distribution in * the LICENSE.txt file.
> > */
> > package org.apache.antlib.core.test;
> >
> > import org.apache.antlib.AbstractProjectTestCase;
> > import java.io.File;
> >
> > /**
> > * Test cases for the <load-dom> task.
> > *
> > * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
> > * @version $Revision: 1.1 $ $Date: 2002/06/26 02:12:36 $
> > */
> > public class LoadDOMTaskTestCase
> > extends AbstractProjectTestCase
> > {
> > public LoadDOMTaskTestCase( final String name )
> > {
> > super( name );
> > }
> >
> > public void testExecute() throws Exception
> > {
> > final File projectFile = getTestResource( "load-dom.ant" );
> > executeTarget( projectFile, "load-file" );
> > executeTarget( projectFile, "no-propname" );
> > executeTarget( projectFile, "no-file" );
> > executeTarget( projectFile, "unknown-file" );
> > }
> > }
> >
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/include-lo
> >g.ant
> >
> > Index: include-log.ant
> > ===================================================================
> > <tasks>
> > <log>Included task 1</log>
> > <log>Included task 2</log>
> > </tasks>
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/include-pr
> >ops.ant
> >
> > Index: include-props.ant
> > ===================================================================
> > <tasks>
> > <assert><equals arg1="${p}" arg2="original value"/></assert>
> > <property name="p">new value</property>
> > </tasks>
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/include.an
> >t
> >
> > Index: include.ant
> > ===================================================================
> > <project version="2.0">
> > <target name="include-log">
> > <expect-output>
> > <out>
> > <include>
> > <log>Included task 1</log>
> > <log>Included task 2</log>
> > </include>
> > </out>
> > <tasks>
> > <include file="include-log.ant"/>
> > </tasks>
> > </expect-output>
> > </target>
> >
> > <!-- Test that included tasks can get/set properties in
> current scope
> --> <target name="include-use-props">
> > <property name="p">original value</property>
> > <include file="include-props.ant"/>
> > <assert><equals arg1="${p}" arg2="new value"/></assert>
> > </target>
> >
> > <!-- Validation tests -->
> >
> > <target name="no-file">
> > <expect-error>
> > <exc>No source file specified.</exc>
> > <tasks>
> > <include/>
> > </tasks>
> > </expect-error>
> > </target>
> >
> > <target name="unknown-file">
> > <expect-error>
> > <exc>Could not load file
> > "${myrmidon.project/baseDirectory}${file.separator}no-such-file".</exc>
> > <tasks>
> > <include file="no-such-file"/>
> > </tasks>
> > </expect-error>
> > </target>
> > </project>
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/load-dom.a
> >nt
> >
> > Index: load-dom.ant
> > ===================================================================
> > <project version="2.0">
> > <!-- Load a DOM and try out some XPath expressions on it -->
> > <target name="load-file">
> > <load-dom property="dom" file="test.xml"/>
> > <assert>
> > <equals arg1="${dom/@attr}" arg2="root"/>
> > <equals arg1="${dom/elem[1]/@attr}" arg2="elem 1"/>
> > <equals arg1="${dom/elem[@attr='elem 2']}" arg2="some
text"/>
> > </assert>
> > </target>
> >
> > <!-- Validation tests -->
> >
> > <target name="no-propname">
> > <expect-error>
> > <exc>No property name specified.</exc>
> > <tasks>
> > <load-dom file="test.xml"/>
> > </tasks>
> > </expect-error>
> > </target>
> >
> > <target name="no-file">
> > <expect-error>
> > <exc>No source file specified.</exc>
> > <tasks>
> > <load-dom property="prop"/>
> > </tasks>
> > </expect-error>
> > </target>
> >
> > <target name="unknown-file">
> > <expect-error>
> > <exc>Could not load file
> > "${myrmidon.project/baseDirectory}${file.separator}no-such-file".</exc>
> > <tasks>
> > <load-dom property="prop" file="no-such-file"/>
> > </tasks>
> > </expect-error>
> > </target>
> > </project>
> >
> >
> > 1.1
> >
jakarta-ant-myrmidon/antlib/src/test/org/apache/antlib/core/test/test.xml
> >
> > Index: test.xml
> > ===================================================================
> > <root attr="root">
> > <elem attr="elem 1"/>
> > <elem attr="elem 2">some text</elem>
> > <elem attr="elem 3"/>
> > </root>
>
> --
> Cheers,
>
> Peter Donald
> *------------------------------------------------*
> | The student who is never required to do what |
> | he cannot do never does what he can do. |
> | - John Stuart Mill |
> *------------------------------------------------*
>
>
> --
> To unsubscribe, e-mail: <mailto:ant-dev-unsubscribe@jakarta.apache.org>
> For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>
>
--
To unsubscribe, e-mail: <mailto:ant-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:ant-dev-help@jakarta.apache.org>
|