You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ad...@apache.org on 2002/08/20 04:57:02 UTC
cvs commit: jakarta-commons-sandbox/vfs/src/test-data/basedir/dir1 file1.txt file2.txt file3.txt
adammurdoch 2002/08/19 19:57:02
Modified: vfs maven.xml project.properties project.xml
vfs/src/java/org/apache/commons/vfs/impl
DefaultFileReplicator.java
vfs/src/java/org/apache/commons/vfs/provider
AbstractFileObject.java
vfs/src/java/org/apache/commons/vfs/provider/local
LocalFile.java
vfs/src/java/org/apache/commons/vfs/provider/zip
ZipFileSystemProvider.java
vfs/src/test/org/apache/commons AbstractVfsTestCase.java
vfs/src/test/org/apache/commons/vfs/provider/local/test
LocalFileSystemTestCase.java
vfs/src/test/org/apache/commons/vfs/test
AbstractFileSystemTestCase.java
Added: vfs/src/test-data test.policy
vfs/src/test-data/basedir empty.txt file1.txt
vfs/src/test-data/basedir/dir1 file1.txt file2.txt file3.txt
Log:
- File replication is now performed as a privileged operation.
- Made unit tests operational.
Patch submitted by Brian Olsen.
Revision Changes Path
1.2 +65 -0 jakarta-commons-sandbox/vfs/maven.xml
Index: maven.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/maven.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- maven.xml 16 Jul 2002 17:19:15 -0000 1.1
+++ maven.xml 20 Aug 2002 02:57:01 -0000 1.2
@@ -1,5 +1,70 @@
<project default="java:jar" xmlns:j="jelly:core">
<!-- we can customize the Maven build here -->
+ <goal name="test:test-data"
+ description="Generate and copy the test data"
+ prereqs="test:compile">
+
+ <copy todir="${maven.test.data}">
+ <fileset dir="${maven.test.data.src}">
+ <exclude name="*.policy"/>
+ </fileset>
+ </copy>
+
+ <mkdir dir="${maven.test.data}/basedir/emptydir"/>
+
+ <!-- Create a zip file -->
+ <zip zipfile="${maven.test.data}/test.zip">
+ <zipfileset dir="${maven.test.data}">
+ <include name="basedir/**"/>
+ </zipfileset>
+ </zip>
+ <zip zipfile="${maven.test.data}/nested.zip">
+ <zipfileset dir="${maven.test.data}">
+ <include name="test.zip"/>
+ </zipfileset>
+ </zip>
+ </goal>
+ <goal name="test:test"
+ description="Test the application"
+ prereqs="test:test-data">
+
+ <junit printSummary="yes"
+ failureProperty="maven.test.failure"
+ fork="${maven.junit.fork}"
+ dir="${maven.junit.dir}">
+ <sysproperty key="basedir" value="${basedir}"/>
+ <sysproperty key="test.basedir" value="${maven.test.data}"/>
+ <sysproperty key="maven.repo.local" value="${maven.repo.local}"/>
+ <sysproperty key="maven.home" value="${maven.home}"/>
+ <sysproperty key="maven.build.dest" value="${maven.build.dest}"/>
+ <j:if test="${maven.test.secure}">
+ <sysproperty key="java.security.manager" value="" />
+ <sysproperty key="java.security.policy" value="${maven.test.policy}"/>
+ </j:if>
+ <formatter type="xml"/>
+ <formatter type="plain" usefile="${maven.junit.usefile}"/>
+ <classpath>
+ <path refid="maven.dependency.classpath"/>
+ <pathelement location="${maven.build.dest}"/>
+ <pathelement location="${maven.test.dest}"/>
+ </classpath>
+ <batchtest todir="${maven.test.reportsDirectory}">
+ <fileset dir="${pom.build.unitTestSourceDirectory}">
+ <j:forEach var="pat" items="${pom.build.unitTest.includes}">
+ <include name="${pat}"/>
+ </j:forEach>
+ <j:forEach var="pat" items="${pom.build.unitTest.excludes}">
+ <exclude name="${pat}"/>
+ </j:forEach>
+ </fileset>
+ </batchtest>
+ </junit>
+
+ <j:if test="${maven.test.failure}">
+ <fail message="There were test failures."/>
+ </j:if>
+
+ </goal>
</project>
1.2 +6 -1 jakarta-commons-sandbox/vfs/project.properties
Index: project.properties
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/project.properties,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- project.properties 16 Jul 2002 17:19:15 -0000 1.1
+++ project.properties 20 Aug 2002 02:57:01 -0000 1.2
@@ -7,7 +7,12 @@
maven.compile.deprecation = off
maven.jarResources.basedir=${basedir}/src/java
-maven.junit.usefile = false
+maven.junit.usefile = true
+maven.junit.fork = true
+maven.test.data.src=${maven.src.dir}/test-data
+maven.test.data=${maven.build.dir}/test-data
+maven.test.policy=${maven.test.data.src}/test.policy
+maven.test.secure=false
# use Sun coding standards
1.4 +9 -24 jakarta-commons-sandbox/vfs/project.xml
Index: project.xml
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/project.xml,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- project.xml 18 Jul 2002 16:47:24 -0000 1.3
+++ project.xml 20 Aug 2002 02:57:01 -0000 1.4
@@ -68,39 +68,19 @@
<id>junit</id>
<version>3.7</version>
</dependency>
-
- <dependency>
- <id>xml-apis</id>
- <version>2.0.2</version>
- </dependency>
-
- <dependency>
- <id>xerces</id>
- <version>2.0.0</version>
- </dependency>
-
+
<dependency>
<id>commons-net</id>
<version>SNAPSHOT</version>
</dependency>
<dependency>
- <id>commons-logging</id>
- <version>1.0</version>
- </dependency>
-
- <dependency>
<id>commons-io</id>
<version>SNAPSHOT</version>
</dependency>
-
- <dependency>
- <id>excalibur-i18n</id>
- <version>1.0</version>
- </dependency>
<dependency>
- <id>excalibur-logger</id>
+ <id>excalibur-i18n</id>
<version>1.0</version>
</dependency>
@@ -113,7 +93,7 @@
<id>jcifs</id>
<version>0.6.5</version>
</dependency>
-
+
</dependencies>
@@ -128,8 +108,13 @@
<!-- Unit test classes -->
<unitTest>
<includes>
- <include>**/Test*.java</include>
+ <include>**/test/*TestCase.java</include>
</includes>
+ <excludes>
+ <exclude>**/test/Abstract*TestCase.java</exclude>
+ <exclude>**/smb/test/**</exclude>
+ <exclude>**/ftp/test/**</exclude>
+ </excludes>
</unitTest>
1.2 +55 -22 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/DefaultFileReplicator.java
Index: DefaultFileReplicator.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/DefaultFileReplicator.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultFileReplicator.java 16 Jul 2002 17:18:59 -0000 1.1
+++ DefaultFileReplicator.java 20 Aug 2002 02:57:02 -0000 1.2
@@ -9,6 +9,11 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Random;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.security.PrivilegedExceptionAction;
+import java.security.PrivilegedActionException;
import org.apache.commons.vfs.FileConstants;
import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSelector;
@@ -32,15 +37,21 @@
private static final Resources REZ =
ResourceManager.getPackageResources( DefaultFileReplicator.class );
+ private static long filecount = -1;
+
private final DefaultFileSystemManager m_manager;
private final File m_tempDir;
private final ArrayList m_copies = new ArrayList();
- private long m_filecount;
public DefaultFileReplicator( final DefaultFileSystemManager manager )
{
m_manager = manager;
- m_tempDir = new File( "ant_vfs_cache" ).getAbsoluteFile();
+ m_tempDir = (File) AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run() {
+ return new File( "ant_vfs_cache" ).getAbsoluteFile();
+ }
+ } );
}
/**
@@ -48,19 +59,40 @@
*/
public void dispose()
{
- while( m_copies.size() > 0 )
+ /*
+ AccessController.doPrivileged(
+ new PrivilegedAction() {
+ public Object run()
+ {
+ while( m_copies.size() > 0 )
+ {
+ final FileObject file = (FileObject)m_copies.remove( 0 );
+ try
+ {
+ file.delete( FileConstants.SELECT_ALL );
+ }
+ catch( final FileSystemException e )
+ {
+ final String message = REZ.getString( "delete-temp.warn", file.getName() );
+ getLogger().warn( message, e );
+ }
+ }
+ return null;
+ }
+ } );
+ */
+ }
+
+ protected static File generateTempFile( String prefix, File tempDir )
+ {
+ if( filecount == -1 )
{
- final FileObject file = (FileObject)m_copies.remove( 0 );
- try
- {
- file.delete( FileConstants.SELECT_ALL );
- }
- catch( final FileSystemException e )
- {
- final String message = REZ.getString( "delete-temp.warn", file.getName() );
- getLogger().warn( message, e );
- }
+ filecount = new Random().nextInt() & 0xffff;
}
+ // Create a unique-ish file name
+ final String basename = prefix + "_"+ filecount + ".tmp";
+ filecount++;
+ return new File( tempDir, basename );
}
/**
@@ -70,23 +102,24 @@
final FileSelector selector )
throws FileSystemException
{
- // TODO - this is awful
-
- // Create a unique-ish file name
- final String basename = m_filecount + "_" + srcFile.getName().getBaseName();
- m_filecount++;
- final File file = new File( m_tempDir, basename );
-
+ final String basename = srcFile.getName().getBaseName();
+ final File file = generateTempFile( basename, m_tempDir );
try
{
// Copy from the source file
final FileObject destFile = m_manager.convert( file );
- destFile.copyFrom( srcFile, selector );
+ AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws FileSystemException {
+ destFile.copyFrom( srcFile, selector );
+ return null;
+ }
+ } );
// Keep track of the copy
m_copies.add( destFile );
}
- catch( final FileSystemException e )
+ catch( final PrivilegedActionException e )
{
final String message = REZ.getString( "replicate-file.error", srcFile.getName(), file );
throw new FileSystemException( message, e );
1.3 +42 -4 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/AbstractFileObject.java
Index: AbstractFileObject.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/AbstractFileObject.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- AbstractFileObject.java 17 Jul 2002 10:23:42 -0000 1.2
+++ AbstractFileObject.java 20 Aug 2002 02:57:02 -0000 1.3
@@ -14,6 +14,9 @@
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
+import java.security.PrivilegedActionException;
import org.apache.commons.vfs.FileConstants;
import org.apache.commons.vfs.FileContent;
import org.apache.commons.vfs.FileName;
@@ -221,10 +224,21 @@
*/
public URL getURL() throws MalformedURLException
{
- StringBuffer buf = new StringBuffer();
-
- return new URL( UriParser.extractScheme( m_name.getURI(), buf ), null, -1,
- buf.toString(), new DefaultURLStreamHandler( m_fs.getContext() ) );
+ final StringBuffer buf = new StringBuffer();
+ try
+ {
+ return (URL) AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws MalformedURLException {
+ return new URL( UriParser.extractScheme( m_name.getURI(), buf ), null, -1,
+ buf.toString(), new DefaultURLStreamHandler( m_fs.getContext() ) );
+ }
+ } );
+ }
+ catch( PrivilegedActionException e )
+ {
+ throw (MalformedURLException) e.getException();
+ }
}
/**
@@ -306,6 +320,10 @@
{
files = doListChildren();
}
+ catch( RuntimeException re )
+ {
+ throw re;
+ }
catch( Exception exc )
{
final String message = REZ.getString( "list-children.error", m_name );
@@ -371,6 +389,10 @@
{
doDelete();
}
+ catch( RuntimeException re )
+ {
+ throw re;
+ }
catch( Exception exc )
{
final String message = REZ.getString( "delete.error", m_name );
@@ -461,6 +483,10 @@
endOutput();
}
}
+ catch( RuntimeException re )
+ {
+ throw re;
+ }
catch( Exception exc )
{
final String message = REZ.getString( "create.error", type, m_name );
@@ -567,6 +593,10 @@
IOUtil.shutdownStream( instr );
}
}
+ catch( RuntimeException re )
+ {
+ throw re;
+ }
catch( final Exception exc )
{
final String message = REZ.getString( "copy-file.error", srcFile.getName(), destFile.getName() );
@@ -665,6 +695,10 @@
{
throw exc;
}
+ catch( RuntimeException re )
+ {
+ throw re;
+ }
catch( Exception exc )
{
final String message = REZ.getString( "write.error", m_name );
@@ -692,6 +726,10 @@
catch( FileSystemException exc )
{
throw exc;
+ }
+ catch( RuntimeException re )
+ {
+ throw re;
}
catch( Exception exc )
{
1.2 +9 -0 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/LocalFile.java
Index: LocalFile.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/LocalFile.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LocalFile.java 16 Jul 2002 17:18:59 -0000 1.1
+++ LocalFile.java 20 Aug 2002 02:57:02 -0000 1.2
@@ -12,6 +12,8 @@
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.FilePermission;
+import java.security.AccessController;
import org.apache.commons.vfs.FileName;
import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSelector;
@@ -36,6 +38,7 @@
private File m_file;
private final String m_fileName;
+ private FilePermission m_requiredPerm;
/**
* Creates a non-root file.
@@ -57,6 +60,7 @@
if( m_file == null )
{
m_file = new File( m_fileName );
+ m_requiredPerm = new FilePermission( m_file.getAbsolutePath(), "read" );
}
}
@@ -151,6 +155,11 @@
protected File doReplicateFile( final FileSelector selector )
throws FileSystemException
{
+ final SecurityManager sm = System.getSecurityManager();
+ if( sm != null )
+ {
+ sm.checkPermission( m_requiredPerm );
+ }
return m_file;
}
}
1.2 +19 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileSystemProvider.java
Index: ZipFileSystemProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileSystemProvider.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- ZipFileSystemProvider.java 16 Jul 2002 17:18:58 -0000 1.1
+++ ZipFileSystemProvider.java 20 Aug 2002 02:57:02 -0000 1.2
@@ -8,6 +8,9 @@
package org.apache.commons.vfs.provider.zip;
import java.io.File;
+import java.security.AccessController;
+import java.security.PrivilegedExceptionAction;
+import java.security.PrivilegedActionException;
import org.apache.commons.vfs.FileConstants;
import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSystemException;
@@ -81,12 +84,25 @@
final ParsedZipUri zipUri = (ParsedZipUri)uri;
final FileObject file = zipUri.getZipFile();
+ // Create the file system
+ final DefaultFileName name = new DefaultFileName( m_parser, zipUri.getRootUri(), "/" );
+
// Make a local copy of the file
final File zipFile = file.replicateFile( FileConstants.SELECT_SELF );
- // Create the file system
- DefaultFileName name = new DefaultFileName( m_parser, zipUri.getRootUri(), "/" );
- return new ZipFileSystem( getContext(), name, zipFile );
+ try
+ {
+ return (ZipFileSystem)AccessController.doPrivileged(
+ new PrivilegedExceptionAction() {
+ public Object run() throws FileSystemException {
+ return new ZipFileSystem( getContext(), name, zipFile );
+ }
+ } );
+ }
+ catch( PrivilegedActionException pae )
+ {
+ throw (FileSystemException) pae.getException();
+ }
}
}
1.2 +5 -4 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/AbstractVfsTestCase.java
Index: AbstractVfsTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/AbstractVfsTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractVfsTestCase.java 16 Jul 2002 17:19:08 -0000 1.1
+++ AbstractVfsTestCase.java 20 Aug 2002 02:57:02 -0000 1.2
@@ -5,7 +5,7 @@
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE.txt file.
*/
-package org.apache.aut;
+package org.apache.commons;
import java.io.File;
import java.io.IOException;
@@ -17,7 +17,7 @@
import org.apache.avalon.framework.logger.Logger;
/**
- * A base class for Myrmidon tests. Provides utility methods for locating
+ * A base class for VFS tests. Provides utility methods for locating
* test resources.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
@@ -35,8 +35,9 @@
super( name );
final String baseDirProp = System.getProperty( "test.basedir" );
m_baseDir = getCanonicalFile( new File( baseDirProp ) );
- final String packagePath = getPackageName( getClass() ).replace( '.', File.separatorChar );
- m_testBaseDir = getCanonicalFile( new File( m_baseDir, packagePath ) );
+// final String packagePath = getPackageName( getClass() ).replace( '.', File.separatorChar );
+// m_testBaseDir = getCanonicalFile( new File( m_baseDir, packagePath ) );
+ m_testBaseDir = m_baseDir;
}
/**
1.2 +1 -2 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/local/test/LocalFileSystemTestCase.java
Index: LocalFileSystemTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/local/test/LocalFileSystemTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- LocalFileSystemTestCase.java 16 Jul 2002 17:19:16 -0000 1.1
+++ LocalFileSystemTestCase.java 20 Aug 2002 02:57:02 -0000 1.2
@@ -29,8 +29,7 @@
*/
protected FileObject getBaseFolder() throws Exception
{
- // Cheat a little
- final File testDir = getTestResource( "../../../test/basedir" );
+ final File testDir = getTestResource( "basedir" );
final File emptyDir = new File( testDir, "emptydir" );
emptyDir.mkdirs();
return m_manager.convert( testDir );
1.2 +1 -1 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/AbstractFileSystemTestCase.java
Index: AbstractFileSystemTestCase.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/AbstractFileSystemTestCase.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- AbstractFileSystemTestCase.java 16 Jul 2002 17:18:58 -0000 1.1
+++ AbstractFileSystemTestCase.java 20 Aug 2002 02:57:02 -0000 1.2
@@ -17,7 +17,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import org.apache.aut.AbstractVfsTestCase;
+import org.apache.commons.AbstractVfsTestCase;
import org.apache.commons.vfs.FileContent;
import org.apache.commons.vfs.FileName;
import org.apache.commons.vfs.FileObject;
1.1 jakarta-commons-sandbox/vfs/src/test-data/test.policy
Index: test.policy
===================================================================
// Standard extensions get all permissions by default
grant codeBase "file:${java.home}/lib/ext/*" {
permission java.security.AllPermission;
};
grant codeBase "file:${maven.home}/-" {
permission java.security.AllPermission;
};
grant codeBase "file:${maven.build.dest}" {
permission java.io.FilePermission "${user.dir}/ant_vfs_cache/-", "read, write, delete";
permission java.io.FilePermission "${user.dir}/ant_vfs_cache", "read, write";
permission java.io.FilePermission "${user.dir}", "read";
permission java.net.NetPermission "specifyStreamHandler";
};
// default permissions granted to all domains
grant {
permission java.io.FilePermission "${test.basedir}/write-tests", "read, write, delete";
permission java.io.FilePermission "${test.basedir}/write-tests/-", "read, write, delete";
permission java.io.FilePermission "${test.basedir}/-", "read";
permission java.io.FilePermission "${test.basedir}", "read";
// Allows any thread to stop itself using the java.lang.Thread.stop()
// method that takes no argument.
// Note that this permission is granted by default only to remain
// backwards compatible.
// It is strongly recommended that you either remove this permission
// from this policy file or further restrict it to code sources
// that you specify, because Thread.stop() is potentially unsafe.
// See "http://java.sun.com/notes" for more information.
permission java.lang.RuntimePermission "stopThread";
// allows anyone to listen on un-privileged ports
permission java.net.SocketPermission "localhost:1024-", "listen";
// "standard" properies that can be read by anyone
permission java.util.PropertyPermission "java.version", "read";
permission java.util.PropertyPermission "java.vendor", "read";
permission java.util.PropertyPermission "java.vendor.url", "read";
permission java.util.PropertyPermission "java.class.version", "read";
permission java.util.PropertyPermission "os.name", "read";
permission java.util.PropertyPermission "os.version", "read";
permission java.util.PropertyPermission "os.arch", "read";
permission java.util.PropertyPermission "file.separator", "read";
permission java.util.PropertyPermission "path.separator", "read";
permission java.util.PropertyPermission "line.separator", "read";
permission java.util.PropertyPermission "java.specification.version", "read";
permission java.util.PropertyPermission "java.specification.vendor", "read";
permission java.util.PropertyPermission "java.specification.name", "read";
permission java.util.PropertyPermission "java.vm.specification.version", "read";
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
permission java.util.PropertyPermission "java.vm.specification.name", "read";
permission java.util.PropertyPermission "java.vm.version", "read";
permission java.util.PropertyPermission "java.vm.vendor", "read";
permission java.util.PropertyPermission "java.vm.name", "read";
permission java.util.PropertyPermission "test.basedir", "read";
permission java.util.PropertyPermission "user.dir", "read";
};
1.1 jakarta-commons-sandbox/vfs/src/test-data/basedir/empty.txt
<<Binary file>>
1.1 jakarta-commons-sandbox/vfs/src/test-data/basedir/file1.txt
Index: file1.txt
===================================================================
This is a test file.
With 2 lines in it.
1.1 jakarta-commons-sandbox/vfs/src/test-data/basedir/dir1/file1.txt
Index: file1.txt
===================================================================
A test file.
1.1 jakarta-commons-sandbox/vfs/src/test-data/basedir/dir1/file2.txt
Index: file2.txt
===================================================================
A test file.
1.1 jakarta-commons-sandbox/vfs/src/test-data/basedir/dir1/file3.txt
Index: file3.txt
===================================================================
A test file.
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>