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 2003/02/12 03:05:20 UTC
cvs commit: jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip ZipFileName.java
adammurdoch 2003/02/11 18:05:20
Modified: vfs/src/java/org/apache/commons/vfs/impl
VirtualFileProvider.java
vfs/src/java/org/apache/commons/vfs/provider
DefaultFileName.java GenericFileName.java
LayeredFileName.java
vfs/src/java/org/apache/commons/vfs/provider/ftp
FtpFileName.java
vfs/src/java/org/apache/commons/vfs/provider/local
LocalFileName.java
vfs/src/java/org/apache/commons/vfs/provider/smb
SmbFileName.java
vfs/src/java/org/apache/commons/vfs/provider/temp
TemporaryFileProvider.java
vfs/src/java/org/apache/commons/vfs/provider/url
UrlFileProvider.java
vfs/src/java/org/apache/commons/vfs/provider/zip
ZipFileName.java
Added: vfs/src/java/org/apache/commons/vfs/provider
BasicFileName.java
Log:
Some tidy-us to the FileName hierarchy:
- The root URI for a DefaultFileName is assembled lazily, rather than being
supplied to the constructor.
- Implemented createName() factory method for all subclasses of DefaultFileName.
- SmbFileName and FtpFileName don't include the port in the root URI if the port
is the default for the protocol.
- Added BasicFileName, a FileName implementation made up of a root URI and path.
Revision Changes Path
1.4 +4 -5 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/VirtualFileProvider.java
Index: VirtualFileProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/impl/VirtualFileProvider.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- VirtualFileProvider.java 23 Jan 2003 12:27:23 -0000 1.3
+++ VirtualFileProvider.java 12 Feb 2003 02:05:19 -0000 1.4
@@ -60,6 +60,7 @@
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.provider.AbstractVfsContainer;
import org.apache.commons.vfs.provider.DefaultFileName;
+import org.apache.commons.vfs.provider.BasicFileName;
/**
@@ -78,9 +79,7 @@
throws FileSystemException
{
final FileName rootName =
- new DefaultFileName( rootFile.getName().getScheme(),
- rootFile.getName().getURI(),
- FileName.ROOT_PATH );
+ new BasicFileName( rootFile.getName(), FileName.ROOT_PATH );
final VirtualFileSystem fs = new VirtualFileSystem( rootName );
addComponent( fs );
fs.addJunction( FileName.ROOT_PATH, rootFile );
@@ -93,7 +92,7 @@
public FileObject createFileSystem( final String rootUri ) throws FileSystemException
{
final FileName rootName =
- new DefaultFileName( rootUri, FileName.ROOT_PATH );
+ new BasicFileName( rootUri, FileName.ROOT_PATH );
final VirtualFileSystem fs = new VirtualFileSystem( rootName );
addComponent( fs );
return fs.getRoot();
1.9 +41 -41 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/DefaultFileName.java
Index: DefaultFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/DefaultFileName.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- DefaultFileName.java 24 Jan 2003 00:20:03 -0000 1.8
+++ DefaultFileName.java 12 Feb 2003 02:05:19 -0000 1.9
@@ -65,42 +65,26 @@
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
-public class DefaultFileName
+public abstract class DefaultFileName
implements FileName
{
public static final char separatorChar = UriParser.separatorChar;
public static final String separator = UriParser.separator;
private final String scheme;
- private final String rootUri;
private final String absPath;
// Cached stuff
private String uri;
private String baseName;
+ private String rootUri;
+ private String extension;
public DefaultFileName( final String scheme,
- final String rootUri,
final String absPath )
{
this.scheme = scheme;
this.absPath = absPath;
-
- // Remove trailing separator, if any
- if ( rootUri.endsWith( separator ) )
- {
- this.rootUri = rootUri.substring( 0, rootUri.length() - 1 );
- }
- else
- {
- this.rootUri = rootUri;
- }
- }
-
- public DefaultFileName( final String rootUri,
- final String absPath )
- {
- this( UriParser.extractScheme( rootUri ), rootUri, absPath );
}
/**
@@ -108,7 +92,7 @@
*/
public int hashCode()
{
- return ( rootUri.hashCode() ^ absPath.hashCode() );
+ return ( getRootURI().hashCode() ^ absPath.hashCode() );
}
/**
@@ -117,7 +101,7 @@
public boolean equals( final Object obj )
{
final DefaultFileName name = (DefaultFileName)obj;
- return ( rootUri.equals( name.rootUri ) && absPath.equals( absPath ) );
+ return ( getRootURI().equals( name.getRootURI() ) && absPath.equals( absPath ) );
}
/**
@@ -129,14 +113,14 @@
}
/**
- * Factory method for creating name instances. Can be overridden.
- *
- * @todo Implement this for all subclasses
+ * Factory method for creating name instances.
*/
- protected FileName createName( final String absPath )
- {
- return new DefaultFileName( scheme, rootUri, absPath );
- }
+ protected abstract FileName createName( String absPath );
+
+ /**
+ * Builds the root URI for this file name.
+ */
+ protected abstract void appendRootUri( StringBuffer buffer );
/**
* Returns the base name of the file.
@@ -251,7 +235,7 @@
{
if ( uri == null )
{
- uri = rootUri + absPath;
+ uri = getRootURI() + absPath;
}
return uri;
}
@@ -321,6 +305,19 @@
*/
public String getRootURI()
{
+ if ( rootUri == null )
+ {
+ final StringBuffer buffer = new StringBuffer();
+ appendRootUri( buffer );
+
+ // Remove trailing separator, if any
+ if ( buffer.charAt( buffer.length() - 1 ) == separatorChar )
+ {
+ buffer.deleteCharAt( buffer.length() - 1 );
+ }
+
+ rootUri = buffer.toString();
+ }
return rootUri;
}
@@ -347,17 +344,21 @@
*/
public String getExtension()
{
- getBaseName();
- final int pos = baseName.lastIndexOf( '.' );
- if ( ( pos == -1 ) || ( pos == baseName.length() - 1 ) )
+ if ( extension == null )
{
- // No extension
- return "";
- }
- else
- {
- return baseName.substring( 0, pos );
+ getBaseName();
+ final int pos = baseName.lastIndexOf( '.' );
+ if ( ( pos == -1 ) || ( pos == baseName.length() - 1 ) )
+ {
+ // No extension
+ extension = "";
+ }
+ else
+ {
+ extension = baseName.substring( 0, pos );
+ }
}
+ return extension;
}
/**
@@ -365,7 +366,7 @@
*/
public boolean isAncestor( final FileName ancestor )
{
- if ( !ancestor.getRootURI().equals( rootUri ) )
+ if ( !ancestor.getRootURI().equals( getRootURI() ) )
{
return false;
}
@@ -386,7 +387,7 @@
public boolean isDescendent( final FileName descendent,
final NameScope scope )
{
- if ( !descendent.getRootURI().equals( rootUri ) )
+ if ( !descendent.getRootURI().equals( getRootURI() ) )
{
return false;
}
@@ -448,5 +449,4 @@
return true;
}
-
}
1.3 +16 -17 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/GenericFileName.java
Index: GenericFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/GenericFileName.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- GenericFileName.java 24 Jan 2003 00:20:03 -0000 1.2
+++ GenericFileName.java 12 Feb 2003 02:05:19 -0000 1.3
@@ -65,7 +65,7 @@
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
-public class GenericFileName
+public abstract class GenericFileName
extends DefaultFileName
{
private final String userInfo;
@@ -73,13 +73,12 @@
private final String port;
protected GenericFileName( final String scheme,
- final String rootUri,
final String hostName,
final String port,
final String userInfo,
final String path )
{
- super( scheme, rootUri, path );
+ super( scheme, path );
this.hostName = hostName;
this.port = port;
this.userInfo = userInfo;
@@ -103,6 +102,9 @@
return port;
}
+ /** Returns the default port for this file name. */
+ public abstract String getDefaultPort();
+
/**
* Extracts the scheme, userinfo, hostname and port components of a
* generic URI.
@@ -241,25 +243,22 @@
}
/**
- * Assembles a generic URI, appending to the supplied StringBuffer.
+ * Builds the root URI for this file name.
*/
- protected static void appendRootUri( final Authority auth,
- final StringBuffer rootUri )
+ protected void appendRootUri( final StringBuffer buffer )
{
- rootUri.append( auth.scheme );
- rootUri.append( "://" );
- final String userInfo = auth.userInfo;
+ buffer.append( getScheme() );
+ buffer.append( "://" );
if ( userInfo != null && userInfo.length() != 0 )
{
- rootUri.append( userInfo );
- rootUri.append( "@" );
+ buffer.append( userInfo );
+ buffer.append( "@" );
}
- rootUri.append( auth.hostName );
- final String port = auth.port;
- if ( port != null && port.length() > 0 )
+ buffer.append( hostName );
+ if ( port != null && port.length() > 0 && !port.equals( getDefaultPort() ) )
{
- rootUri.append( ":" );
- rootUri.append( port );
+ buffer.append( ":" );
+ buffer.append( port );
}
}
1.3 +3 -4 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/LayeredFileName.java
Index: LayeredFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/LayeredFileName.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LayeredFileName.java 24 Jan 2003 00:20:03 -0000 1.2
+++ LayeredFileName.java 12 Feb 2003 02:05:19 -0000 1.3
@@ -61,17 +61,16 @@
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision$ $Date$
*/
-public class LayeredFileName
+public abstract class LayeredFileName
extends DefaultFileName
{
private final String outerUri;
protected LayeredFileName( final String scheme,
- final String rootUri,
final String outerUri,
final String path )
{
- super( scheme, rootUri, path );
+ super( scheme, path );
this.outerUri = outerUri;
}
1.1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/BasicFileName.java
Index: BasicFileName.java
===================================================================
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
*/
package org.apache.commons.vfs.provider;
import org.apache.commons.vfs.FileName;
import java.net.URL;
/**
* A simple file name, made up of a root URI and an absolute path.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2003/02/12 02:05:19 $
*/
public class BasicFileName
extends DefaultFileName
{
private final String rootUri;
public BasicFileName( final String rootUri, final String path )
{
this( UriParser.extractScheme( rootUri ), rootUri, path );
}
public BasicFileName( final String scheme,
final String rootUri,
final String path )
{
super( scheme, path );
this.rootUri = rootUri;
}
public BasicFileName( final FileName rootUri, final String path )
{
this( rootUri.getScheme(), rootUri.getURI(), path );
}
public BasicFileName( final URL rootUrl, final String path )
{
this( rootUrl.getProtocol(), rootUrl.toExternalForm(), path );
}
/**
* Factory method for creating name instances.
*/
protected FileName createName( final String path )
{
return new BasicFileName( getScheme(), rootUri, path );
}
/**
* Builds the root URI for this file name.
*/
protected void appendRootUri( final StringBuffer buffer )
{
buffer.append( rootUri );
}
}
1.3 +23 -16 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileName.java
Index: FtpFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileName.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- FtpFileName.java 24 Jan 2003 00:20:04 -0000 1.2
+++ FtpFileName.java 12 Feb 2003 02:05:19 -0000 1.3
@@ -58,6 +58,7 @@
import org.apache.commons.vfs.provider.GenericFileName;
import org.apache.commons.vfs.provider.UriParser;
import org.apache.commons.vfs.FileSystemException;
+import org.apache.commons.vfs.FileName;
/**
* An FTP URI. Splits userinfo (see {@link #getUserInfo}) into username and
@@ -73,7 +74,6 @@
private final String password;
private FtpFileName( final String scheme,
- final String rootUri,
final String hostName,
final String port,
final String userInfo,
@@ -81,7 +81,7 @@
final String password,
final String path )
{
- super( scheme, rootUri, hostName, port, userInfo, path );
+ super( scheme, hostName, port, userInfo, path );
this.password = password;
this.userName = userName;
}
@@ -103,13 +103,6 @@
UriParser.normalisePath( name );
final String path = name.toString();
- // Drop the port if it is 21
- final String port = auth.port;
- if ( port != null && port.equals( "21" ) )
- {
- auth.port = null;
- }
-
// Split up the userinfo into a username and password
// TODO - push this into GenericFileName
final String userInfo = auth.userInfo;
@@ -135,13 +128,7 @@
password = null;
}
- // Now build the root URI
- final StringBuffer buffer = new StringBuffer();
- appendRootUri( auth, buffer );
- final String rootUri = buffer.toString();
-
return new FtpFileName( auth.scheme,
- rootUri,
auth.hostName,
auth.port,
auth.userInfo,
@@ -164,5 +151,25 @@
public String getPassword()
{
return password;
+ }
+
+ /** Returns the default port for this file name. */
+ public String getDefaultPort()
+ {
+ return "21";
+ }
+
+ /**
+ * Factory method for creating name instances.
+ */
+ protected FileName createName( final String path )
+ {
+ return new FtpFileName( getScheme(),
+ getHostName(),
+ getPort(),
+ getUserInfo(),
+ userName,
+ password,
+ path );
}
}
1.3 +22 -11 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/LocalFileName.java
Index: LocalFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/LocalFileName.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- LocalFileName.java 24 Jan 2003 00:20:04 -0000 1.2
+++ LocalFileName.java 12 Feb 2003 02:05:19 -0000 1.3
@@ -56,6 +56,7 @@
package org.apache.commons.vfs.provider.local;
import org.apache.commons.vfs.FileSystemException;
+import org.apache.commons.vfs.FileName;
import org.apache.commons.vfs.provider.DefaultFileName;
import org.apache.commons.vfs.provider.UriParser;
@@ -71,11 +72,10 @@
private final String rootFile;
private LocalFileName( final String scheme,
- final String rootUri,
final String rootFile,
final String path )
{
- super( scheme, rootUri, path );
+ super( scheme, path );
this.rootFile = rootFile;
}
@@ -104,14 +104,7 @@
UriParser.normalisePath( name );
final String path = name.toString();
- // Build the root URI
- final StringBuffer buffer = new StringBuffer();
- buffer.append( scheme );
- buffer.append( "://" );
- buffer.append( rootFile );
- final String rootUri = buffer.toString();
-
- return new LocalFileName( scheme, rootUri, rootFile, path );
+ return new LocalFileName( scheme, rootFile, path );
}
/**
@@ -120,5 +113,23 @@
public String getRootFile()
{
return rootFile;
+ }
+
+ /**
+ * Factory method for creating name instances.
+ */
+ protected FileName createName( final String path )
+ {
+ return new LocalFileName( getScheme(), rootFile, path );
+ }
+
+ /**
+ * Builds the root URI for this file name.
+ */
+ protected void appendRootUri( final StringBuffer buffer )
+ {
+ buffer.append( getScheme() );
+ buffer.append( "://" );
+ buffer.append( rootFile );
}
}
1.3 +32 -13 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileName.java
Index: SmbFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileName.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- SmbFileName.java 24 Jan 2003 00:20:04 -0000 1.2
+++ SmbFileName.java 12 Feb 2003 02:05:19 -0000 1.3
@@ -58,6 +58,7 @@
import org.apache.commons.vfs.provider.GenericFileName;
import org.apache.commons.vfs.provider.UriParser;
import org.apache.commons.vfs.FileSystemException;
+import org.apache.commons.vfs.FileName;
/**
* An SMB URI. Adds a share name to the generic URI.
@@ -71,14 +72,13 @@
private final String share;
private SmbFileName( final String scheme,
- final String rootUri,
final String hostName,
final String port,
final String userInfo,
final String share,
final String path )
{
- super( scheme, rootUri, hostName, port, userInfo, path );
+ super( scheme, hostName, port, userInfo, path );
this.share = share;
}
@@ -93,8 +93,6 @@
// Extract the scheme and authority parts
final Authority auth = extractToPath( uri, name );
- // TODO - drop the default port
-
// Decode and adjust separators
UriParser.decode( name, 0, name.length() );
UriParser.fixSeparators( name );
@@ -111,15 +109,7 @@
UriParser.normalisePath( name );
final String path = name.toString();
- // Set the root URI
- StringBuffer buffer = new StringBuffer();
- appendRootUri( auth, buffer );
- buffer.append( '/' );
- buffer.append( share );
- final String rootUri = buffer.toString();
-
return new SmbFileName( auth.scheme,
- rootUri,
auth.hostName,
auth.port,
auth.userInfo,
@@ -133,5 +123,34 @@
public String getShare()
{
return share;
+ }
+
+ /** Returns the default port for this file name. */
+ public String getDefaultPort()
+ {
+ return "139";
+ }
+
+ /**
+ * Builds the root URI for this file name.
+ */
+ protected void appendRootUri( final StringBuffer buffer )
+ {
+ super.appendRootUri( buffer );
+ buffer.append( '/' );
+ buffer.append( share );
+ }
+
+ /**
+ * Factory method for creating name instances.
+ */
+ protected FileName createName( final String path )
+ {
+ return new SmbFileName( getScheme(),
+ getHostName(),
+ getPort(),
+ getUserInfo(),
+ share,
+ path );
}
}
1.6 +3 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/temp/TemporaryFileProvider.java
Index: TemporaryFileProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/temp/TemporaryFileProvider.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- TemporaryFileProvider.java 24 Jan 2003 00:20:04 -0000 1.5
+++ TemporaryFileProvider.java 12 Feb 2003 02:05:20 -0000 1.6
@@ -61,7 +61,7 @@
import org.apache.commons.vfs.FileSystem;
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.provider.AbstractFileSystemProvider;
-import org.apache.commons.vfs.provider.DefaultFileName;
+import org.apache.commons.vfs.provider.BasicFileName;
import org.apache.commons.vfs.provider.FileProvider;
import org.apache.commons.vfs.provider.UriParser;
import org.apache.commons.vfs.provider.local.LocalFileSystem;
@@ -109,7 +109,7 @@
rootFile = getContext().getTemporaryFileStore().allocateFile( "tempfs" );
}
final FileName rootName =
- new DefaultFileName( scheme, scheme + ":", FileName.ROOT_PATH );
+ new BasicFileName( scheme, scheme + ":", FileName.ROOT_PATH );
filesystem = new LocalFileSystem( rootName, rootFile.getAbsolutePath() );
addFileSystem( this, filesystem );
}
1.11 +3 -4 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/url/UrlFileProvider.java
Index: UrlFileProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/url/UrlFileProvider.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- UrlFileProvider.java 23 Jan 2003 12:27:26 -0000 1.10
+++ UrlFileProvider.java 12 Feb 2003 02:05:20 -0000 1.11
@@ -63,6 +63,7 @@
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.provider.AbstractFileSystemProvider;
import org.apache.commons.vfs.provider.DefaultFileName;
+import org.apache.commons.vfs.provider.BasicFileName;
/**
* A file provider backed by Java's URL API.
@@ -88,9 +89,7 @@
if ( fs == null )
{
final FileName rootName =
- new DefaultFileName( rootUrl.getProtocol(),
- rootUrl.toExternalForm(),
- FileName.ROOT_PATH );
+ new BasicFileName( rootUrl, FileName.ROOT_PATH );
fs = new UrlFileSystem( rootName );
addFileSystem( rootUrl, fs );
}
1.3 +15 -11 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileName.java
Index: ZipFileName.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileName.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ZipFileName.java 24 Jan 2003 00:20:04 -0000 1.2
+++ ZipFileName.java 12 Feb 2003 02:05:20 -0000 1.3
@@ -56,6 +56,7 @@
package org.apache.commons.vfs.provider.zip;
import org.apache.commons.vfs.FileSystemException;
+import org.apache.commons.vfs.FileName;
import org.apache.commons.vfs.provider.LayeredFileName;
import org.apache.commons.vfs.provider.UriParser;
@@ -74,23 +75,26 @@
final String zipFileUri,
final String path )
{
- super( scheme,
- formatRootUri( scheme, zipFileUri ),
- zipFileUri, path );
+ super( scheme, zipFileUri, path );
}
/**
- * Assembles the root URI for a Zip file.
+ * Builds the root URI for this file name.
*/
- private static String formatRootUri( final String scheme,
- final String outerFileUri )
+ protected void appendRootUri( final StringBuffer buffer )
{
- final StringBuffer buffer = new StringBuffer();
- buffer.append( scheme );
+ buffer.append( getScheme() );
buffer.append( ":" );
- UriParser.appendEncoded( buffer, outerFileUri, ZIP_URL_RESERVED_CHARS );
+ UriParser.appendEncoded( buffer, getOuterUri(), ZIP_URL_RESERVED_CHARS );
buffer.append( "!" );
- return buffer.toString();
+ }
+
+ /**
+ * Factory method for creating name instances.
+ */
+ protected FileName createName( final String path )
+ {
+ return new ZipFileName( getScheme(), getOuterUri(), path );
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org