ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Peter Donald <pe...@apache.org>
Subject Re: cvs commit: jakarta-ant-myrmidon/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
Date Wed, 26 Jun 2002 02:27:46 GMT
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>


Mime
View raw message