git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271459 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -386,11 +386,9 @@ Legal: | |||
| <property name="antlib.name" value="sound"/> | |||
| </ant> | |||
| <!-- | |||
| <ant antfile="antlib.xml"> | |||
| <property name="antlib.name" value="vfile"/> | |||
| </ant> | |||
| --> | |||
| <antlib-jar jarfile="${build.lib}/selftest.atl" | |||
| basedir="${build.classes}" | |||
| @@ -434,6 +432,7 @@ Legal: | |||
| <!-- Prepare the VFS tests --> | |||
| <property name="test.vfs.dir" location="${test.working.dir}/org/apache/aut/vfs"/> | |||
| <mkdir dir="${test.vfs.dir}/write-tests"/> | |||
| <mkdir dir="${test.vfs.dir}/basedir/emptydir"/> | |||
| <zip zipfile="${test.vfs.dir}/test.zip"> | |||
| <fileset dir="${test.vfs.dir}" includes="basedir/**"/> | |||
| @@ -0,0 +1,8 @@ | |||
| <project version="2.0"> | |||
| <target name="copy"> | |||
| <v-fileset id="src-files" dir="src"/> | |||
| <v-copy todir="dest"> | |||
| <v-fileset-ref id="src-files"/> | |||
| </v-copy> | |||
| </target> | |||
| </project> | |||
| @@ -0,0 +1 @@ | |||
| A test file. | |||
| @@ -0,0 +1,5 @@ | |||
| <html> | |||
| <body> | |||
| <p>Yo!</p> | |||
| </body> | |||
| </html> | |||
| @@ -0,0 +1,175 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import java.io.InputStream; | |||
| import java.io.OutputStream; | |||
| import java.util.ArrayList; | |||
| import java.util.Iterator; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.aut.vfs.FileSystemException; | |||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
| import org.apache.avalon.excalibur.i18n.Resources; | |||
| import org.apache.myrmidon.api.AbstractTask; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| /** | |||
| * A task that copies files. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:task name="v-copy" | |||
| */ | |||
| public class CopyFilesTask | |||
| extends AbstractTask | |||
| { | |||
| private final static Resources REZ = | |||
| ResourceManager.getPackageResources( CopyFilesTask.class ); | |||
| private FileObject m_srcFile; | |||
| private FileObject m_destFile; | |||
| private FileObject m_destDir; | |||
| private ArrayList m_fileSets = new ArrayList(); | |||
| /** | |||
| * Sets the source file. | |||
| */ | |||
| public void setFile( final FileObject file ) | |||
| { | |||
| m_srcFile = file; | |||
| } | |||
| /** | |||
| * Sets the destination file. | |||
| */ | |||
| public void setTofile( final FileObject file ) | |||
| { | |||
| m_destFile = file; | |||
| } | |||
| /** | |||
| * Sets the destination directory. | |||
| */ | |||
| public void setTodir( final FileObject file ) | |||
| { | |||
| m_destDir = file; | |||
| } | |||
| /** | |||
| * Adds a source file set. | |||
| */ | |||
| public void add( final FileSet fileset ) | |||
| { | |||
| m_fileSets.add( fileset ); | |||
| } | |||
| /** | |||
| * Execute task. | |||
| * This method is called to perform actual work associated with task. | |||
| * It is called after Task has been Configured and Initialized and before | |||
| * beig Disposed (If task implements appropriate interfaces). | |||
| * | |||
| * @exception TaskException if an error occurs | |||
| */ | |||
| public void execute() | |||
| throws TaskException | |||
| { | |||
| if( m_srcFile == null && m_fileSets.size() == 0 ) | |||
| { | |||
| final String message = REZ.getString( "copyfilestask.no-source.error", getContext().getName() ); | |||
| throw new TaskException( message ); | |||
| } | |||
| if( m_destFile == null && m_destDir == null ) | |||
| { | |||
| final String message = REZ.getString( "copyfilestask.no-destination.error", getContext().getName() ); | |||
| throw new TaskException( message ); | |||
| } | |||
| if( m_fileSets.size() > 0 && m_destDir == null ) | |||
| { | |||
| final String message = REZ.getString( "copyfilestask.no-destination-dir.error", getContext().getName() ); | |||
| throw new TaskException( message ); | |||
| } | |||
| try | |||
| { | |||
| // Copy the source file across | |||
| if( m_srcFile != null ) | |||
| { | |||
| if( m_destFile == null ) | |||
| { | |||
| m_destFile = m_destDir.resolveFile( m_srcFile.getName().getBaseName() ); | |||
| } | |||
| copyFile( m_srcFile, m_destFile ); | |||
| } | |||
| // Copy the contents of the filesets across | |||
| for( Iterator iterator = m_fileSets.iterator(); iterator.hasNext(); ) | |||
| { | |||
| FileSet fileset = (FileSet)iterator.next(); | |||
| FileSetResult result = fileset.getResult( getContext() ); | |||
| final FileObject[] files = result.getFiles(); | |||
| final String[] paths = result.getPaths(); | |||
| for( int i = 0; i < files.length; i++ ) | |||
| { | |||
| final FileObject srcFile = files[ i ]; | |||
| final String path = paths[ i ]; | |||
| // TODO - map destination name | |||
| // TODO - use scope here, to make sure that the result | |||
| // is a descendent of the dest dir | |||
| final FileObject destFile = m_destDir.resolveFile( path ); | |||
| copyFile( srcFile, destFile ); | |||
| } | |||
| } | |||
| } | |||
| catch( FileSystemException e ) | |||
| { | |||
| throw new TaskException( e.getMessage(), e ); | |||
| } | |||
| } | |||
| /** | |||
| * Copies a file. | |||
| */ | |||
| private void copyFile( final FileObject srcFile, final FileObject destFile ) | |||
| throws TaskException | |||
| { | |||
| getLogger().info( "copy " + srcFile + " to " + destFile ); | |||
| try | |||
| { | |||
| // TODO - move copy behind FileObject interface | |||
| InputStream instr = srcFile.getContent().getInputStream(); | |||
| try | |||
| { | |||
| OutputStream outstr = destFile.getContent().getOutputStream(); | |||
| byte[] buffer = new byte[ 4096 ]; | |||
| while( true ) | |||
| { | |||
| int nread = instr.read( buffer ); | |||
| if( nread == -1 ) | |||
| { | |||
| break; | |||
| } | |||
| outstr.write( buffer, 0, nread ); | |||
| } | |||
| outstr.close(); | |||
| } | |||
| finally | |||
| { | |||
| instr.close(); | |||
| } | |||
| } | |||
| catch( Exception exc ) | |||
| { | |||
| final String message = REZ.getString( "copyfilestask.copy-file.error", srcFile, destFile ); | |||
| throw new TaskException( message, exc ); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,76 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import java.util.ArrayList; | |||
| import java.util.Iterator; | |||
| import java.util.List; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| /** | |||
| * A compound file list, which is made up of several other file lists. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:data-type name="v-path" | |||
| */ | |||
| public class DefaultFileList implements FileList | |||
| { | |||
| private final List m_elements = new ArrayList(); | |||
| /** | |||
| * Adds a single file to this list. | |||
| */ | |||
| public void addLocation( final FileObject file ) | |||
| { | |||
| final SingletonFileList element = new SingletonFileList(); | |||
| element.setFile( file ); | |||
| m_elements.add( element ); | |||
| } | |||
| /** | |||
| * Adds a path to this list. | |||
| */ | |||
| public void addPath( final String pathStr ) | |||
| { | |||
| final PathFileList path = new PathFileList(); | |||
| path.setPath( pathStr ); | |||
| m_elements.add( path ); | |||
| } | |||
| /** | |||
| * Adds a file list to this list. | |||
| */ | |||
| public void add( final FileList list ) | |||
| { | |||
| m_elements.add( list ); | |||
| } | |||
| /** | |||
| * Returns the list of files. | |||
| */ | |||
| public FileObject[] listFiles( TaskContext context ) throws TaskException | |||
| { | |||
| // Collect the files from all elements | |||
| final ArrayList allFiles = new ArrayList(); | |||
| for( Iterator iterator = m_elements.iterator(); iterator.hasNext(); ) | |||
| { | |||
| FileList fileList = (FileList)iterator.next(); | |||
| FileObject[] files = fileList.listFiles( context ); | |||
| for( int i = 0; i < files.length; i++ ) | |||
| { | |||
| FileObject file = files[ i ]; | |||
| allFiles.add( file ); | |||
| } | |||
| } | |||
| // Convert to array | |||
| return (FileObject[])allFiles.toArray( new FileObject[ allFiles.size() ] ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,50 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| import org.apache.aut.vfs.FileObject; | |||
| /** | |||
| * An implementation of a file set result. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| */ | |||
| public class DefaultFileSetResult | |||
| implements FileSetResult | |||
| { | |||
| private List m_files = new ArrayList(); | |||
| private List m_paths = new ArrayList(); | |||
| /** | |||
| * Adds an element to the result. | |||
| */ | |||
| public void addElement( final FileObject file, | |||
| final String path ) | |||
| { | |||
| m_files.add( file ); | |||
| m_paths.add( path ); | |||
| } | |||
| /** | |||
| * Returns the files in the result. | |||
| */ | |||
| public FileObject[] getFiles() | |||
| { | |||
| return (FileObject[])m_files.toArray( new FileObject[ m_files.size() ] ); | |||
| } | |||
| /** | |||
| * Returns the virtual paths of the files. | |||
| */ | |||
| public String[] getPaths() | |||
| { | |||
| return (String[])m_paths.toArray( new String[ m_paths.size() ] ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,34 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.DataType; | |||
| /** | |||
| * An ordered list of files. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:role shorthand="v-path" | |||
| */ | |||
| public interface FileList | |||
| extends DataType | |||
| { | |||
| /** | |||
| * Returns the files in the list. | |||
| * | |||
| * @param context | |||
| * The context to use to build the list of files. | |||
| * | |||
| * @throws TaskException | |||
| * On error building the list of files. | |||
| */ | |||
| FileObject[] listFiles( TaskContext context ) throws TaskException; | |||
| } | |||
| @@ -0,0 +1,34 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.DataType; | |||
| /** | |||
| * A set of files, where each file in the list has a virtual path associated | |||
| * with it. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:role shorthand="v-fileset" | |||
| */ | |||
| public interface FileSet | |||
| extends DataType | |||
| { | |||
| /** | |||
| * Returns the contents of the set. | |||
| * | |||
| * @param context | |||
| * The context to use to build the set. | |||
| * | |||
| * @throws TaskException | |||
| * On error building the set. | |||
| */ | |||
| FileSetResult getResult( TaskContext context ) throws TaskException; | |||
| } | |||
| @@ -0,0 +1,28 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.aut.vfs.FileObject; | |||
| /** | |||
| * The contents of a {@link FileSet}. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| */ | |||
| public interface FileSetResult | |||
| { | |||
| /** | |||
| * Returns the files in the result. | |||
| */ | |||
| FileObject[] getFiles(); | |||
| /** | |||
| * Returns the virtual paths of the files. | |||
| */ | |||
| String[] getPaths(); | |||
| } | |||
| @@ -0,0 +1,61 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.aut.vfs.FileSystemException; | |||
| import org.apache.aut.vfs.FileSystemManager; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.tools.ant.util.FileUtils; | |||
| /** | |||
| * A path made up of file names separated by ; and : characters. Similar to | |||
| * a CLASSPATH or PATH environment variable. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| */ | |||
| public class PathFileList implements FileList | |||
| { | |||
| private String m_path; | |||
| /** | |||
| * Sets the path to use for this file list. | |||
| */ | |||
| public void setPath( final String path ) | |||
| { | |||
| m_path = path; | |||
| } | |||
| /** | |||
| * Returns the list of files. | |||
| */ | |||
| public FileObject[] listFiles( final TaskContext context ) | |||
| throws TaskException | |||
| { | |||
| FileSystemManager fileSystemManager = (FileSystemManager)context.getService( FileSystemManager.class ); | |||
| // TODO - move parsing to the VFS | |||
| final String[] elements = FileUtils.parsePath( m_path ); | |||
| final FileObject[] result = new FileObject[ elements.length ]; | |||
| for( int i = 0; i < elements.length; i++ ) | |||
| { | |||
| String element = elements[ i ]; | |||
| try | |||
| { | |||
| result[ i ] = fileSystemManager.resolveFile( element ); | |||
| } | |||
| catch( FileSystemException e ) | |||
| { | |||
| throw new TaskException( e.getMessage(), e ); | |||
| } | |||
| } | |||
| return result; | |||
| } | |||
| } | |||
| @@ -0,0 +1,114 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import java.util.ArrayList; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.aut.vfs.FileSystemException; | |||
| import org.apache.aut.vfs.FileType; | |||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
| import org.apache.avalon.excalibur.i18n.Resources; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| import org.apache.myrmidon.framework.AbstractFileSet; | |||
| /** | |||
| * A file set, that contains those files under a directory that match | |||
| * a set of patterns. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:data-type name="v-fileset" | |||
| */ | |||
| public class PatternFileSet | |||
| extends AbstractFileSet | |||
| implements FileList, FileSet | |||
| { | |||
| private final static Resources REZ = | |||
| ResourceManager.getPackageResources( PatternFileSet.class ); | |||
| private FileObject m_dir; | |||
| /** | |||
| * Sets the root directory. | |||
| */ | |||
| public void setDir( final FileObject dir ) | |||
| { | |||
| m_dir = dir; | |||
| } | |||
| /** | |||
| * Returns the root directory | |||
| */ | |||
| public FileObject getDir() | |||
| { | |||
| return m_dir; | |||
| } | |||
| /** | |||
| * Returns the list of files, in depthwise order. | |||
| */ | |||
| public FileObject[] listFiles( TaskContext context ) throws TaskException | |||
| { | |||
| final FileSetResult result = getResult( context ); | |||
| return result.getFiles(); | |||
| } | |||
| /** | |||
| * Returns the contents of the set. | |||
| */ | |||
| public FileSetResult getResult( TaskContext context ) throws TaskException | |||
| { | |||
| if( m_dir == null ) | |||
| { | |||
| final String message = REZ.getString( "fileset.dir-not-set.error" ); | |||
| throw new TaskException( message ); | |||
| } | |||
| try | |||
| { | |||
| final DefaultFileSetResult result = new DefaultFileSetResult(); | |||
| final ArrayList stack = new ArrayList(); | |||
| final ArrayList pathStack = new ArrayList(); | |||
| stack.add( m_dir ); | |||
| pathStack.add( "." ); | |||
| while( stack.size() > 0 ) | |||
| { | |||
| // Pop next folder off the stack | |||
| FileObject folder = (FileObject)stack.remove( 0 ); | |||
| String path = (String)pathStack.remove( 0 ); | |||
| // Queue the children of the folder | |||
| FileObject[] children = folder.getChildren(); | |||
| for( int i = 0; i < children.length; i++ ) | |||
| { | |||
| FileObject child = children[ i ]; | |||
| String childPath = path + '/' + child.getName().getBaseName(); | |||
| if( child.getType() == FileType.FILE ) | |||
| { | |||
| // A regular file - add it straight to the result | |||
| result.addElement( child, childPath ); | |||
| } | |||
| else | |||
| { | |||
| // A folder - push it on to the stack | |||
| stack.add( 0, child ); | |||
| pathStack.add( 0, childPath ); | |||
| } | |||
| } | |||
| } | |||
| return result; | |||
| } | |||
| catch( FileSystemException e ) | |||
| { | |||
| final String message = REZ.getString( "fileset.list-files.error", m_dir ); | |||
| throw new TaskException( message, e ); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,7 @@ | |||
| bad-convert-string-to-file.error=Could not convert URI "{0}" into a file object. | |||
| fileset.dir-not-set.error=Fileset root directory is not set. | |||
| fileset.list-files.error=Could not list the files in folder "{0}". | |||
| copyfilestask.no-source.error=No source files specified for {0} task. | |||
| copyfilestask.no-destination.error=No destination file or directory specified for {0} task. | |||
| copyfilestask.no-destination.error=No destination directory specified for {0} task. | |||
| copyfilestask.copy-file.error=Could not copy "{0}" to "{1}". | |||
| @@ -0,0 +1,39 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.api.TaskException; | |||
| /** | |||
| * A file list that contains a single file. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:data-type name="v-file" | |||
| */ | |||
| public class SingletonFileList implements FileList | |||
| { | |||
| private FileObject m_file; | |||
| /** | |||
| * Sets the file to use for tils file list. | |||
| */ | |||
| public void setFile( final FileObject file ) | |||
| { | |||
| m_file = file; | |||
| } | |||
| /** | |||
| * Returns the list of files. | |||
| */ | |||
| public FileObject[] listFiles( TaskContext context ) throws TaskException | |||
| { | |||
| return new FileObject[]{m_file}; | |||
| } | |||
| } | |||
| @@ -0,0 +1,57 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.aut.vfs.FileObject; | |||
| import org.apache.aut.vfs.FileSystemManager; | |||
| import org.apache.avalon.excalibur.i18n.ResourceManager; | |||
| import org.apache.avalon.excalibur.i18n.Resources; | |||
| import org.apache.avalon.framework.context.Context; | |||
| import org.apache.myrmidon.api.TaskContext; | |||
| import org.apache.myrmidon.converter.AbstractConverter; | |||
| import org.apache.myrmidon.converter.ConverterException; | |||
| /** | |||
| * Converts a String to a {@link FileObject} | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @ant:converter source="java.lang.String" destination="org.apache.aut.vfs.FileObject" | |||
| */ | |||
| public class StringToFileObjectConverter extends AbstractConverter | |||
| { | |||
| private final static Resources REZ = | |||
| ResourceManager.getPackageResources( StringToFileObjectConverter.class ); | |||
| public StringToFileObjectConverter() | |||
| { | |||
| super( String.class, FileObject.class ); | |||
| } | |||
| /** | |||
| * Converts a String into a FileObject. | |||
| */ | |||
| protected Object convert( Object original, Context context ) | |||
| throws ConverterException | |||
| { | |||
| final String fileUri = (String)original; | |||
| final TaskContext taskContext = (TaskContext)context; | |||
| try | |||
| { | |||
| final FileSystemManager manager = (FileSystemManager)taskContext.getService( FileSystemManager.class ); | |||
| // TODO - change TaskContext.getBaseDirectory() to return a FileObject | |||
| return manager.resolveFile( taskContext.getBaseDirectory(), fileUri ); | |||
| } | |||
| catch( Exception e ) | |||
| { | |||
| final String message = REZ.getString( "bad-convert-string-to-file.error", fileUri ); | |||
| throw new ConverterException( message, e ); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,35 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.myrmidon.AbstractProjectTest; | |||
| import java.io.File; | |||
| /** | |||
| * Test cases for the <v-copy> task. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class CopyFilesTaskTest | |||
| extends AbstractProjectTest | |||
| { | |||
| public CopyFilesTaskTest( String name ) | |||
| { | |||
| super( name ); | |||
| } | |||
| /** | |||
| * A simple smoke test. | |||
| */ | |||
| public void testCopy() throws Exception | |||
| { | |||
| final File projectFile = getTestResource( "copy.ant" ); | |||
| executeTarget( projectFile, "copy" ); | |||
| } | |||
| } | |||
| @@ -0,0 +1,35 @@ | |||
| /* | |||
| * 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.vfile; | |||
| import org.apache.myrmidon.AbstractProjectTest; | |||
| import java.io.File; | |||
| /** | |||
| * Test cases for the <v-copy> task. | |||
| * | |||
| * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a> | |||
| * @version $Revision$ $Date$ | |||
| */ | |||
| public class CopyFilesTaskTest | |||
| extends AbstractProjectTest | |||
| { | |||
| public CopyFilesTaskTest( String name ) | |||
| { | |||
| super( name ); | |||
| } | |||
| /** | |||
| * A simple smoke test. | |||
| */ | |||
| public void testCopy() throws Exception | |||
| { | |||
| final File projectFile = getTestResource( "copy.ant" ); | |||
| executeTarget( projectFile, "copy" ); | |||
| } | |||
| } | |||