Return-Path: Delivered-To: apmail-jakarta-commons-dev-archive@apache.org Received: (qmail 32388 invoked from network); 23 Feb 2003 00:40:42 -0000 Received: from exchange.sun.com (192.18.33.10) by daedalus.apache.org with SMTP; 23 Feb 2003 00:40:42 -0000 Received: (qmail 23970 invoked by uid 97); 23 Feb 2003 00:42:24 -0000 Delivered-To: qmlist-jakarta-archive-commons-dev@nagoya.betaversion.org Received: (qmail 23963 invoked from network); 23 Feb 2003 00:42:24 -0000 Received: from daedalus.apache.org (HELO apache.org) (208.185.179.12) by nagoya.betaversion.org with SMTP; 23 Feb 2003 00:42:24 -0000 Received: (qmail 32194 invoked by uid 500); 23 Feb 2003 00:40:40 -0000 Mailing-List: contact commons-dev-help@jakarta.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Subscribe: List-Help: List-Post: List-Id: "Jakarta Commons Developers List" Reply-To: "Jakarta Commons Developers List" Delivered-To: mailing list commons-dev@jakarta.apache.org Received: (qmail 32183 invoked by uid 500); 23 Feb 2003 00:40:40 -0000 Received: (qmail 32180 invoked from network); 23 Feb 2003 00:40:40 -0000 Received: from icarus.apache.org (208.185.179.13) by daedalus.apache.org with SMTP; 23 Feb 2003 00:40:40 -0000 Received: (qmail 79038 invoked by uid 1439); 23 Feb 2003 00:40:39 -0000 Date: 23 Feb 2003 00:40:39 -0000 Message-ID: <20030223004039.79037.qmail@icarus.apache.org> From: adammurdoch@apache.org To: jakarta-commons-sandbox-cvs@apache.org Subject: cvs commit: jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/tasks AbstractSyncTask.java ShowFileTask.java X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N adammurdoch 2003/02/22 16:40:39 Modified: vfs/src/test/org/apache/commons/vfs/provider/test JunctionProviderConfig.java vfs/src/test/org/apache/commons/vfs/test ContentTests.java ProviderReadTests.java ProviderTestSuite.java UrlTests.java vfs/src/java/org/apache/commons/vfs FileObject.java FileType.java Resources.properties vfs/src/java/org/apache/commons/vfs/provider AbstractFileObject.java DefaultFileContent.java DelegateFileObject.java vfs/src/java/org/apache/commons/vfs/provider/ftp FtpFileObject.java vfs/src/java/org/apache/commons/vfs/provider/local LocalFile.java vfs/src/java/org/apache/commons/vfs/provider/sftp SftpFileObject.java vfs/src/java/org/apache/commons/vfs/provider/smb SmbFileObject.java vfs/src/java/org/apache/commons/vfs/provider/url UrlFileObject.java vfs/src/java/org/apache/commons/vfs/provider/webdav WebdavFileObject.java vfs/src/java/org/apache/commons/vfs/provider/zip ZipFileObject.java vfs/src/java/org/apache/commons/vfs/tasks AbstractSyncTask.java ShowFileTask.java Log: - FileObject.getType() no longer throws an exception if the file does not exist. Instead, it returns FileType.IMAGINARY. - Added a bunch of capabilities discovery methods to FileType. - Tidied up some error methods. Revision Changes Path 1.5 +1 -2 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test/JunctionProviderConfig.java Index: JunctionProviderConfig.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/provider/test/JunctionProviderConfig.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- JunctionProviderConfig.java 12 Feb 2003 07:56:19 -0000 1.4 +++ JunctionProviderConfig.java 23 Feb 2003 00:40:37 -0000 1.5 @@ -97,7 +97,6 @@ final FileSystem newFs = manager.createFileSystem( "vfs:" ).getFileSystem(); final String junctionPoint = "/some/dir"; newFs.addJunction( junctionPoint, baseFolder ); - newFs.addJunction( junctionPoint + "/write-tests", baseFolder.resolveFile( "write-tests/subdir" ) ); return newFs.resolveFile( junctionPoint ); } 1.4 +6 -6 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ContentTests.java Index: ContentTests.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ContentTests.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ContentTests.java 13 Feb 2003 04:28:46 -0000 1.3 +++ ContentTests.java 23 Feb 2003 00:40:37 -0000 1.4 @@ -200,9 +200,9 @@ file.getChildren(); fail(); } - catch ( FileSystemException e ) + catch ( final FileSystemException e ) { - assertSameMessage( "vfs.provider/list-children-no-exist.error", file, e ); + assertSameMessage( "vfs.provider/list-children-not-folder.error", file, e ); } // Should be able to get child by name @@ -240,16 +240,16 @@ } catch ( FileSystemException e ) { - assertSameMessage( "vfs.provider/read-no-exist.error", unknownFile, e ); + assertSameMessage( "vfs.provider/read-not-file.error", unknownFile, e ); } try { content.getSize(); fail(); } - catch ( FileSystemException e ) + catch ( final FileSystemException e ) { - assertSameMessage( "vfs.provider/get-size-no-exist.error", unknownFile, e ); + assertSameMessage( "vfs.provider/get-size-not-file.error", unknownFile, e ); } } 1.9 +4 -12 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderReadTests.java Index: ProviderReadTests.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderReadTests.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- ProviderReadTests.java 12 Feb 2003 07:56:19 -0000 1.8 +++ ProviderReadTests.java 23 Feb 2003 00:40:37 -0000 1.9 @@ -118,7 +118,7 @@ final FileInfo info = (FileInfo)queueExpected.remove( 0 ); // Check the type is correct - assertSame( file.getType(), info.type ); + assertSame( info.type, file.getType() ); if ( info.type == FileType.FILE ) { @@ -163,15 +163,7 @@ // Test an unknown file file = getReadFolder().resolveFile( "unknown-child" ); - try - { - file.getType(); - fail(); - } - catch ( FileSystemException e ) - { - assertSameMessage( "vfs.provider/get-type-no-exist.error", file, e ); - } + assertSame( FileType.IMAGINARY, file.getType() ); } /** @@ -188,7 +180,7 @@ } catch ( FileSystemException e ) { - assertSameMessage( "vfs.provider/read-folder.error", folder, e ); + assertSameMessage( "vfs.provider/read-not-file.error", folder, e ); } } 1.11 +15 -10 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderTestSuite.java Index: ProviderTestSuite.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/ProviderTestSuite.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ProviderTestSuite.java 21 Feb 2003 13:18:18 -0000 1.10 +++ ProviderTestSuite.java 23 Feb 2003 00:40:37 -0000 1.11 @@ -55,20 +55,21 @@ */ package org.apache.commons.vfs.test; +import java.io.File; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.io.File; import java.util.Enumeration; import junit.extensions.TestSetup; +import junit.framework.Test; import junit.framework.TestSuite; -import org.apache.commons.vfs.impl.test.VfsClassLoaderTests; -import org.apache.commons.vfs.impl.DefaultFileSystemManager; +import org.apache.commons.AbstractVfsTestCase; +import org.apache.commons.vfs.FileName; +import org.apache.commons.vfs.FileObject; import org.apache.commons.vfs.impl.DefaultFileReplicator; +import org.apache.commons.vfs.impl.DefaultFileSystemManager; import org.apache.commons.vfs.impl.PrivilegedFileReplicator; +import org.apache.commons.vfs.impl.test.VfsClassLoaderTests; import org.apache.commons.vfs.provider.local.DefaultLocalFileProvider; -import org.apache.commons.vfs.FileName; -import org.apache.commons.vfs.FileObject; -import org.apache.commons.AbstractVfsTestCase; /** * The suite of tests for a file system. @@ -112,7 +113,7 @@ // Add nested tests // TODO - move nested jar and zip tests here // TODO - enable this again - //addTest( new ProviderTestSuite( new JunctionProviderConfig( providerConfig ), "junction.", true )); + //testSuite.addTest( new ProviderTestSuite( new JunctionProviderConfig( providerConfig ), "junction.", true )); } } @@ -201,8 +202,12 @@ final Enumeration tests = testSuite.tests(); while ( tests.hasMoreElements() ) { - final AbstractProviderTestCase test = (AbstractProviderTestCase)tests.nextElement(); - test.setConfig( manager, baseFolder, readFolder, writeFolder ); + final Test test = (Test)tests.nextElement(); + if ( test instanceof AbstractProviderTestCase ) + { + final AbstractProviderTestCase providerTestCase = (AbstractProviderTestCase)test; + providerTestCase.setConfig( manager, baseFolder, readFolder, writeFolder ); + } } } 1.6 +2 -2 jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/UrlTests.java Index: UrlTests.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/test/org/apache/commons/vfs/test/UrlTests.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- UrlTests.java 12 Feb 2003 07:56:19 -0000 1.5 +++ UrlTests.java 23 Feb 2003 00:40:38 -0000 1.6 @@ -137,7 +137,7 @@ } catch ( final IOException e ) { - assertSameMessage( "vfs.provider/read-no-exist.error", unknownFile, e ); + assertSameMessage( "vfs.provider/read-not-file.error", unknownFile, e ); } assertEquals( -1, connection.getContentLength() ); } 1.17 +3 -5 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/FileObject.java Index: FileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/FileObject.java,v retrieving revision 1.16 retrieving revision 1.17 diff -u -r1.16 -r1.17 --- FileObject.java 12 Feb 2003 07:56:09 -0000 1.16 +++ FileObject.java 23 Feb 2003 00:40:38 -0000 1.17 @@ -55,7 +55,6 @@ */ package org.apache.commons.vfs; -import java.net.MalformedURLException; import java.net.URL; /** @@ -132,7 +131,7 @@ boolean exists() throws FileSystemException; /** - * Determines if this file can be read (only files that exist can be read). + * Determines if this file can be read. * * @return * true if this file is readable, false if not. @@ -157,11 +156,10 @@ * Returns this file's type. * * @return - * Either {@link FileType#FILE} or {@link FileType#FOLDER}. Never - * returns null. + * One of the {@link FileType} constants. Never returns null. * * @throws FileSystemException - * If the file does not exist, or on error determining the file's type. + * On error determining the file's type. */ FileType getType() throws FileSystemException; 1.7 +53 -9 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/FileType.java Index: FileType.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/FileType.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- FileType.java 12 Feb 2003 07:56:09 -0000 1.6 +++ FileType.java 23 Feb 2003 00:40:38 -0000 1.7 @@ -56,7 +56,7 @@ package org.apache.commons.vfs; /** - * An enumeration that represents a file's type. + * An enumerated type that represents a file's type. * * @author Adam Murdoch * @version $Revision$ $Date$ @@ -64,32 +64,76 @@ public final class FileType { /** - * A folder, which can contain other files, but does not have any data - * content. + * A folder. May contain other files, and have attributes, but does not + * have any data content. */ - public static final FileType FOLDER = new FileType( "folder" ); + public static final FileType FOLDER = new FileType( "folder", true, false, true ); /** - * A regular file, which has data content, but cannot contain other files. + * A regular file. May have data content and attributes, but cannot + * contain other files. */ - public static final FileType FILE = new FileType( "file" ); + public static final FileType FILE = new FileType( "file", false, true, true ); + + /** + * A file that does not exist. May not have data content, attributes, + * or contain other files. + */ + public static final FileType IMAGINARY = new FileType( "imaginary", false, false, false ); private final String name; + private final boolean hasChildren; + private final boolean hasContent; + private final boolean hasAttrs; - private FileType( final String name ) + private FileType( final String name, + final boolean hasChildren, + final boolean hasContent, + final boolean hasAttrs ) { this.name = name; + this.hasChildren = hasChildren; + this.hasContent = hasContent; + this.hasAttrs = hasAttrs; } - /** Returns the name of the type. */ + /** + * Returns the name of this type. + */ public String toString() { return name; } - /** Returns the name of the type. */ + /** + * Returns the name of this type. + */ public String getName() { return name; + } + + /** + * Returns true if files of this type may contain other files. + */ + public boolean hasChildren() + { + return hasChildren; + } + + /** + * Returns true if files of this type may have data content. + */ + public boolean hasContent() + { + return hasContent; + } + + /** + * Returns true if files of this type may have attributes. + */ + public boolean hasAttributes() + { + return hasAttrs; } } 1.21 +5 -8 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/Resources.properties Index: Resources.properties =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/Resources.properties,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- Resources.properties 21 Feb 2003 13:08:59 -0000 1.20 +++ Resources.properties 23 Feb 2003 00:40:38 -0000 1.21 @@ -9,9 +9,7 @@ vfs.provider/set-attribute-not-supported.error=This file type does not support setting attributes. vfs.provider/get-attribute-not-supported.error=This file type does not support getting attributes. vfs.provider/write-not-supported.error=This file type cannot be written to. -vfs.provider/get-type-no-exist.error=Could not determine the type of file "{0}" because it does not exist. vfs.provider/get-type.error=Could not determine the type of file "{0}". -vfs.provider/list-children-no-exist.error=Could not list the contents of folder "{0}" because it does not exist. vfs.provider/list-children-not-folder.error=Could not list the contents of "{0}" because it is not a folder. vfs.provider/list-children.error=Could not list the contents of folder "{0}". vfs.provider/delete-read-only.error=Could not delete "{0}" because it is read-only. @@ -21,7 +19,7 @@ vfs.provider/create-folder.error=Could not create folder "{0}". vfs.provider/create-file.error=Could not create file "{0}". vfs.provider/write-read-only.error=Could not write to "{0}" because it is read-only. -vfs.provider/write-folder.error=Could not write to "{0}" because it is a folder. +vfs.provider/write-not-file.error=Could not write to "{0}" because it is not a file. vfs.provider/write.error=Could not write to "{0}". vfs.provider/copy-file.error=Could not copy "{0}" to "{1}". vfs.provider/copy-read-only.error=Could not copy {0} "{1}" to "{2}" because the destination file is read-only. @@ -31,16 +29,15 @@ vfs.provider/check-is-readable.error=Could not determine if file "{0}" is readable. vfs.provider/get-url.error=Could not create URL for "{0}". vfs.provider/close.error=Could not close "{0}". +vfs.provider/read.error=Could not read file "{0}". +vfs.provider/read-not-readable.error=File "{0}" is not readable. +vfs.provider/read-not-file.error=Could not read from "{0}" because it is a not a file. # DefaultFileContent -vfs.provider/get-size-folder.error=Could not determine the size of "{0}" because it is a folder. -vfs.provider/get-size-no-exist.error=Could not determine the size of file "{0}" because it does not exist. +vfs.provider/get-size-not-file.error=Could not determine the size of "{0}" because it is not a file. vfs.provider/get-size-write.error=Could not determine the size of file "{0}" because it is being written to. vfs.provider/get-size.error=Could not determine the size of file "{0}". -vfs.provider/read-folder.error=Could not read from "{0}" because it is a folder. -vfs.provider/read-no-exist.error=Could not read file "{0}" because it does not exist. vfs.provider/read-in-use.error=Could not read file "{0}" because it is currently being written to. -vfs.provider/read.error=Could not read file "{0}". vfs.provider/write-in-use.error=Could not write to "{0}" because it is currently in use. vfs.provider/get-last-modified-no-exist.error=Could not determine the last modified timestamp of "{0}" because it does not exist. vfs.provider/get-last-modified.error=Could not determine the last modified timestamp of "{0}". 1.27 +57 -79 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.26 retrieving revision 1.27 diff -u -r1.26 -r1.27 --- AbstractFileObject.java 21 Feb 2003 13:16:39 -0000 1.26 +++ AbstractFileObject.java 23 Feb 2003 00:40:38 -0000 1.27 @@ -57,6 +57,7 @@ import java.io.InputStream; import java.io.OutputStream; +import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; import java.security.AccessController; @@ -74,6 +75,7 @@ import org.apache.commons.vfs.FileType; import org.apache.commons.vfs.NameScope; import org.apache.commons.vfs.Selectors; +import org.apache.commons.vfs.FileUtil; /** * A partial file object implementation. @@ -130,9 +132,8 @@ } /** - * Determines the type of this file, returns null if the file does not - * exist. The return value of this method is cached, so the - * implementation can be expensive. + * Determines the type of this file. Must not return null. The return + * value of this method is cached, so the implementation can be expensive. */ protected abstract FileType doGetType() throws Exception; @@ -365,7 +366,7 @@ public boolean exists() throws FileSystemException { attach(); - return ( type != null ); + return ( type != FileType.IMAGINARY ); } /** @@ -374,10 +375,6 @@ public FileType getType() throws FileSystemException { attach(); - if ( type == null ) - { - throw new FileSystemException( "vfs.provider/get-type-no-exist.error", name ); - } return type; } @@ -465,11 +462,7 @@ public FileObject[] getChildren() throws FileSystemException { attach(); - if ( type == null ) - { - throw new FileSystemException( "vfs.provider/list-children-no-exist.error", name ); - } - if ( type != FileType.FOLDER ) + if ( !type.hasChildren() ) { throw new FileSystemException( "vfs.provider/list-children-not-folder.error", name ); } @@ -602,7 +595,7 @@ public void delete( final FileSelector selector ) throws FileSystemException { attach(); - if ( type == null ) + if ( type == FileType.IMAGINARY ) { // File does not exist return; @@ -664,7 +657,7 @@ // Already exists as correct type return; } - if ( type != null ) + if ( type != FileType.IMAGINARY ) { throw new FileSystemException( "vfs.provider/create-folder-mismatched-type.error", name ); } @@ -737,13 +730,20 @@ } // Copy across - if ( srcFile.getType() == FileType.FILE ) + try { - copyContent( srcFile, destFile ); + if ( srcFile.getType().hasContent() ) + { + FileUtil.copyContent( srcFile, destFile ); + } + else if ( srcFile.getType().hasChildren() ) + { + destFile.createFolder(); + } } - else + catch ( final IOException e ) { - destFile.createFolder(); + throw new FileSystemException( "vfs.provider/copy-file.error", new Object[]{srcFile, destFile}, e ); } } } @@ -760,58 +760,6 @@ } /** - * Copies the content of another file to this file. - */ - private static void copyContent( final FileObject srcFile, - final FileObject destFile ) - throws FileSystemException - { - try - { - final InputStream instr = srcFile.getContent().getInputStream(); - try - { - // Create the output stream via getContent(), to pick up the - // validation it does - final OutputStream outstr = destFile.getContent().getOutputStream(); - try - { - final byte[] buffer = new byte[ 1024 * 4 ]; - int n = 0; - while ( -1 != ( n = instr.read( buffer ) ) ) - { - outstr.write( buffer, 0, n ); - } - } - finally - { - outstr.close(); - } - } - finally - { - instr.close(); - } - } - catch ( RuntimeException re ) - { - throw re; - } - catch ( final Exception exc ) - { - throw new FileSystemException( "vfs.provider/copy-file.error", new Object[]{srcFile, destFile}, exc ); - } - } - - /** - * Returns true if this is a Folder. - */ - boolean isFolder() - { - return ( type == FileType.FOLDER ); - } - - /** * Returns the file's content. */ public FileContent getContent() throws FileSystemException @@ -861,6 +809,32 @@ } /** + * Returns an input stream to use to read the content of the file. + */ + public InputStream getInputStream() throws FileSystemException + { + attach(); + if ( ! type.hasContent() ) + { + throw new FileSystemException( "vfs.provider/read-not-file.error", name ); + } + if ( !isReadable() ) + { + throw new FileSystemException( "vfs.provider/read-not-readable.error", name ); + } + + // Get the raw input stream + try + { + return doGetInputStream(); + } + catch ( final Exception exc ) + { + throw new FileSystemException( "vfs.provider/read.error", name, exc ); + } + } + + /** * Prepares this file for writing. Makes sure it is either a file, * or its parent folder exists. Returns an output stream to use to * write the content of the file to. @@ -868,16 +842,16 @@ public OutputStream getOutputStream() throws FileSystemException { attach(); - if ( !isWriteable() ) + if ( type != FileType.IMAGINARY && !type.hasContent() ) { - throw new FileSystemException( "vfs.provider/write-read-only.error", name ); + throw new FileSystemException( "vfs.provider/write-not-file.error", name ); } - if ( type == FileType.FOLDER ) + if ( !isWriteable() ) { - throw new FileSystemException( "vfs.provider/write-folder.error", name ); + throw new FileSystemException( "vfs.provider/write-read-only.error", name ); } - if ( type == null ) + if ( type == FileType.IMAGINARY ) { // Does not exist - make sure parent does FileObject parent = getParent(); @@ -939,6 +913,10 @@ doAttach(); attached = true; type = doGetType(); + if ( type == null ) + { + type = FileType.IMAGINARY; + } } catch ( RuntimeException re ) { @@ -955,7 +933,7 @@ */ protected void endOutput() throws Exception { - if ( type == null ) + if ( type == FileType.IMAGINARY ) { // File was created handleCreate( FileType.FILE ); @@ -999,7 +977,7 @@ if ( attached ) { // Fix up state - type = null; + type = FileType.IMAGINARY; children = null; // Notify subclass @@ -1083,7 +1061,7 @@ final int index = selected.size(); // If the file is a folder, traverse it - if ( file.getType() == FileType.FOLDER && selector.traverseDescendents( fileInfo ) ) + if ( file.getType().hasChildren() && selector.traverseDescendents( fileInfo ) ) { final int curDepth = fileInfo.getDepth(); fileInfo.setDepth( curDepth + 1 ); 1.13 +9 -35 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/DefaultFileContent.java Index: DefaultFileContent.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/DefaultFileContent.java,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- DefaultFileContent.java 13 Feb 2003 04:28:45 -0000 1.12 +++ DefaultFileContent.java 23 Feb 2003 00:40:38 -0000 1.13 @@ -102,15 +102,10 @@ */ public long getSize() throws FileSystemException { - if ( file.isFolder() ) - { - throw new FileSystemException( "vfs.provider/get-size-folder.error", file ); - } - // Do some checking - if ( !file.exists() ) + if ( !file.getType().hasContent() ) { - throw new FileSystemException( "vfs.provider/get-size-no-exist.error", file ); + throw new FileSystemException( "vfs.provider/get-size-not-file.error", file ); } if ( state == STATE_WRITING ) { @@ -133,7 +128,7 @@ */ public long getLastModifiedTime() throws FileSystemException { - if ( !file.exists() ) + if ( !file.getType().hasAttributes() ) { throw new FileSystemException( "vfs.provider/get-last-modified-no-exist.error", file ); } @@ -152,7 +147,7 @@ */ public void setLastModifiedTime( long modTime ) throws FileSystemException { - if ( !file.exists() ) + if ( !file.getType().hasAttributes() ) { throw new FileSystemException( "vfs.provider/set-last-modified-no-exist.error", file ); } @@ -223,34 +218,17 @@ */ public InputStream getInputStream() throws FileSystemException { - if ( file.isFolder() ) - { - throw new FileSystemException( "vfs.provider/read-folder.error", file ); - } - if ( !file.exists() ) - { - throw new FileSystemException( "vfs.provider/read-no-exist.error", file ); - } if ( state == STATE_WRITING ) { throw new FileSystemException( "vfs.provider/read-in-use.error", file ); } // Get the raw input stream - InputStream rawInstr; - try - { - rawInstr = file.doGetInputStream(); - } - catch ( final Exception exc ) - { - throw new FileSystemException( "vfs.provider/read.error", new Object[]{file}, exc ); - } - - final FileContentInputStream instr = new FileContentInputStream( rawInstr ); - this.instrs.add( instr ); + final InputStream instr = file.getInputStream(); + final InputStream wrappedInstr = new FileContentInputStream( instr ); + this.instrs.add( wrappedInstr ); state = STATE_READING; - return instr; + return wrappedInstr; } /** @@ -258,17 +236,13 @@ */ public OutputStream getOutputStream() throws FileSystemException { - if ( file.isFolder() ) - { - throw new FileSystemException( "vfs.provider/write-folder.error", file ); - } if ( state != STATE_NONE ) { throw new FileSystemException( "vfs.provider/write-in-use.error", file ); } // Get the raw output stream - OutputStream outstr = file.getOutputStream(); + final OutputStream outstr = file.getOutputStream(); // Create wrapper this.outstr = new FileContentOutputStream( outstr ); 1.6 +12 -9 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/DelegateFileObject.java Index: DelegateFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/DelegateFileObject.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- DelegateFileObject.java 21 Feb 2003 13:16:39 -0000 1.5 +++ DelegateFileObject.java 23 Feb 2003 00:40:38 -0000 1.6 @@ -119,14 +119,18 @@ maybeTypeChanged( oldType ); } + /** + * Checks whether the file's type has changed, and fires the appropriate + * events. + */ private void maybeTypeChanged( final FileType oldType ) throws Exception { final FileType newType = doGetType(); - if ( oldType == null && newType != null ) + if ( oldType == FileType.IMAGINARY && newType != FileType.IMAGINARY ) { handleCreate( newType ); } - else if ( oldType != null && newType == null ) + else if ( oldType != FileType.IMAGINARY && newType == FileType.IMAGINARY ) { handleDelete(); } @@ -140,17 +144,16 @@ { if ( file != null ) { - if ( file.exists() ) - { - return file.getType(); - } + return file.getType(); } else if ( children.size() > 0 ) { return FileType.FOLDER; } - - return null; + else + { + return FileType.IMAGINARY; + } } /** 1.14 +3 -4 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java Index: FtpFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- FtpFileObject.java 13 Feb 2003 04:28:45 -0000 1.13 +++ FtpFileObject.java 23 Feb 2003 00:40:38 -0000 1.14 @@ -208,14 +208,13 @@ { if ( fileInfo == null ) { - // Does not exist - return null; + return FileType.IMAGINARY; } - if ( fileInfo.isDirectory() ) + else if ( fileInfo.isDirectory() ) { return FileType.FOLDER; } - if ( fileInfo.isFile() ) + else if ( fileInfo.isFile() ) { return FileType.FILE; } 1.10 +3 -3 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.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- LocalFile.java 12 Feb 2003 07:56:15 -0000 1.9 +++ LocalFile.java 23 Feb 2003 00:40:38 -0000 1.10 @@ -118,13 +118,13 @@ { if ( !file.exists() ) { - return null; + return FileType.IMAGINARY; } - if ( file.isDirectory() ) + else if ( file.isDirectory() ) { return FileType.FOLDER; } - if ( file.isFile() ) + else if ( file.isFile() ) { return FileType.FILE; } 1.2 +3 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java Index: SftpFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/sftp/SftpFileObject.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- SftpFileObject.java 20 Feb 2003 07:30:36 -0000 1.1 +++ SftpFileObject.java 23 Feb 2003 00:40:38 -0000 1.2 @@ -112,8 +112,9 @@ if ( attrs == null ) { // TODO - not quite true, but ChannelSftp.stat() swallows exceptions - return null; + return FileType.IMAGINARY; } + if ( ( attrs.getFlags() & SftpATTRS.SSH_FILEXFER_ATTR_PERMISSIONS ) == 0 ) { throw new FileSystemException( "vfs.provider.sftp/unknown-permissions.error" ); 1.9 +4 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileObject.java Index: SmbFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileObject.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SmbFileObject.java 12 Feb 2003 07:56:16 -0000 1.8 +++ SmbFileObject.java 23 Feb 2003 00:40:39 -0000 1.9 @@ -106,16 +106,17 @@ { if ( !file.exists() ) { - return null; + return FileType.IMAGINARY; } - if ( file.isDirectory() ) + else if ( file.isDirectory() ) { return FileType.FOLDER; } - if ( file.isFile() ) + else if ( file.isFile() ) { return FileType.FILE; } + throw new FileSystemException( "vfs.provider.smb/get-type.error", getName() ); } 1.6 +2 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/url/UrlFileObject.java Index: UrlFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/url/UrlFileObject.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- UrlFileObject.java 12 Feb 2003 07:56:17 -0000 1.5 +++ UrlFileObject.java 23 Feb 2003 00:40:39 -0000 1.6 @@ -110,7 +110,7 @@ } catch ( final FileNotFoundException e ) { - return null; + return FileType.IMAGINARY; } return FileType.FILE; 1.5 +3 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java Index: WebdavFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/webdav/WebdavFileObject.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- WebdavFileObject.java 21 Feb 2003 13:08:59 -0000 1.4 +++ WebdavFileObject.java 23 Feb 2003 00:40:39 -0000 1.5 @@ -116,7 +116,7 @@ final int status = fileSystem.getClient().executeMethod( optionsMethod ); if ( status < 200 || status > 299 ) { - return null; + return FileType.IMAGINARY; } resource.getHttpURL().setPath( optionsMethod.getPath() ); @@ -132,7 +132,7 @@ } if ( !exists ) { - return null; + return FileType.IMAGINARY; } // Get the properties of the resource 1.12 +1 -1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileObject.java Index: ZipFileObject.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileObject.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- ZipFileObject.java 12 Feb 2003 07:56:17 -0000 1.11 +++ ZipFileObject.java 23 Feb 2003 00:40:39 -0000 1.12 @@ -89,7 +89,7 @@ file = zipFile; if ( file == null ) { - type = null; + type = FileType.IMAGINARY; } } 1.8 +2 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java Index: AbstractSyncTask.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/tasks/AbstractSyncTask.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- AbstractSyncTask.java 12 Feb 2003 07:56:17 -0000 1.7 +++ AbstractSyncTask.java 23 Feb 2003 00:40:39 -0000 1.8 @@ -300,7 +300,7 @@ } final SourceInfo src = (SourceInfo)srcFiles.get( 0 ); final FileObject srcFile = resolveFile( src.file ); - if ( !srcFile.exists() || srcFile.getType() != FileType.FILE ) + if ( srcFile.getType() != FileType.FILE ) { final String message = Messages.getString( "vfs.tasks/sync.source-not-file.error", srcFile ); 1.7 +3 -4 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/tasks/ShowFileTask.java Index: ShowFileTask.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/tasks/ShowFileTask.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ShowFileTask.java 12 Feb 2003 07:56:18 -0000 1.6 +++ ShowFileTask.java 23 Feb 2003 00:40:39 -0000 1.7 @@ -61,7 +61,6 @@ import java.util.Date; import org.apache.commons.vfs.FileContent; import org.apache.commons.vfs.FileObject; -import org.apache.commons.vfs.FileType; import org.apache.tools.ant.BuildException; /** @@ -143,7 +142,7 @@ if ( file.exists() ) { final String newPrefix = prefix + INDENT; - if ( file.getType() == FileType.FILE ) + if ( file.getType().hasContent() ) { final FileContent content = file.getContent(); log( newPrefix + "Content-Length: " + content.getSize() ); @@ -154,7 +153,7 @@ logContent( file, newPrefix ); } } - else + if ( file.getType().hasChildren() ) { final FileObject[] children = file.getChildren(); for ( int i = 0; i < children.length; i++ ) --------------------------------------------------------------------- To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org For additional commands, e-mail: commons-dev-help@jakarta.apache.org