org.apache.commons.vfs2.provider
Class HostFileNameParser

java.lang.Object
  extended by org.apache.commons.vfs2.provider.AbstractFileNameParser
      extended by org.apache.commons.vfs2.provider.HostFileNameParser
All Implemented Interfaces:
FileNameParser
Direct Known Subclasses:
FtpFileNameParser, URLFileNameParser

public class HostFileNameParser
extends AbstractFileNameParser

Implementation for any url based filesystem.
Parses the url into user/password/host/port/path
Does not handle a query string (after ?)

Author:
Commons VFS team
See Also:
URLFileNameParser for the implementation which also handles the query string too

Nested Class Summary
protected static class HostFileNameParser.Authority
          Parsed authority info (scheme, hostname, userinfo, port)
 
Constructor Summary
HostFileNameParser(int defaultPort)
           
 
Method Summary
 boolean encodeCharacter(char ch)
          Check if a character needs encoding (%nn).
protected  java.lang.String extractHostName(java.lang.StringBuilder name)
          Extracts the hostname from a URI.
protected  int extractPort(java.lang.StringBuilder name, java.lang.String uri)
          Extracts the port from a URI.
protected  HostFileNameParser.Authority extractToPath(java.lang.String uri, java.lang.StringBuilder name)
          Extracts the scheme, userinfo, hostname and port components of a generic URI.
protected  java.lang.String extractUserInfo(java.lang.StringBuilder name)
          Extracts the user info from a URI.
 int getDefaultPort()
           
 FileName parseUri(VfsComponentContext context, FileName base, java.lang.String filename)
          parses a String into a filename.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

HostFileNameParser

public HostFileNameParser(int defaultPort)
Method Detail

getDefaultPort

public int getDefaultPort()

encodeCharacter

public boolean encodeCharacter(char ch)
Description copied from interface: FileNameParser
Check if a character needs encoding (%nn).

Specified by:
encodeCharacter in interface FileNameParser
Overrides:
encodeCharacter in class AbstractFileNameParser
Parameters:
ch - the character
Returns:
true if character should be encoded

parseUri

public FileName parseUri(VfsComponentContext context,
                         FileName base,
                         java.lang.String filename)
                  throws FileSystemException
Description copied from interface: FileNameParser
parses a String into a filename.

Parameters:
context - The component context.
base - The base FileName.
filename - The target file name.
Returns:
A FileName that represents the taret file.
Throws:
FileSystemException - if an error occurs parsing the URI.

extractToPath

protected HostFileNameParser.Authority extractToPath(java.lang.String uri,
                                                     java.lang.StringBuilder name)
                                              throws FileSystemException
Extracts the scheme, userinfo, hostname and port components of a generic URI.

Parameters:
uri - The absolute URI to parse.
name - Used to return the remainder of the URI.
Throws:
FileSystemException

extractUserInfo

protected java.lang.String extractUserInfo(java.lang.StringBuilder name)
Extracts the user info from a URI. The scheme:// part has been removed already.


extractHostName

protected java.lang.String extractHostName(java.lang.StringBuilder name)
Extracts the hostname from a URI. The scheme://userinfo@ part has been removed.


extractPort

protected int extractPort(java.lang.StringBuilder name,
                          java.lang.String uri)
                   throws FileSystemException
Extracts the port from a URI. The scheme://userinfo@hostname part has been removed.

Returns:
The port, or -1 if the URI does not contain a port.
Throws:
FileSystemException