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/01/23 13:33:05 UTC
cvs commit: jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip ZipFileName.java ZipFileSystemProvider.java ZipFileNameParser.java
adammurdoch 2003/01/23 04:33:04
Modified: vfs/src/java/org/apache/commons/vfs/provider/ftp
FtpFileSystemProvider.java
vfs/src/java/org/apache/commons/vfs/provider/jar
JarFileSystemProvider.java
vfs/src/java/org/apache/commons/vfs/provider/local
DefaultLocalFileSystemProvider.java
vfs/src/java/org/apache/commons/vfs/provider/smb
SmbFileSystemProvider.java
vfs/src/java/org/apache/commons/vfs/provider/zip
ZipFileSystemProvider.java
Added: vfs/src/java/org/apache/commons/vfs/provider
GenericFileName.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/zip
ZipFileName.java
Removed: vfs/src/java/org/apache/commons/vfs/provider GenericUri.java
vfs/src/java/org/apache/commons/vfs/provider/ftp FtpUri.java
vfs/src/java/org/apache/commons/vfs/provider/local
LocalFileUri.java
vfs/src/java/org/apache/commons/vfs/provider/smb SmbUri.java
vfs/src/java/org/apache/commons/vfs/provider/zip
ZipFileNameParser.java
Log:
Renamed *Uri to *FileName.
Revision Changes Path
1.1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/GenericFileName.java
Index: GenericFileName.java
===================================================================
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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.FileSystemException;
/**
* A file name that represents a 'generic' URI, as per RFC 2396. Consists of
* a scheme, userinfo (typically username and password), hostname, port, and
* path.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2003/01/23 12:33:02 $
*/
public class GenericFileName
extends DefaultFileName
{
private String userInfo;
private String hostName;
private String port;
/** Returns the user info part of the URI. */
public String getUserInfo()
{
return userInfo;
}
/** Sets the user info part of the URI. */
public void setUserInfo( final String userInfo )
{
this.userInfo = userInfo;
}
/** Returns the host name part of the URI. */
public String getHostName()
{
return hostName;
}
/** Sets the host name part of the URI. */
public void setHostName( final String hostName )
{
this.hostName = hostName;
}
/** Returns the port part of the URI. */
public String getPort()
{
return port;
}
/** Sets the port part of the URI. */
public void setPort( final String port )
{
this.port = port;
}
/**
* Parses a generic URI. Briefly, a generic URI looks like:
*
* <pre>
* <scheme> '://' [ <userinfo> '@' ] <hostname> [ ':' <port> ] '/' <path>
* </pre>
*
* <p>This method differs from the RFC, in that either / or \ is allowed
* as a path separator.
*
* @param uri
* The URI to parse.
*/
protected void parseGenericUri( final String uri )
throws FileSystemException
{
final StringBuffer name = new StringBuffer();
// Extract the scheme and authority parts
extractToPath( uri, name );
// Decode and normalise the file name
decode( name, 0, name.length() );
normalisePath( name );
setPath( name.toString() );
}
/**
* Extracts the scheme, userinfo, hostname and port components of a
* generic URI.
*
* @param uri
* The absolute URI to parse.
*
* @param name
* Used to return the remainder of the URI.
*/
protected void extractToPath( final String uri,
final StringBuffer name )
throws FileSystemException
{
// Extract the scheme
final String scheme = extractScheme( uri, name );
setScheme( scheme );
// Expecting "//"
if ( name.length() < 2 || name.charAt( 0 ) != '/' || name.charAt( 1 ) != '/' )
{
throw new FileSystemException( "vfs.provider/missing-double-slashes.error", uri );
}
name.delete( 0, 2 );
// Extract userinfo
final String userInfo = extractUserInfo( name );
setUserInfo( userInfo );
// Extract hostname, and normalise
final String hostName = extractHostName( name );
if ( hostName == null )
{
throw new FileSystemException( "vfs.provider/missing-hostname.error", uri );
}
setHostName( hostName.toLowerCase() );
// Extract port
final String port = extractPort( name );
if ( port != null && port.length() == 0 )
{
throw new FileSystemException( "vfs.provider/missing-port.error", uri );
}
setPort( port );
// Expecting '/' or empty name
if ( name.length() > 0 && name.charAt( 0 ) != '/' )
{
throw new FileSystemException( "vfs.provider/missing-hostname-path-sep.error", uri );
}
}
/**
* Extracts the user info from a URI. The <scheme>:// part has been removed
* already.
*/
protected String extractUserInfo( final StringBuffer name )
{
final int maxlen = name.length();
for ( int pos = 0; pos < maxlen; pos++ )
{
final char ch = name.charAt( pos );
if ( ch == '@' )
{
// Found the end of the user info
String userInfo = name.substring( 0, pos );
name.delete( 0, pos + 1 );
return userInfo;
}
if ( ch == '/' || ch == '?' )
{
// Not allowed in user info
break;
}
}
// Not found
return null;
}
/**
* Extracts the hostname from a URI. The <scheme>://<userinfo>@ part has
* been removed.
*/
protected String extractHostName( final StringBuffer name )
{
final int maxlen = name.length();
int pos = 0;
for ( ; pos < maxlen; pos++ )
{
final char ch = name.charAt( pos );
if ( ch == '/' || ch == ';' || ch == '?' || ch == ':'
|| ch == '@' || ch == '&' || ch == '=' || ch == '+'
|| ch == '$' || ch == ',' )
{
break;
}
}
if ( pos == 0 )
{
return null;
}
final String hostname = name.substring( 0, pos );
name.delete( 0, pos );
return hostname;
}
/**
* Extracts the port from a URI. The <scheme>://<userinfo>@<hostname>
* part has been removed.
*/
protected String extractPort( final StringBuffer name )
{
if ( name.length() < 1 || name.charAt( 0 ) != ':' )
{
return null;
}
final int maxlen = name.length();
int pos = 1;
for ( ; pos < maxlen; pos++ )
{
final char ch = name.charAt( pos );
if ( ch < '0' || ch > '9' )
{
break;
}
}
final String port = name.substring( 1, pos );
name.delete( 0, pos );
return port;
}
/**
* Assembles a generic URI, appending to the supplied StringBuffer.
*/
protected void appendRootUri( final StringBuffer rootUri )
{
rootUri.append( getScheme() );
rootUri.append( "://" );
final String userInfo = getUserInfo();
if ( userInfo != null && userInfo.length() != 0 )
{
rootUri.append( userInfo );
rootUri.append( "@" );
}
rootUri.append( getHostName() );
final String port = getPort();
if ( port != null && port.length() > 0 )
{
rootUri.append( ":" );
rootUri.append( port );
}
}
}
1.10 +2 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileSystemProvider.java
Index: FtpFileSystemProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileSystemProvider.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- FtpFileSystemProvider.java 23 Jan 2003 12:27:23 -0000 1.9
+++ FtpFileSystemProvider.java 23 Jan 2003 12:33:02 -0000 1.10
@@ -75,7 +75,7 @@
protected FileName parseUri( final String uri )
throws FileSystemException
{
- return new FtpUri( uri );
+ return new FtpFileName( uri );
}
/**
@@ -84,7 +84,7 @@
protected FileSystem doCreateFileSystem( final FileName name )
throws FileSystemException
{
- final FtpUri ftpUri = (FtpUri)name;
+ final FtpFileName ftpUri = (FtpFileName)name;
// Build the root name
final FileName rootName = ftpUri.resolveName( FileName.ROOT_PATH );
1.1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/ftp/FtpFileName.java
Index: FtpFileName.java
===================================================================
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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.ftp;
import org.apache.commons.vfs.provider.GenericFileName;
import org.apache.commons.vfs.FileSystemException;
/**
* An FTP URI. Splits userinfo (see {@link #getUserInfo}) into username and
* password.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2003/01/23 12:33:02 $
*/
class FtpFileName
extends GenericFileName
{
private String userName;
private String password;
public FtpFileName( final String uri )
throws FileSystemException
{
// FTP URI are generic URI (as per RFC 2396)
parseGenericUri( uri );
// Drop the port if it is 21
final String port = getPort();
if ( port != null && port.equals( "21" ) )
{
setPort( null );
}
// Split up the userinfo into a username and password
// TODO - push this into GenericFileName
final String userInfo = getUserInfo();
if ( userInfo != null )
{
int idx = userInfo.indexOf( ':' );
if ( idx == -1 )
{
setUserName( userInfo );
}
else
{
String userName = userInfo.substring( 0, idx );
String password = userInfo.substring( idx + 1 );
setUserName( userName );
setPassword( password );
}
}
// Now build the root URI
final StringBuffer rootUri = new StringBuffer();
appendRootUri( rootUri );
setRootURI( rootUri.toString() );
}
public String getUserName()
{
return userName;
}
public void setUserName( final String userName )
{
this.userName = userName;
}
public String getPassword()
{
return password;
}
public void setPassword( final String password )
{
this.password = password;
}
}
1.9 +3 -3 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/jar/JarFileSystemProvider.java
Index: JarFileSystemProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/jar/JarFileSystemProvider.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JarFileSystemProvider.java 23 Jan 2003 12:27:24 -0000 1.8
+++ JarFileSystemProvider.java 23 Jan 2003 12:33:02 -0000 1.9
@@ -59,7 +59,7 @@
import org.apache.commons.vfs.FileObject;
import org.apache.commons.vfs.FileSystem;
import org.apache.commons.vfs.FileSystemException;
-import org.apache.commons.vfs.provider.zip.ZipFileNameParser;
+import org.apache.commons.vfs.provider.zip.ZipFileName;
import org.apache.commons.vfs.provider.zip.ZipFileSystemProvider;
/**
@@ -85,7 +85,7 @@
throws FileSystemException
{
final FileName name =
- new ZipFileNameParser( scheme, file.getName().getURI(), FileName.ROOT_PATH );
+ new ZipFileName( scheme, file.getName().getURI(), FileName.ROOT_PATH );
return new JarFileSystem( name, file );
}
}
1.13 +2 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/DefaultLocalFileSystemProvider.java
Index: DefaultLocalFileSystemProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/DefaultLocalFileSystemProvider.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- DefaultLocalFileSystemProvider.java 23 Jan 2003 12:27:24 -0000 1.12
+++ DefaultLocalFileSystemProvider.java 23 Jan 2003 12:33:02 -0000 1.13
@@ -123,7 +123,7 @@
protected FileName parseUri( final String uri )
throws FileSystemException
{
- return new LocalFileUri( uri, parser );
+ return new LocalFileName( uri, parser );
}
/**
@@ -133,7 +133,7 @@
throws FileSystemException
{
// Build the name of the root file.
- final LocalFileUri fileUri = (LocalFileUri)name;
+ final LocalFileName fileUri = (LocalFileName)name;
final String rootFile = fileUri.getRootFile();
// Create the file system
1.1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/local/LocalFileName.java
Index: LocalFileName.java
===================================================================
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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.local;
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.provider.DefaultFileName;
/**
* A local file URI.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2003/01/23 12:33:02 $
*/
class LocalFileName
extends DefaultFileName
{
private String rootFile;
public LocalFileName( final String uri, final LocalFileNameParser parser )
throws FileSystemException
{
final StringBuffer name = new StringBuffer();
// Extract the scheme
final String scheme = extractScheme( uri, name );
setScheme( scheme );
// Remove encoding, and adjust the separators
decode( name, 0, name.length() );
fixSeparators( name );
// Extract the root prefix
final String rootFile = parser.extractRootPrefix( uri, name );
setRootFile( rootFile );
// Normalise the path
normalisePath( name );
setPath( name.toString() );
// Build the root URI
final StringBuffer rootUri = new StringBuffer();
rootUri.append( scheme );
rootUri.append( "://" );
rootUri.append( rootFile );
setRootURI( rootUri.toString() );
}
public String getRootFile()
{
return rootFile;
}
public void setRootFile( final String rootPrefix )
{
rootFile = rootPrefix;
}
}
1.10 +2 -2 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileSystemProvider.java
Index: SmbFileSystemProvider.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileSystemProvider.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SmbFileSystemProvider.java 23 Jan 2003 12:27:24 -0000 1.9
+++ SmbFileSystemProvider.java 23 Jan 2003 12:33:02 -0000 1.10
@@ -77,7 +77,7 @@
protected FileName parseUri( final String uri )
throws FileSystemException
{
- return new SmbUri( uri );
+ return new SmbFileName( uri );
}
/**
@@ -86,7 +86,7 @@
protected FileSystem doCreateFileSystem( final FileName name )
throws FileSystemException
{
- final SmbUri smbUri = (SmbUri)name;
+ final SmbFileName smbUri = (SmbFileName)name;
final FileName rootName = smbUri.resolveName( FileName.ROOT_PATH );
return new SmbFileSystem( rootName );
}
1.1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/smb/SmbFileName.java
Index: SmbFileName.java
===================================================================
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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.smb;
import org.apache.commons.vfs.provider.GenericFileName;
import org.apache.commons.vfs.FileSystemException;
/**
* An SMB URI. Adds a share name to the generic URI.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2003/01/23 12:33:02 $
*/
class SmbFileName
extends GenericFileName
{
private String share;
public SmbFileName( final String uri )
throws FileSystemException
{
final StringBuffer name = new StringBuffer();
// Extract the scheme and authority parts
extractToPath( uri, name );
// TODO - drop the default port
// Decode and adjust separators
decode( name, 0, name.length() );
fixSeparators( name );
// Extract the share
final String share = extractFirstElement( name );
if ( share == null )
{
throw new FileSystemException( "vfs.provider.smb/missing-share-name.error", uri );
}
setShare( share );
// Normalise the path
normalisePath( name );
// Set the path
setPath( name.toString() );
// Set the root URI
StringBuffer rootUri = new StringBuffer();
appendRootUri( rootUri );
rootUri.append( '/' );
rootUri.append( share );
setRootURI( rootUri.toString() );
}
public String getShare()
{
return share;
}
public void setShare( final String share )
{
this.share = share;
}
}
1.16 +2 -2 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.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- ZipFileSystemProvider.java 23 Jan 2003 12:27:28 -0000 1.15
+++ ZipFileSystemProvider.java 23 Jan 2003 12:33:04 -0000 1.16
@@ -79,7 +79,7 @@
protected FileName parseUri( final String uri )
throws FileSystemException
{
- return new ZipFileNameParser( uri );
+ return new ZipFileName( uri );
}
/**
@@ -94,7 +94,7 @@
throws FileSystemException
{
final FileName rootName =
- new ZipFileNameParser( scheme, file.getName().getURI(), FileName.ROOT_PATH );
+ new ZipFileName( scheme, file.getName().getURI(), FileName.ROOT_PATH );
return new ZipFileSystem( rootName, file );
}
}
1.1 jakarta-commons-sandbox/vfs/src/java/org/apache/commons/vfs/provider/zip/ZipFileName.java
Index: ZipFileName.java
===================================================================
/* ====================================================================
*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2002 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.zip;
import org.apache.commons.vfs.FileSystemException;
import org.apache.commons.vfs.provider.LayeredFileName;
/**
* A parser for Zip file names.
*
* @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
* @version $Revision: 1.1 $ $Date: 2003/01/23 12:33:04 $
*/
public class ZipFileName
extends LayeredFileName
{
private static final char[] ZIP_URL_RESERVED_CHARS = {'!'};
public ZipFileName( final String uri )
throws FileSystemException
{
final StringBuffer name = new StringBuffer();
// Extract the scheme
final String scheme = extractScheme( uri, name );
setScheme( scheme );
// Extract the Zip file URI
final String zipUri = extractZipName( name );
setOuterUri( zipUri );
// Decode and normalise the path
decode( name, 0, name.length() );
normalisePath( name );
setPath( name.toString() );
}
public ZipFileName( final String scheme,
final String outerFileUri,
final String path )
{
final StringBuffer rootUri = new StringBuffer();
rootUri.append( scheme );
rootUri.append( ":" );
appendEncoded( rootUri, outerFileUri, ZIP_URL_RESERVED_CHARS );
rootUri.append( "!" );
setRootURI( rootUri.toString() );
setPath( path );
}
/**
* Pops the root prefix off a URI, which has had the scheme removed.
*/
private static String extractZipName( final StringBuffer uri )
throws FileSystemException
{
// Looking for <name>!<abspath>
int maxlen = uri.length();
int pos = 0;
for ( ; pos < maxlen && uri.charAt( pos ) != '!'; pos++ )
{
}
// Extract the name
String prefix = uri.substring( 0, pos );
if ( pos < maxlen )
{
uri.delete( 0, pos + 1 );
}
else
{
uri.setLength( 0 );
}
// Decode the name
return decode( prefix );
}
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>