commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ralph Goers <ralph.go...@dslextreme.com>
Subject [VFS] Re: svn commit: r814264 [1/2] - in /commons/proper/vfs/branches/VFS281: ./ core/src/main/java/org/apache/commons/vfs/ core/src/main/java/org/apache/commons/vfs/impl/ core/src/main/java/org/apache/commons/vfs/provider/ core/src/main/java/org/apache/commons/...
Date Sun, 13 Sep 2009 06:33:05 GMT
I'd appreciate feedback on this. I tried to maintain compatibility but  
I did this on a branch so it could be reviewed before breaking  
anything. The major change is that FileSystems with their own options  
extend FileSystemOptions instead of having a configbuilder class.  
FileSystemOptions for various providers can still be merged.

Also, I haven't tested "remote" file systems yet (ftp, http, webdav,  
etc).

Ralph

On Sep 12, 2009, at 11:26 PM, rgoers@apache.org wrote:

> Author: rgoers
> Date: Sun Sep 13 06:26:23 2009
> New Revision: 814264
>
> URL: http://svn.apache.org/viewvc?rev=814264&view=rev
> Log:
> Implement changes to address VFS-281
>
> Added:
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/DefaultFileSystemOptions.java   (contents, props changed)
>      - copied, changed from r805870, commons/proper/vfs/trunk/core/ 
> src/main/java/org/apache/commons/vfs/FileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystemOptions.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystemOptions.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystemOptions.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/res/ResourceFileSystemOptions.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/sftp/ProxyType.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/sftp/SftpFileSystemOptions.java
>      - copied, changed from r812334, commons/proper/vfs/branches/ 
> VFS281/core/src/main/java/org/apache/commons/vfs/provider/sftp/ 
> SftpFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/webdav/WebdavFileSystemOptions.java
> Modified:
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemManager.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemOptions.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/impl/DefaultFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/impl/DefaultFileSystemManager.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractFileSystem.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractOriginatingFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/FileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FTPClientWrapper.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpClientFactory.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystem.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpClientFactory.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystem.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileObject.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystem.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/res/ResourceFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/res/ResourceFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/sftp/SftpClientFactory.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/sftp/SftpFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/sftp/SftpFileSystem.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/sftp/SftpFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/webdav/WebdavFileObject.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/webdav/WebdavFileProvider.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/webdav/WebdavFileSystem.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/webdav/WebdavFileSystemConfigBuilder.java
>    commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/util/UserAuthenticatorUtils.java
>    commons/proper/vfs/branches/VFS281/core/src/test/java/org/apache/ 
> commons/vfs/provider/ftp/test/FtpProviderTestCase.java
>    commons/proper/vfs/branches/VFS281/core/src/test/java/org/apache/ 
> commons/vfs/provider/ram/test/CustomRamProviderTest.java
>    commons/proper/vfs/branches/VFS281/core/src/test/java/org/apache/ 
> commons/vfs/provider/sftp/test/SftpProviderTestCase.java
>    commons/proper/vfs/branches/VFS281/core/src/test/java/org/apache/ 
> commons/vfs/provider/webdav/test/WebdavProviderTestCase.java
>    commons/proper/vfs/branches/VFS281/core/src/test/java/org/apache/ 
> commons/vfs/provider/webdav/test/WebdavVersioningTests.java
>    commons/proper/vfs/branches/VFS281/core/src/test/java/org/apache/ 
> commons/vfs/util/DelegatingFileSystemOptionsBuilderTest.java
>    commons/proper/vfs/branches/VFS281/pom.xml
>
> Copied: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/DefaultFileSystemOptions.java (from r805870,  
> commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/ 
> FileSystemConfigBuilder.java)
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/DefaultFileSystemOptions.java?p2=commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/DefaultFileSystemOptions.java&p1=commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/FileSystemConfigBuilder.java&r1=805870&r2=814264&rev=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/ 
> vfs/FileSystemConfigBuilder.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/DefaultFileSystemOptions.java Sun Sep 13 06:26:23 2009
> @@ -19,10 +19,10 @@
> /**
>  * Abstract class which has the right to fill FileSystemOptions.
>  *
> - * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
> + * @author <a href="http://commons.apache.org/vfs/team- 
> list.html">Commons VFS team</a>
>  * @version $Revision$ $Date$
>  */
> -public abstract class FileSystemConfigBuilder
> +public class DefaultFileSystemOptions extends FileSystemOptions
> {
>     /** Default prefix to use when resolving system properties */
>     private static final String PREFIX = "vfs.";
> @@ -33,74 +33,93 @@
>     /** The prefix to use when resolving system properties */
>     private final String prefix;
>
> -    protected FileSystemConfigBuilder()
> +    /**
> +     *
> +     */
> +    protected DefaultFileSystemOptions()
>     {
>         this.prefix = PREFIX;
>     }
> -    protected FileSystemConfigBuilder(String component)
> +
> +    /**
> +     * @param component The component String;
> +     */
> +    protected DefaultFileSystemOptions(String component)
>     {
>         this.prefix = PREFIX + component;
>     }
>
>     /**
>      * The root URI of the file system.
> -     * @param opts The FileSystem options
>      * @param rootURI The creator name to be associated with the file.
>      */
> -    public void setRootURI(FileSystemOptions opts, String rootURI)
> +    public void setRootURI(String rootURI)
>     {
> -        setParam(opts, ROOTURI, rootURI);
> +        setParam(ROOTURI, rootURI);
>     }
>
>     /**
>      * Return the root URI of the file system.
> -     * @param opts The FileSystem options
>      * @return The root URI.
>      */
> -    public String getRootURI(FileSystemOptions opts)
> +    public String getRootURI()
>     {
> -        return getString(opts, ROOTURI);
> +        return getString(ROOTURI);
>     }
>
> +    /**
> +     * Sets the user authenticator to get authentication  
> informations.
> +     * @param userAuthenticator The UserAuthenticator.
> +     * @throws FileSystemException if an error occurs setting the  
> UserAuthenticator.
> +     */
> +    public void setUserAuthenticator(UserAuthenticator  
> userAuthenticator)
> +            throws FileSystemException
> +    {
> +        setParam("userAuthenticator", userAuthenticator);
> +    }
>
> -    protected void setParam(FileSystemOptions opts, String name,  
> Object value)
> +    /**
> +     * @see #setUserAuthenticator
> +     * @return The UserAuthenticator.
> +     */
> +    public UserAuthenticator getUserAuthenticator()
>     {
> -        opts.setOption(getConfigClass(), name, value);
> +        return (UserAuthenticator) getParam("userAuthenticator");
>     }
>
> -    protected Object getParam(FileSystemOptions opts, String name)
> +    protected void setParam(String name, Object value)
>     {
> -        if (opts == null)
> -        {
> -            return null;
> -        }
> +        setOption(this.getClass(), name, value);
> +    }
>
> -        return opts.getOption(getConfigClass(), name);
> +    protected Object getParam(String name)
> +    {
> +        return getOption(this.getClass(), name);
>     }
>
> -    protected boolean hasParam(FileSystemOptions opts, String name)
> +    protected boolean hasParam(String name)
>     {
> -        return opts != null && opts.hasOption(getConfigClass(),  
> name);
> +        return hasOption(this.getClass(), name);
>     }
>
> -    protected boolean hasObject(FileSystemOptions opts, String name)
> +    protected boolean hasObject(String name)
>     {
> -        return hasParam(opts, name) || System.getProperties 
> ().containsKey(PREFIX + name);
> +        return hasParam(name) || System.getProperties().containsKey 
> (PREFIX + name);
>     }
>
> -    protected Boolean getBoolean(FileSystemOptions opts, String name)
> +    protected Boolean getBoolean(String name)
>     {
> -        return getBoolean(opts, name, null);
> +        return getBoolean(name, null);
>     }
>
> -    protected boolean getBoolean(FileSystemOptions opts, String  
> name, boolean defaultValue)
> +    protected boolean getBoolean(String name, boolean defaultValue)
>     {
> -        return getBoolean(opts, name, new Boolean 
> (defaultValue)).booleanValue();
> +        return getBoolean(name, new Boolean 
> (defaultValue)).booleanValue();
>     }
>
> -    protected Boolean getBoolean(FileSystemOptions opts, String  
> name, Boolean defaultValue)
> +    protected Boolean getBoolean(String name, Boolean defaultValue)
>     {
> -        Boolean value = (Boolean) getParam(opts, name);
> +        Boolean value = (Boolean) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(PREFIX + name);
> @@ -113,19 +132,19 @@
>         return value;
>     }
>
> -    protected Byte getByte(FileSystemOptions opts, String name)
> +    protected Byte getByte(String name)
>     {
> -        return getByte(opts, name, null);
> +        return getByte(name, null);
>     }
>
> -    protected byte getByte(FileSystemOptions opts, String name,  
> byte defaultValue)
> +    protected byte getByte(String name, byte defaultValue)
>     {
> -        return getByte(opts, name, new Byte(defaultValue)).byteValue 
> ();
> +        return getByte(name, new Byte(defaultValue)).byteValue();
>     }
>
> -    protected Byte getByte(FileSystemOptions opts, String name,  
> Byte defaultValue)
> +    protected Byte getByte(String name, Byte defaultValue)
>     {
> -        Byte value = (Byte) getParam(opts, name);
> +        Byte value = (Byte) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -138,19 +157,19 @@
>         return value;
>     }
>
> -    protected Character getCharacter(FileSystemOptions opts, String  
> name)
> +    protected Character getCharacter(String name)
>     {
> -        return getCharacter(opts, name, null);
> +        return getCharacter(name, null);
>     }
>
> -    protected char getCharacter(FileSystemOptions opts, String  
> name, char defaultValue)
> +    protected char getCharacter(String name, char defaultValue)
>     {
> -        return getCharacter(opts, name, new Character 
> (defaultValue)).charValue();
> +        return getCharacter(name, new Character 
> (defaultValue)).charValue();
>     }
>
> -    protected Character getCharacter(FileSystemOptions opts, String  
> name, Character defaultValue)
> +    protected Character getCharacter(String name, Character  
> defaultValue)
>     {
> -        Character value = (Character) getParam(opts, name);
> +        Character value = (Character) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -163,19 +182,19 @@
>         return value;
>     }
>
> -    protected Double getDouble(FileSystemOptions opts, String name)
> +    protected Double getDouble(String name)
>     {
> -        return getDouble(opts, name, null);
> +        return getDouble(name, null);
>     }
>
> -    protected double getDouble(FileSystemOptions opts, String name,  
> double defaultValue)
> +    protected double getDouble(String name, double defaultValue)
>     {
> -        return getDouble(opts, name, new Double 
> (defaultValue)).doubleValue();
> +        return getDouble(name, new Double(defaultValue)).doubleValue 
> ();
>     }
>
> -    protected Double getDouble(FileSystemOptions opts, String name,  
> Double defaultValue)
> +    protected Double getDouble(String name, Double defaultValue)
>     {
> -        Double value = (Double) getParam(opts, name);
> +        Double value = (Double) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -188,19 +207,19 @@
>         return value;
>     }
>
> -    protected Float getFloat(FileSystemOptions opts, String name)
> +    protected Float getFloat(String name)
>     {
> -        return getFloat(opts, name, null);
> +        return getFloat(name, null);
>     }
>
> -    protected float getFloat(FileSystemOptions opts, String name,  
> float defaultValue)
> +    protected float getFloat(String name, float defaultValue)
>     {
> -        return getFloat(opts, name, new Float 
> (defaultValue)).floatValue();
> +        return getFloat(name, new Float(defaultValue)).floatValue();
>     }
>
> -    protected Float getFloat(FileSystemOptions opts, String name,  
> Float defaultValue)
> +    protected Float getFloat(String name, Float defaultValue)
>     {
> -        Float value = (Float) getParam(opts, name);
> +        Float value = (Float) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -213,19 +232,19 @@
>         return value;
>     }
>
> -    protected Integer getInteger(FileSystemOptions opts, String name)
> +    protected Integer getInteger(String name)
>     {
> -        return getInteger(opts, name, null);
> +        return getInteger(name, null);
>     }
>
> -    protected int getInteger(FileSystemOptions opts, String name,  
> int defaultValue)
> +    protected int getInteger(String name, int defaultValue)
>     {
> -        return getInteger(opts, name, new Integer 
> (defaultValue)).intValue();
> +        return getInteger(name, new Integer(defaultValue)).intValue 
> ();
>     }
>
> -    protected Integer getInteger(FileSystemOptions opts, String  
> name, Integer defaultValue)
> +    protected Integer getInteger(String name, Integer defaultValue)
>     {
> -        Integer value = (Integer) getParam(opts, name);
> +        Integer value = (Integer) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -238,19 +257,19 @@
>         return value;
>     }
>
> -    protected Long getLong(FileSystemOptions opts, String name)
> +    protected Long getLong(String name)
>     {
> -        return getLong(opts, name, null);
> +        return getLong(name, null);
>     }
>
> -    protected long getLong(FileSystemOptions opts, String name,  
> long defaultValue)
> +    protected long getLong(String name, long defaultValue)
>     {
> -        return getLong(opts, name, new Long(defaultValue)).longValue 
> ();
> +        return getLong(name, new Long(defaultValue)).longValue();
>     }
>
> -    protected Long getLong(FileSystemOptions opts, String name,  
> Long defaultValue)
> +    protected Long getLong(String name, Long defaultValue)
>     {
> -        Long value = (Long) getParam(opts, name);
> +        Long value = (Long) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -263,19 +282,19 @@
>         return value;
>     }
>
> -    protected Short getShort(FileSystemOptions opts, String name)
> +    protected Short getShort(String name)
>     {
> -        return getShort(opts, name, null);
> +        return getShort(name, null);
>     }
>
> -    protected short getShort(FileSystemOptions opts, String name,  
> short defaultValue)
> +    protected short getShort(String name, short defaultValue)
>     {
> -        return getShort(opts, name, new Short 
> (defaultValue)).shortValue();
> +        return getShort(name, new Short(defaultValue)).shortValue();
>     }
>
> -    protected Short getShort(FileSystemOptions opts, String name,  
> Short defaultValue)
> +    protected Short getShort(String name, Short defaultValue)
>     {
> -        Short value = (Short) getParam(opts, name);
> +        Short value = (Short) getParam(name);
>         if (value == null)
>         {
>             String str = System.getProperty(this.prefix + name);
> @@ -288,14 +307,14 @@
>         return value;
>     }
>
> -    protected String getString(FileSystemOptions opts, String name)
> +    protected String getString(String name)
>     {
> -        return getString(opts, name, null);
> +        return getString(name, null);
>     }
>
> -    protected String getString(FileSystemOptions opts, String name,  
> String defaultValue)
> +    protected String getString(String name, String defaultValue)
>     {
> -        String value = (String) getParam(opts, name);
> +        String value = (String) getParam(name);
>         if (value == null)
>         {
>             value = System.getProperty(this.prefix + name);
> @@ -306,6 +325,4 @@
>         }
>         return value;
>     }
> -
> -    protected abstract Class getConfigClass();
> -}
> +}
> \ No newline at end of file
>
> Propchange: commons/proper/vfs/branches/VFS281/core/src/main/java/ 
> org/apache/commons/vfs/DefaultFileSystemOptions.java
> ------------------------------------------------------------------------------
>    svn:eol-style = native
>
> Propchange: commons/proper/vfs/branches/VFS281/core/src/main/java/ 
> org/apache/commons/vfs/DefaultFileSystemOptions.java
> ------------------------------------------------------------------------------
>    svn:keywords = Date Author Id Revision HeadURL
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/FileSystemConfigBuilder.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/FileSystemConfigBuilder.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemConfigBuilder.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemConfigBuilder.java Sun Sep 13 06:26:23 2009
> @@ -21,6 +21,7 @@
>  *
>  * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
>  * @version $Revision$ $Date$
> + * @deprecated Use FileSystemOptions classes instead.
>  */
> public abstract class FileSystemConfigBuilder
> {
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/FileSystemManager.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/FileSystemManager.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemManager.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemManager.java Sun Sep 13 06:26:23 2009
> @@ -297,6 +297,14 @@
>     FileSystemConfigBuilder getFileSystemConfigBuilder(final String  
> scheme) throws FileSystemException;
>
>     /**
> +     * Get the FileSystemOptions for the specified scheme.
> +     * @param scheme The protocol.
> +     * @return The FileSystemOptions for the specified scheme.
> +     * @throws FileSystemException if an error occurs.
> +     */
> +    FileSystemOptions getFileSystemOptions(final String scheme)  
> throws FileSystemException;
> +
> +    /**
>      * Resolve the uri to a filename.
>      *
>      * @param uri The uri to resolve.
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/FileSystemOptions.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/FileSystemOptions.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemOptions.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/FileSystemOptions.java Sun Sep 13 06:26:23 2009
> @@ -26,14 +26,34 @@
>  *
>  * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
>  * @version $Revision$ $Date$
> - * @see  
> org.apache.commons.vfs.provider.sftp.SftpFileSystemConfigBuilder
> - * @see  
> org.apache.commons.vfs.provider.ftp.FtpFileSystemConfigBuilder
>  */
> -public final class FileSystemOptions implements Cloneable
> +public class FileSystemOptions implements Cloneable
> {
>     /** The options */
>     private Map options = new TreeMap();
>
> +    public static <T extends FileSystemOptions> T makeSpecific 
> (Class<T> clazz, FileSystemOptions fsOptions)
> +    {
> +        if (fsOptions == null)
> +        {
> +            return null;
> +        }
> +        if (clazz.isAssignableFrom(fsOptions.getClass()))
> +        {
> +            return (T) fsOptions;
> +        }
> +        try
> +        {
> +            T obj = clazz.newInstance();
> +            obj.options = fsOptions.options;
> +            return obj;
> +        }
> +        catch (Exception ex)
> +        {
> +            return null;
> +        }
> +    }
> +
>     /**
>      * Keys in the options Map.
>      */
> @@ -165,10 +185,11 @@
>     /**
>      * {@inheritDoc}
>      */
> -    public Object clone() {
> -        FileSystemOptions clone = new FileSystemOptions();
> +    public Object clone() throws CloneNotSupportedException
> +    {
> +        FileSystemOptions clone = (FileSystemOptions) super.clone();
>         clone.options = new TreeMap(options);
>         return clone;
>     }
> -
> +
> }
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/impl/DefaultFileSystemConfigBuilder.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/impl/DefaultFileSystemConfigBuilder.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/impl/DefaultFileSystemConfigBuilder.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/impl/DefaultFileSystemConfigBuilder.java Sun Sep 13  
> 06:26:23 2009
> @@ -24,6 +24,7 @@
> /**
>  * Default options usable for all filesystems.
>  * @author <a href="http://commons.apache.org/vfs/team- 
> list.html">Commons VFS team</a>
> + * @deprecated Use AbstractFileSystemOptions
>  */
> public class DefaultFileSystemConfigBuilder extends  
> FileSystemConfigBuilder
> {
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/impl/DefaultFileSystemManager.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/impl/DefaultFileSystemManager.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/impl/DefaultFileSystemManager.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/impl/DefaultFileSystemManager.java Sun Sep 13 06:26:23  
> 2009
> @@ -81,7 +81,7 @@
>     /**
>      * Mapping from URI scheme to FileProvider.
>      */
> -    private final Map providers = new HashMap();
> +    private final Map<String, FileProvider> providers = new  
> HashMap<String, FileProvider>();
>
>     /**
>      * All components used by this manager.
> @@ -1077,6 +1077,7 @@
>      * @param scheme The scheme to locate.
>      * @return The FileSystemConfigBuilder for the scheme.
>      * @throws FileSystemException if the given scheme is not konwn
> +     * @deprecated - Use the FileSystemOptions for the scheme.
>      */
>     public FileSystemConfigBuilder getFileSystemConfigBuilder(final  
> String scheme)
>             throws FileSystemException
> @@ -1090,6 +1091,23 @@
>         return provider.getConfigBuilder();
>     }
>
> +    /**
> +     * Get the FileSystemOptions for the specified scheme.
> +     * @param scheme The protocol.
> +     * @return The FileSystemOptions for the specified scheme.
> +     * @throws FileSystemException if an error occurs.
> +     */
> +    public FileSystemOptions getFileSystemOptions(final String  
> scheme)
> +            throws FileSystemException
> +    {
> +        FileProvider provider = providers.get(scheme);
> +        if (provider == null)
> +        {
> +            throw new FileSystemException("vfs.impl/unknown- 
> scheme.error", new Object[] {scheme});
> +        }
> +        return provider.getFileSystemOptions();
> +    }
> +
>     // -- OPERATIONS --
>
>     /**
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/AbstractFileProvider.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileProvider.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractFileProvider.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractFileProvider.java Sun Sep 13 06:26:23  
> 2009
> @@ -16,12 +16,7 @@
>  */
> package org.apache.commons.vfs.provider;
>
> -import org.apache.commons.vfs.FileName;
> -import org.apache.commons.vfs.FileObject;
> -import org.apache.commons.vfs.FileSystem;
> -import org.apache.commons.vfs.FileSystemConfigBuilder;
> -import org.apache.commons.vfs.FileSystemException;
> -import org.apache.commons.vfs.FileSystemOptions;
> +import org.apache.commons.vfs.*;
> import org.apache.commons.vfs.provider.local.GenericFileNameParser;
>
> import java.util.Map;
> @@ -45,11 +40,26 @@
>     // private final Map fileSystems = new HashMap();
>     private final Map fileSystems = new TreeMap();
>
> +    private final Class<? extends FileSystemOptions>  
> fileSystemOptionsClass;
> +
>     private FileNameParser parser;
>
>     public AbstractFileProvider()
>     {
>         parser = GenericFileNameParser.getInstance();
> +        fileSystemOptionsClass = DefaultFileSystemOptions.class;
> +    }
> +
> +    protected AbstractFileProvider(Class<? extends  
> FileSystemOptions> optionsClass)
> +    {
> +        parser = GenericFileNameParser.getInstance();
> +        fileSystemOptionsClass = optionsClass;
> +    }
> +
> +    protected AbstractFileProvider(FileNameParser fileNameParser,  
> Class<? extends FileSystemOptions> optionsClass)
> +    {
> +        parser = fileNameParser;
> +        fileSystemOptionsClass = optionsClass;
>     }
>
>     protected FileNameParser getFileNameParser()
> @@ -191,4 +201,20 @@
>         throw new FileSystemException("vfs.provider/filename-parser- 
> missing.error");
>         // return GenericFileName.parseUri(getFileNameParser(), uri,  
> 0);
>     }
> +
> +    /**
> +     * Returns a FileSystemOptions instance appropriate for this  
> provider.
> +     * @return The FileSystemOptions.
> +     */
> +    public FileSystemOptions getFileSystemOptions()
> +    {
> +        try
> +        {
> +           return fileSystemOptionsClass.newInstance();
> +        }
> +        catch (Exception ex)
> +        {
> +            return null;
> +        }
> +    }
> }
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/AbstractFileSystem.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/AbstractFileSystem.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractFileSystem.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractFileSystem.java Sun Sep 13 06:26:23 2009
> @@ -18,20 +18,7 @@
>
> import org.apache.commons.logging.Log;
> import org.apache.commons.logging.LogFactory;
> -import org.apache.commons.vfs.CacheStrategy;
> -import org.apache.commons.vfs.Capability;
> -import org.apache.commons.vfs.FileListener;
> -import org.apache.commons.vfs.FileName;
> -import org.apache.commons.vfs.FileObject;
> -import org.apache.commons.vfs.FileSelector;
> -import org.apache.commons.vfs.FileSystem;
> -import org.apache.commons.vfs.FileSystemException;
> -import org.apache.commons.vfs.FileSystemManager;
> -import org.apache.commons.vfs.FileSystemOptions;
> -import org.apache.commons.vfs.FilesCache;
> -import org.apache.commons.vfs.VfsLog;
> -import org.apache.commons.vfs.FileSystemConfigBuilder;
> -import org.apache.commons.vfs.impl.DefaultFileSystemConfigBuilder;
> +import org.apache.commons.vfs.*;
> import org.apache.commons.vfs.cache.OnCallRefreshFileObject;
> import org.apache.commons.vfs.events.AbstractFileChangeEvent;
> import org.apache.commons.vfs.events.ChangedEvent;
> @@ -107,12 +94,40 @@
>                                  final FileObject parentLayer,
>                                  final FileSystemOptions  
> fileSystemOptions)
>     {
> +        this(rootName, parentLayer, fileSystemOptions, null);
> +    }
> +
> +    protected AbstractFileSystem(final FileName rootName,
> +                                 final FileObject parentLayer,
> +                                 final FileSystemOptions  
> fileSystemOptions,
> +                                 final Class<? extends  
> FileSystemOptions> optionsClass)
> +    {
>         // this.parentLayer = parentLayer;
>         this.parentLayer = parentLayer;
>         this.rootName = rootName;
> -        this.fileSystemOptions = fileSystemOptions;
> -        FileSystemConfigBuilder builder =  
> DefaultFileSystemConfigBuilder.getInstance();
> -        String uri = builder.getRootURI(fileSystemOptions);
> +        if (optionsClass == null)
> +        {
> +            this.fileSystemOptions = fileSystemOptions == null ?  
> new PrivateFileSystemOptions() : fileSystemOptions;
> +        }
> +        else
> +        {
> +            if (fileSystemOptions != null)
> +            {
> +                this.fileSystemOptions =  
> FileSystemOptions.makeSpecific(optionsClass, fileSystemOptions);
> +            }
> +            else
> +            {
> +                try
> +                {
> +                    this.fileSystemOptions =  
> optionsClass.newInstance();
> +                }
> +                catch (Exception ex)
> +                {
> +                    throw new IllegalArgumentException("Invalid  
> optiosn class", ex);
> +                }
> +            }
> +        }
> +        String uri = ((DefaultFileSystemOptions) 
> this.fileSystemOptions).getRootURI();
>         if (uri == null)
>         {
>             uri = rootName.getURI();
> @@ -437,6 +452,11 @@
>         return fileSystemOptions;
>     }
>
> +    protected <T extends FileSystemOptions> T getOptions()
> +    {
> +        return (T) fileSystemOptions;
> +    }
> +
>     /**
>      * Return the FileSystemManager used to instantiate this  
> filesystem.
>      * @return the FileSystemManager.
> @@ -679,4 +699,9 @@
>             return openStreams > 0;
>         }
>     }
> +
> +    private class PrivateFileSystemOptions extends  
> DefaultFileSystemOptions
> +    {
> +
> +    }
> }
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/AbstractOriginatingFileProvider.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/AbstractOriginatingFileProvider.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractOriginatingFileProvider.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/AbstractOriginatingFileProvider.java Sun Sep 13  
> 06:26:23 2009
> @@ -38,6 +38,16 @@
>         super();
>     }
>
> +    protected AbstractOriginatingFileProvider(Class<? extends  
> FileSystemOptions> optionsClass)
> +    {
> +        super(optionsClass);
> +    }
> +
> +    protected AbstractOriginatingFileProvider(FileNameParser  
> fileNameParser, Class<? extends FileSystemOptions> optionsClass)
> +    {
> +        super(fileNameParser, optionsClass);
> +    }
> +
>     /**
>      * Locates a file object, by absolute URI.
>      *
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/FileProvider.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/FileProvider.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/FileProvider.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/FileProvider.java Sun Sep 13 06:26:23 2009
> @@ -64,6 +64,7 @@
>     /**
>      * Gets the configbuilder useable to collect the needed  
> fileSystemOptions.
>      * @return a FileSystemConfigBuilder for the particular file  
> system.
> +     * @deprecated - Use FileSystemOptions specific to the scheme  
> instead.
>      */
>     FileSystemConfigBuilder getConfigBuilder();
>
> @@ -83,4 +84,10 @@
>      * @throws FileSystemException if an error occurs.
>      */
>     FileName parseUri(FileName root, String uri) throws  
> FileSystemException;
> -}
> +
> +    /**
> +     * Return FileSystemOptions appropriate for the specific  
> provider.
> +     * @return A FileSystemOptions instance.
> +     */
> +    FileSystemOptions getFileSystemOptions();
> +}
> \ No newline at end of file
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ftp/FTPClientWrapper.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ftp/FTPClientWrapper.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FTPClientWrapper.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FTPClientWrapper.java Sun Sep 13 06:26:23  
> 2009
> @@ -37,11 +37,11 @@
> class FTPClientWrapper implements FtpClient
> {
>     private final GenericFileName root;
> -    private final FileSystemOptions fileSystemOptions;
> +    private final FtpFileSystemOptions fileSystemOptions;
>
>     private FTPClient ftpClient;
>
> -    FTPClientWrapper(final GenericFileName root, final  
> FileSystemOptions fileSystemOptions) throws FileSystemException
> +    FTPClientWrapper(final GenericFileName root, final  
> FtpFileSystemOptions fileSystemOptions) throws FileSystemException
>     {
>         this.root = root;
>         this.fileSystemOptions = fileSystemOptions;
> @@ -53,7 +53,7 @@
>         return root;
>     }
>
> -    public FileSystemOptions getFileSystemOptions()
> +    public FtpFileSystemOptions getFileSystemOptions()
>     {
>         return fileSystemOptions;
>     }
> @@ -74,7 +74,7 @@
>                 UserAuthenticatorUtils.getData(authData,  
> UserAuthenticationData.PASSWORD,
>                         UserAuthenticatorUtils.toChar 
> (rootName.getPassword())),
>                 rootName.getPath(),
> -                getFileSystemOptions());
> +                fileSystemOptions);
>         }
>         finally
>         {
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ftp/FtpClientFactory.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpClientFactory.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpClientFactory.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpClientFactory.java Sun Sep 13 06:26:23  
> 2009
> @@ -52,7 +52,7 @@
>      * @throws FileSystemException if an error occurs while  
> connecting.
>      */
>     public static FTPClient createConnection(String hostname, int  
> port, char[] username, char[] password,
> -                                             String  
> workingDirectory, FileSystemOptions fileSystemOptions)
> +                                             String  
> workingDirectory, FtpFileSystemOptions fileSystemOptions)
>             throws FileSystemException
>     {
>         // Determine the username and password to use
> @@ -70,37 +70,32 @@
>         {
>             final FTPClient client = new FTPClient();
>
> -            String key = FtpFileSystemConfigBuilder.getInstance 
> ().getEntryParser(fileSystemOptions);
> +            String key = fileSystemOptions.getEntryParser();
>             if (key != null)
>             {
>                 FTPClientConfig config = new FTPClientConfig(key);
>
> -                String serverLanguageCode =
> -                        FtpFileSystemConfigBuilder.getInstance 
> ().getServerLanguageCode(fileSystemOptions);
> +                String serverLanguageCode =  
> fileSystemOptions.getServerLanguageCode();
>                 if (serverLanguageCode != null)
>                 {
>                     config.setServerLanguageCode(serverLanguageCode);
>                 }
> -                String defaultDateFormat =
> -                        FtpFileSystemConfigBuilder.getInstance 
> ().getDefaultDateFormat(fileSystemOptions);
> +                String defaultDateFormat =  
> fileSystemOptions.getDefaultDateFormat();
>                 if (defaultDateFormat != null)
>                 {
>                     config.setDefaultDateFormatStr(defaultDateFormat);
>                 }
> -                String recentDateFormat =
> -                        FtpFileSystemConfigBuilder.getInstance 
> ().getRecentDateFormat(fileSystemOptions);
> +                String recentDateFormat =  
> fileSystemOptions.getRecentDateFormat();
>                 if (recentDateFormat != null)
>                 {
>                     config.setRecentDateFormatStr(recentDateFormat);
>                 }
> -                String serverTimeZoneId =
> -                        FtpFileSystemConfigBuilder.getInstance 
> ().getServerTimeZoneId(fileSystemOptions);
> +                String serverTimeZoneId =  
> fileSystemOptions.getServerTimeZoneId();
>                 if (serverTimeZoneId != null)
>                 {
>                     config.setServerTimeZoneId(serverTimeZoneId);
>                 }
> -                String[] shortMonthNames =
> -                        FtpFileSystemConfigBuilder.getInstance 
> ().getShortMonthNames(fileSystemOptions);
> +                String[] shortMonthNames =  
> fileSystemOptions.getShortMonthNames();
>                 if (shortMonthNames != null)
>                 {
>                     StringBuffer shortMonthNamesStr = new  
> StringBuffer(BUFSZ);
> @@ -118,8 +113,7 @@
>                 client.configure(config);
>             }
>
> -            FTPFileEntryParserFactory myFactory =
> -                    FtpFileSystemConfigBuilder.getInstance 
> ().getEntryParserFactory(fileSystemOptions);
> +            FTPFileEntryParserFactory myFactory =  
> fileSystemOptions.getEntryParserFactory();
>             if (myFactory != null)
>             {
>                 client.setParserFactory(myFactory);
> @@ -151,7 +145,7 @@
>                 }
>
>                 // Set dataTimeout value
> -                Integer dataTimeout =  
> FtpFileSystemConfigBuilder.getInstance().getDataTimeout 
> (fileSystemOptions);
> +                Integer dataTimeout =  
> fileSystemOptions.getDataTimeout();
>                 if (dataTimeout != null)
>                 {
>                     client.setDataTimeout(dataTimeout.intValue());
> @@ -161,7 +155,7 @@
>                 // All file operations a relative to the filesystem- 
> root
>                 // String root = getRoot().getName().getPath();
>
> -                Boolean userDirIsRoot =  
> FtpFileSystemConfigBuilder.getInstance().getUserDirIsRoot 
> (fileSystemOptions);
> +                Boolean userDirIsRoot =  
> fileSystemOptions.getUserDirIsRoot();
>                 if (workingDirectory != null && (userDirIsRoot ==  
> null || !userDirIsRoot.booleanValue()))
>                 {
>                     if (!client.changeWorkingDirectory 
> (workingDirectory))
> @@ -170,7 +164,7 @@
>                     }
>                 }
>
> -                Boolean passiveMode =  
> FtpFileSystemConfigBuilder.getInstance().getPassiveMode 
> (fileSystemOptions);
> +                Boolean passiveMode =  
> fileSystemOptions.getPassiveMode();
>                 if (passiveMode != null && passiveMode.booleanValue())
>                 {
>                     client.enterLocalPassiveMode();
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ftp/FtpFileProvider.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileProvider.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileProvider.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileProvider.java Sun Sep 13 06:26:23 2009
> @@ -67,10 +67,11 @@
>         Capability.RANDOM_ACCESS_READ,
>     }));
>
> +    private static final Class<? extends FileSystemOptions>  
> FSOPTIONS_CLASS = FtpFileSystemOptions.class;
> +
>     public FtpFileProvider()
>     {
> -        super();
> -        setFileNameParser(FtpFileNameParser.getInstance());
> +        super(FtpFileNameParser.getInstance(), FSOPTIONS_CLASS);
>     }
>
>     /**
> @@ -82,7 +83,9 @@
>         // Create the file system
>         final GenericFileName rootName = (GenericFileName) name;
>
> -        FTPClientWrapper ftpClient = new FTPClientWrapper(rootName,  
> fileSystemOptions);
> +        FtpFileSystemOptions options =  
> FileSystemOptions.makeSpecific(FtpFileSystemOptions.class,  
> fileSystemOptions);
> +
> +        FTPClientWrapper ftpClient = new FTPClientWrapper(rootName,  
> options);
>         /*
>         FTPClient ftpClient = FtpClientFactory.createConnection 
> (rootName.getHostName(),
>             rootName.getPort(),
> @@ -92,7 +95,7 @@
>             fileSystemOptions);
>         */
>
> -        return new FtpFileSystem(rootName, ftpClient,  
> fileSystemOptions);
> +        return new FtpFileSystem(rootName, ftpClient, options,  
> FSOPTIONS_CLASS);
>     }
>
>     public FileSystemConfigBuilder getConfigBuilder()
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ftp/FtpFileSystem.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileSystem.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystem.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystem.java Sun Sep 13 06:26:23 2009
> @@ -35,8 +35,7 @@
>  * @author <a href="mailto:adammurdoch@apache.org">Adam Murdoch</a>
>  * @version $Revision$ $Date$
>  */
> -public class FtpFileSystem
> -    extends AbstractFileSystem
> +public class FtpFileSystem extends AbstractFileSystem
> {
>     private static final Log LOG = LogFactory.getLog 
> (FtpFileSystem.class);
>
> @@ -49,9 +48,10 @@
>     private FtpClient idleClient;
>
>     protected FtpFileSystem(final GenericFileName rootName, final  
> FtpClient ftpClient,
> -                            final FileSystemOptions  
> fileSystemOptions)
> +                            final FileSystemOptions  
> fileSystemOptions,
> +                            final Class<? extends  
> FileSystemOptions> optionsClass)
>     {
> -        super(rootName, null, fileSystemOptions);
> +        super(rootName, null, fileSystemOptions, optionsClass);
>         // hostname = rootName.getHostName();
>         // port = rootName.getPort();
>
> @@ -149,4 +149,9 @@
>     {
>         return new FtpFileObject(name, this, getRootName());
>     }
> +
> +    public FtpFileSystemOptions getFileSystemOptions()
> +    {
> +        return super.getOptions();
> +    }
> }
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ftp/FtpFileSystemConfigBuilder.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileSystemConfigBuilder.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystemConfigBuilder.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystemConfigBuilder.java Sun Sep 13  
> 06:26:23 2009
> @@ -25,27 +25,12 @@
>  *
>  * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
>  * @version $Revision$ $Date$
> + * @deprecated Use FTPFileSystemOptions instead.
>  */
> public final class FtpFileSystemConfigBuilder extends  
> FileSystemConfigBuilder
> {
>     private static final FtpFileSystemConfigBuilder builder = new  
> FtpFileSystemConfigBuilder();
>
> -    private static final String FACTORY_KEY =  
> FTPFileEntryParserFactory.class.getName() + ".KEY";
> -    private static final String PASSIVE_MODE =  
> FtpFileSystemConfigBuilder.class.getName() + ".PASSIVE";
> -    private static final String USER_DIR_IS_ROOT =  
> FtpFileSystemConfigBuilder.class.getName() + ".USER_DIR_IS_ROOT";
> -    private static final String DATA_TIMEOUT =  
> FtpFileSystemConfigBuilder.class.getName() + ".DATA_TIMEOUT";
> -
> -    private static final String SERVER_LANGUAGE_CODE =
> -            FtpFileSystemConfigBuilder.class.getName() +  
> ".SERVER_LANGUAGE_CODE";
> -    private static final String DEFAULT_DATE_FORMAT =
> -            FtpFileSystemConfigBuilder.class.getName() +  
> ".DEFAULT_DATE_FORMAT";
> -    private static final String RECENT_DATE_FORMAT =
> -            FtpFileSystemConfigBuilder.class.getName() +  
> ".RECENT_DATE_FORMAT";
> -    private static final String SERVER_TIME_ZONE_ID =
> -            FtpFileSystemConfigBuilder.class.getName() +  
> ".SERVER_TIME_ZONE_ID";
> -    private static final String SHORT_MONTH_NAMES =
> -            FtpFileSystemConfigBuilder.class.getName() +  
> ".SHORT_MONTH_NAMES";
> -
>     private FtpFileSystemConfigBuilder()
>     {
>         super("ftp.");
> @@ -64,7 +49,7 @@
>      */
>     public void setEntryParserFactory(FileSystemOptions opts,  
> FTPFileEntryParserFactory factory)
>     {
> -        setParam(opts, FTPFileEntryParserFactory.class.getName(),  
> factory);
> +        FtpFileSystemOptions.getInstance(opts).setEntryParserFactory 
> (factory);
>     }
>
>     /**
> @@ -74,7 +59,7 @@
>      */
>     public FTPFileEntryParserFactory getEntryParserFactory 
> (FileSystemOptions opts)
>     {
> -        return (FTPFileEntryParserFactory) getParam(opts,  
> FTPFileEntryParserFactory.class.getName());
> +        return FtpFileSystemOptions.getInstance 
> (opts).getEntryParserFactory();
>     }
>
>     /**
> @@ -89,7 +74,7 @@
>      */
>     public void setEntryParser(FileSystemOptions opts, String key)
>     {
> -        setParam(opts, FACTORY_KEY, key);
> +        FtpFileSystemOptions.getInstance(opts).setEntryParser(key);
>     }
>
>     /**
> @@ -99,7 +84,7 @@
>      */
>     public String getEntryParser(FileSystemOptions opts)
>     {
> -        return getString(opts, FACTORY_KEY);
> +        return FtpFileSystemOptions.getInstance(opts).getEntryParser 
> ();
>     }
>
>     protected Class getConfigClass()
> @@ -115,7 +100,7 @@
>      */
>     public void setPassiveMode(FileSystemOptions opts, boolean  
> passiveMode)
>     {
> -        setParam(opts, PASSIVE_MODE, passiveMode ? Boolean.TRUE :  
> Boolean.FALSE);
> +        FtpFileSystemOptions.getInstance(opts).setPassiveMode 
> (passiveMode);
>     }
>
>     /**
> @@ -125,7 +110,7 @@
>      */
>     public Boolean getPassiveMode(FileSystemOptions opts)
>     {
> -        return getBoolean(opts, PASSIVE_MODE);
> +        return FtpFileSystemOptions.getInstance(opts).getPassiveMode 
> ();
>     }
>
>     /**
> @@ -136,7 +121,7 @@
>      */
>     public void setUserDirIsRoot(FileSystemOptions opts, boolean  
> userDirIsRoot)
>     {
> -        setParam(opts, USER_DIR_IS_ROOT, userDirIsRoot ?  
> Boolean.TRUE : Boolean.FALSE);
> +        FtpFileSystemOptions.getInstance(opts).setUserDirIsRoot 
> (userDirIsRoot);
>     }
>
>     /**
> @@ -146,7 +131,7 @@
>      */
>     public Boolean getUserDirIsRoot(FileSystemOptions opts)
>     {
> -        return getBoolean(opts, USER_DIR_IS_ROOT);
> +        return FtpFileSystemOptions.getInstance 
> (opts).getUserDirIsRoot();
>     }
>
>     /**
> @@ -156,7 +141,7 @@
>      */
>     public Integer getDataTimeout(FileSystemOptions opts)
>     {
> -        return getInteger(opts, DATA_TIMEOUT);
> +        return FtpFileSystemOptions.getInstance(opts).getDataTimeout 
> ();
>     }
>
>     /**
> @@ -169,7 +154,7 @@
>      */
>     public void setDataTimeout(FileSystemOptions opts, Integer  
> dataTimeout)
>     {
> -        setParam(opts, DATA_TIMEOUT, dataTimeout);
> +        FtpFileSystemOptions.getInstance(opts).setDataTimeout 
> (dataTimeout);
>     }
>
>     /**
> @@ -180,7 +165,7 @@
>      */
>     public String getServerLanguageCode(FileSystemOptions opts)
>     {
> -        return getString(opts, SERVER_LANGUAGE_CODE);
> +        return FtpFileSystemOptions.getInstance 
> (opts).getServerLanguageCode();
>     }
>
>     /**
> @@ -191,7 +176,7 @@
>      */
>     public void setServerLanguageCode(FileSystemOptions opts, String  
> serverLanguageCode)
>     {
> -        setParam(opts, SERVER_LANGUAGE_CODE, serverLanguageCode);
> +        FtpFileSystemOptions.getInstance(opts).setServerLanguageCode 
> (serverLanguageCode);
>     }
>
>     /**
> @@ -202,7 +187,7 @@
>      */
>     public String getDefaultDateFormat(FileSystemOptions opts)
>     {
> -        return getString(opts, DEFAULT_DATE_FORMAT);
> +        return FtpFileSystemOptions.getInstance 
> (opts).getDefaultDateFormat();
>     }
>
>     /**
> @@ -213,7 +198,7 @@
>      */
>     public void setDefaultDateFormat(FileSystemOptions opts, String  
> defaultDateFormat)
>     {
> -        setParam(opts, DEFAULT_DATE_FORMAT, defaultDateFormat);
> +        FtpFileSystemOptions.getInstance(opts).setDefaultDateFormat 
> (defaultDateFormat);
>     }
>
>     /**
> @@ -223,7 +208,7 @@
>      */
>     public String getRecentDateFormat(FileSystemOptions opts)
>     {
> -        return getString(opts, RECENT_DATE_FORMAT);
> +        return FtpFileSystemOptions.getInstance 
> (opts).getRecentDateFormat();
>     }
>
>     /**
> @@ -233,7 +218,7 @@
>      */
>     public void setRecentDateFormat(FileSystemOptions opts, String  
> recentDateFormat)
>     {
> -        setParam(opts, RECENT_DATE_FORMAT, recentDateFormat);
> +        FtpFileSystemOptions.getInstance(opts).setRecentDateFormat 
> (recentDateFormat);
>     }
>
>     /**
> @@ -243,7 +228,7 @@
>      */
>     public String getServerTimeZoneId(FileSystemOptions opts)
>     {
> -        return getString(opts, SERVER_TIME_ZONE_ID);
> +        return FtpFileSystemOptions.getInstance 
> (opts).getServerTimeZoneId();
>     }
>
>     /**
> @@ -253,7 +238,7 @@
>      */
>     public void setServerTimeZoneId(FileSystemOptions opts, String  
> serverTimeZoneId)
>     {
> -        setParam(opts, SERVER_TIME_ZONE_ID, serverTimeZoneId);
> +        FtpFileSystemOptions.getInstance(opts).setServerTimeZoneId 
> (serverTimeZoneId);
>     }
>
>     /**
> @@ -263,7 +248,7 @@
>      */
>     public String[] getShortMonthNames(FileSystemOptions opts)
>     {
> -        return (String[]) getParam(opts, SHORT_MONTH_NAMES);
> +        return FtpFileSystemOptions.getInstance 
> (opts).getShortMonthNames();
>     }
>
>     /**
> @@ -273,13 +258,6 @@
>      */
>     public void setShortMonthNames(FileSystemOptions opts, String[]  
> shortMonthNames)
>     {
> -        String[] clone = null;
> -        if (shortMonthNames != null)
> -        {
> -            clone = new String[shortMonthNames.length];
> -            System.arraycopy(shortMonthNames, 0, clone, 0,  
> shortMonthNames.length);
> -        }
> -
> -        setParam(opts, SHORT_MONTH_NAMES, clone);
> +        FtpFileSystemOptions.getInstance(opts).setShortMonthNames 
> (shortMonthNames);
>     }
> }
>
> Added: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ftp/FtpFileSystemOptions.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileSystemOptions.java?rev=814264&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystemOptions.java (added)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ftp/FtpFileSystemOptions.java Sun Sep 13  
> 06:26:23 2009
> @@ -0,0 +1,261 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed  
> with
> + * this work for additional information regarding copyright  
> ownership.
> + * The ASF licenses this file to You under the Apache License,  
> Version 2.0
> + * (the "License"); you may not use this file except in compliance  
> with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,  
> software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
> implied.
> + * See the License for the specific language governing permissions  
> and
> + * limitations under the License.
> + */
> +package org.apache.commons.vfs.provider.ftp;
> +
> +import org.apache.commons.vfs.FileSystemOptions;
> +import org.apache.commons.vfs.DefaultFileSystemOptions;
> +import org.apache.commons.net.ftp.parser.FTPFileEntryParserFactory;
> +
> +/**
> + * FTP File System Options
> + * @author <a href="http://commons.apache.org/vfs/team- 
> list.html">Commons VFS team</a>
> + */
> +public class FtpFileSystemOptions extends DefaultFileSystemOptions
> +{
> +    // Why are these keys prefixed with a class name?  
> FileSystemOptionsKey does that automatically.
> +    private static final String FACTORY_KEY =  
> FTPFileEntryParserFactory.class.getName() + ".KEY";
> +    private static final String PASSIVE_MODE =  
> FtpFileSystemConfigBuilder.class.getName() + ".PASSIVE";
> +    private static final String USER_DIR_IS_ROOT =  
> FtpFileSystemConfigBuilder.class.getName() + ".USER_DIR_IS_ROOT";
> +    private static final String DATA_TIMEOUT =  
> FtpFileSystemConfigBuilder.class.getName() + ".DATA_TIMEOUT";
> +
> +    private static final String SERVER_LANGUAGE_CODE =
> +            FtpFileSystemConfigBuilder.class.getName() +  
> ".SERVER_LANGUAGE_CODE";
> +    private static final String DEFAULT_DATE_FORMAT =
> +            FtpFileSystemConfigBuilder.class.getName() +  
> ".DEFAULT_DATE_FORMAT";
> +    private static final String RECENT_DATE_FORMAT =
> +            FtpFileSystemConfigBuilder.class.getName() +  
> ".RECENT_DATE_FORMAT";
> +    private static final String SERVER_TIME_ZONE_ID =
> +            FtpFileSystemConfigBuilder.class.getName() +  
> ".SERVER_TIME_ZONE_ID";
> +    private static final String SHORT_MONTH_NAMES =
> +            FtpFileSystemConfigBuilder.class.getName() +  
> ".SHORT_MONTH_NAMES";
> +
> +    public FtpFileSystemOptions()
> +    {
> +        this("ftp.");
> +    }
> +
> +    protected FtpFileSystemOptions(String scheme)
> +    {
> +        super(scheme);
> +    }
> +
> +    public static FtpFileSystemOptions getInstance 
> (FileSystemOptions opts)
> +    {
> +        return FileSystemOptions.makeSpecific 
> (FtpFileSystemOptions.class, opts);
> +    }
> +        /**
> +     * FTPFileEntryParserFactory which will be used for ftp-entry  
> parsing.
> +     *
> +     * @param factory instance of your factory
> +     */
> +    public void setEntryParserFactory(FTPFileEntryParserFactory  
> factory)
> +    {
> +        setParam(FTPFileEntryParserFactory.class.getName(), factory);
> +    }
> +
> +    /**
> +     * @see #setEntryParserFactory
> +     * @return An FTPFileEntryParserFactory.
> +     */
> +    public FTPFileEntryParserFactory getEntryParserFactory()
> +    {
> +        return (FTPFileEntryParserFactory) getParam 
> (FTPFileEntryParserFactory.class.getName());
> +    }
> +
> +    /**
> +     * set the FQCN of your FileEntryParser used to parse the  
> directory listing from your server.<br />
> +     * <br />
> +     * <i>If you do not use the default commons-net  
> FTPFileEntryParserFactory e.g. by using
> +     * {@link #setEntryParserFactory}
> +     * this is the "key" parameter passed as argument into your  
> custom factory</i>
> +     *
> +     * @param key The key.
> +     */
> +    public void setEntryParser(String key)
> +    {
> +        setParam(FACTORY_KEY, key);
> +    }
> +
> +    /**
> +     * @see #setEntryParser
> +     * @return the key to the EntryParser.
> +     */
> +    public String getEntryParser()
> +    {
> +        return getString(FACTORY_KEY);
> +    }
> +
> +    /**
> +     * enter into passive mode.
> +     *
> +     * @param passiveMode true if passive mode should be used.
> +     */
> +    public void setPassiveMode(boolean passiveMode)
> +    {
> +        setParam(PASSIVE_MODE, passiveMode ? Boolean.TRUE :  
> Boolean.FALSE);
> +    }
> +
> +    /**
> +     * @return true if passive mode is set.
> +     * @see #setPassiveMode
> +     */
> +    public Boolean getPassiveMode()
> +    {
> +        return getBoolean(PASSIVE_MODE);
> +    }
> +
> +    /**
> +     * use user directory as root (do not change to fs root).
> +     *
> +     * @param userDirIsRoot true if the user directory should be  
> treated as the root.
> +     */
> +    public void setUserDirIsRoot(boolean userDirIsRoot)
> +    {
> +        setParam(USER_DIR_IS_ROOT, userDirIsRoot ? Boolean.TRUE :  
> Boolean.FALSE);
> +    }
> +
> +    /**
> +     * @return true if the user directory is treated as the root.
> +     * @see #setUserDirIsRoot
> +     */
> +    public Boolean getUserDirIsRoot()
> +    {
> +        return getBoolean(USER_DIR_IS_ROOT);
> +    }
> +
> +    /**
> +     * @return The timeout as an Integer.
> +     * @see #setDataTimeout
> +     */
> +    public Integer getDataTimeout()
> +    {
> +        return getInteger(DATA_TIMEOUT);
> +    }
> +
> +    /**
> +     * set the data timeout for the ftp client.<br />
> +     * If you set the dataTimeout to <code>null</code> no  
> dataTimeout will be set on the
> +     * ftp client.
> +     *
> +     * @param dataTimeout The timeout value.
> +     */
> +    public void setDataTimeout(Integer dataTimeout)
> +    {
> +        setParam(DATA_TIMEOUT, dataTimeout);
> +    }
> +
> +    /**
> +     * get the language code used by the server. see {@link  
> org.apache.commons.net.ftp.FTPClientConfig}
> +     * for details and examples.
> +     * @return The language code of the server.
> +     */
> +    public String getServerLanguageCode()
> +    {
> +        return getString(SERVER_LANGUAGE_CODE);
> +    }
> +
> +    /**
> +     * set the language code used by the server. see {@link  
> org.apache.commons.net.ftp.FTPClientConfig}
> +     * for details and examples.
> +     * @param serverLanguageCode The servers language code.
> +     */
> +    public void setServerLanguageCode(String serverLanguageCode)
> +    {
> +        setParam(SERVER_LANGUAGE_CODE, serverLanguageCode);
> +    }
> +
> +    /**
> +     * get the language code used by the server. see {@link  
> org.apache.commons.net.ftp.FTPClientConfig}
> +     * for details and examples.
> +     * @return The default date format.
> +     */
> +    public String getDefaultDateFormat()
> +    {
> +        return getString(DEFAULT_DATE_FORMAT);
> +    }
> +
> +    /**
> +     * set the language code used by the server. see {@link  
> org.apache.commons.net.ftp.FTPClientConfig}
> +     * for details and examples.
> +     * @param defaultDateFormat The default date format.
> +     */
> +    public void setDefaultDateFormat(String defaultDateFormat)
> +    {
> +        setParam(DEFAULT_DATE_FORMAT, defaultDateFormat);
> +    }
> +
> +    /**
> +     * see {@link org.apache.commons.net.ftp.FTPClientConfig} for  
> details and examples.
> +     * @return The recent date format.
> +     */
> +    public String getRecentDateFormat()
> +    {
> +        return getString(RECENT_DATE_FORMAT);
> +    }
> +
> +    /**
> +     * see {@link org.apache.commons.net.ftp.FTPClientConfig} for  
> details and examples.
> +     * @param recentDateFormat The recent date format.
> +     */
> +    public void setRecentDateFormat(String recentDateFormat)
> +    {
> +        setParam(RECENT_DATE_FORMAT, recentDateFormat);
> +    }
> +
> +    /**
> +     * see {@link org.apache.commons.net.ftp.FTPClientConfig} for  
> details and examples.
> +     * @return The server timezone id.
> +     */
> +    public String getServerTimeZoneId()
> +    {
> +        return getString(SERVER_TIME_ZONE_ID);
> +    }
> +
> +    /**
> +     * see {@link org.apache.commons.net.ftp.FTPClientConfig} for  
> details and examples.
> +     * @param serverTimeZoneId The server timezone id.
> +     */
> +    public void setServerTimeZoneId(String serverTimeZoneId)
> +    {
> +        setParam(SERVER_TIME_ZONE_ID, serverTimeZoneId);
> +    }
> +
> +    /**
> +     * see {@link org.apache.commons.net.ftp.FTPClientConfig} for  
> details and examples.
> +     * @return An array of short month names.
> +     */
> +    public String[] getShortMonthNames()
> +    {
> +        return (String[]) getParam(SHORT_MONTH_NAMES);
> +    }
> +
> +    /**
> +     * see {@link org.apache.commons.net.ftp.FTPClientConfig} for  
> details and examples.
> +     * @param shortMonthNames an array of short month name Strings.
> +     */
> +    public void setShortMonthNames(String[] shortMonthNames)
> +    {
> +        String[] clone = null;
> +        if (shortMonthNames != null)
> +        {
> +            clone = new String[shortMonthNames.length];
> +            System.arraycopy(shortMonthNames, 0, clone, 0,  
> shortMonthNames.length);
> +        }
> +
> +        setParam(SHORT_MONTH_NAMES, clone);
> +    }
> +}
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/http/HttpClientFactory.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/http/HttpClientFactory.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpClientFactory.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpClientFactory.java Sun Sep 13 06:26:23  
> 2009
> @@ -42,22 +42,43 @@
>     {
>     }
>
> -    public static HttpClient createConnection(String scheme, String  
> hostname, int port, String username,
> +    /**
> +     * Creates a new connection to the server.
> +     * @param builder The configuration builder.
> +     * @param scheme The protocol.
> +     * @param hostname The name of the host to connect to.
> +     * @param port The port number to connect to.
> +     * @param username The user name for authentication.
> +     * @param password The password.
> +     * @param fileSystemOptions FileSystemOptions.
> +     * @return an HttpClient.
> +     * @throws FileSystemException if an error occurs.
> +     * @deprecated - HttpFileSystemConfigBuilder is not needed.
> +     */
> +    public static HttpClient createConnection 
> (HttpFileSystemConfigBuilder builder, String scheme, String hostname,
> +                                              int port, String  
> username,
>                                               String password,  
> FileSystemOptions fileSystemOptions)
>             throws FileSystemException
>     {
> -        return createConnection 
> (HttpFileSystemConfigBuilder.getInstance(), scheme, hostname, port,
> -            username, password, fileSystemOptions);
> +        return createConnection(scheme, hostname, port, username,  
> password, fileSystemOptions);
>     }
>
>     /**
>      * Creates a new connection to the server.
> +     * @param scheme The protocol.
> +     * @param hostname The name of the host to connect to.
> +     * @param port The port number to connect to.
> +     * @param username The user name for authentication.
> +     * @param password The password.
> +     * @param fileSystemOptions FileSystemOptions.
> +     * @return an HttpClient.
> +     * @throws FileSystemException if an error occurs.
>      */
> -    public static HttpClient createConnection 
> (HttpFileSystemConfigBuilder builder, String scheme,
> -                                              String hostname, int  
> port, String username,
> +    public static HttpClient createConnection(String scheme, String  
> hostname, int port, String username,
>                                               String password,  
> FileSystemOptions fileSystemOptions)
>             throws FileSystemException
>     {
> +        HttpFileSystemOptions httpOpts =  
> HttpFileSystemOptions.getInstance(fileSystemOptions);
>         HttpClient client;
>         try
>         {
> @@ -71,15 +92,15 @@
>
>             if (fileSystemOptions != null)
>             {
> -                String proxyHost = builder.getProxyHost 
> (fileSystemOptions);
> -                int proxyPort = builder.getProxyPort 
> (fileSystemOptions);
> +                String proxyHost = httpOpts.getProxyHost();
> +                int proxyPort = httpOpts.getProxyPort();
>
>                 if (proxyHost != null && proxyHost.length() > 0 &&  
> proxyPort > 0)
>                 {
>                     config.setProxy(proxyHost, proxyPort);
>                 }
>
> -                UserAuthenticator proxyAuth =  
> builder.getProxyAuthenticator(fileSystemOptions);
> +                UserAuthenticator proxyAuth =  
> httpOpts.getProxyAuthenticator();
>                 if (proxyAuth != null)
>                 {
>                     UserAuthenticationData authData =  
> UserAuthenticatorUtils.authenticate(proxyAuth, new  
> UserAuthenticationData.Type[]
> @@ -99,7 +120,7 @@
>                     }
>                 }
>
> -                Cookie[] cookies = builder.getCookies 
> (fileSystemOptions);
> +                Cookie[] cookies = httpOpts.getCookies();
>                 if (cookies != null)
>                 {
>                     client.getState().addCookies(cookies);
> @@ -110,8 +131,8 @@
>              * are set in the HostConfiguration. They are all used  
> as part of the key when HttpConnectionManagerParams
>              * tries to locate the host configuration.
>              */
> -            connectionMgrParams.setMaxConnectionsPerHost(config,  
> builder.getMaxConnectionsPerHost(fileSystemOptions));
> -            connectionMgrParams.setMaxTotalConnections 
> (builder.getMaxTotalConnections(fileSystemOptions));
> +            connectionMgrParams.setMaxConnectionsPerHost(config,  
> httpOpts.getMaxConnectionsPerHost());
> +            connectionMgrParams.setMaxTotalConnections 
> (httpOpts.getMaxTotalConnections());
>
>             client.setHostConfiguration(config);
>
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/http/HttpFileProvider.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/http/HttpFileProvider.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileProvider.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileProvider.java Sun Sep 13 06:26:23  
> 2009
> @@ -26,6 +26,7 @@
> import org.apache.commons.vfs.UserAuthenticationData;
> import  
> org.apache.commons.vfs.provider.AbstractOriginatingFileProvider;
> import org.apache.commons.vfs.provider.GenericFileName;
> +import org.apache.commons.vfs.provider.FileNameParser;
> import org.apache.commons.vfs.util.UserAuthenticatorUtils;
>
> import java.util.Arrays;
> @@ -58,10 +59,16 @@
>             UserAuthenticationData.USERNAME,  
> UserAuthenticationData.PASSWORD
>         };
>
> +    private static final Class<? extends FileSystemOptions>  
> FSOPTIONS_CLASS = HttpFileSystemOptions.class;
> +
>     public HttpFileProvider()
>     {
> -        super();
> -        setFileNameParser(HttpFileNameParser.getInstance());
> +        super(HttpFileNameParser.getInstance(), FSOPTIONS_CLASS);
> +    }
> +
> +    protected HttpFileProvider(FileNameParser fileNameParser,  
> Class<? extends FileSystemOptions> optionsClass)
> +    {
> +        super(fileNameParser, optionsClass);
>     }
>
>     /**
> @@ -92,9 +99,15 @@
>             UserAuthenticatorUtils.cleanup(authData);
>         }
>
> -        return new HttpFileSystem(rootName, httpClient,  
> fileSystemOptions);
> +        return new HttpFileSystem(rootName, httpClient,  
> fileSystemOptions, FSOPTIONS_CLASS);
>     }
>
> +    /**
> +     * Get ConfigurationBuilder
> +     * @return The FileSystemConfigBuilder.
> +     * @deprecated - Use HttpFileSystemOptions instead.
> +     */
> +
>     public FileSystemConfigBuilder getConfigBuilder()
>     {
>         return HttpFileSystemConfigBuilder.getInstance();
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/http/HttpFileSystem.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/http/HttpFileSystem.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystem.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystem.java Sun Sep 13 06:26:23 2009
> @@ -40,9 +40,11 @@
> {
>     private final HttpClient client;
>
> -    protected HttpFileSystem(final GenericFileName rootName, final  
> HttpClient client, final FileSystemOptions fileSystemOptions)
> +    protected HttpFileSystem(final GenericFileName rootName, final  
> HttpClient client,
> +                             final FileSystemOptions  
> fileSystemOptions,
> +                             final Class<? extends  
> FileSystemOptions> optionsClass)
>     {
> -        super(rootName, null, fileSystemOptions);
> +        super(rootName, null, fileSystemOptions, optionsClass);
>         this.client = client;
>     }
>
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/http/HttpFileSystemConfigBuilder.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/http/HttpFileSystemConfigBuilder.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystemConfigBuilder.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystemConfigBuilder.java Sun Sep  
> 13 06:26:23 2009
> @@ -27,6 +27,7 @@
>  *
>  * @author <a href="mailto:imario@apache.org">Mario Ivankovits</a>
>  * @version $Revision$ $Date$
> + * @deprecated Use HttpFileSystemOptions instead.
>  */
> public class HttpFileSystemConfigBuilder extends  
> FileSystemConfigBuilder
> {
> @@ -37,10 +38,6 @@
>         return builder;
>     }
>
> -    private static final int DEFAULT_MAX_HOST_CONNECTIONS = 5;
> -
> -    private static final int DEFAULT_MAX_CONNECTIONS = 50;
> -
>     protected HttpFileSystemConfigBuilder(String prefix)
>     {
>         super(prefix);
> @@ -58,7 +55,7 @@
>      */
>     public void setUrlCharset(FileSystemOptions opts, String chaset)
>     {
> -        setParam(opts, "urlCharset", chaset);
> +        HttpFileSystemOptions.getInstance(opts).setUrlCharset 
> (chaset);
>     }
>
>     /**
> @@ -68,7 +65,7 @@
>      */
>     public String getUrlCharset(FileSystemOptions opts)
>     {
> -        return getString(opts, "urlCharset");
> +        return HttpFileSystemOptions.getInstance(opts).getUrlCharset 
> ();
>     }
>
>     /**
> @@ -80,7 +77,7 @@
>      */
>     public void setProxyHost(FileSystemOptions opts, String proxyHost)
>     {
> -        setParam(opts, "proxyHost", proxyHost);
> +        HttpFileSystemOptions.getInstance(opts).setProxyHost 
> (proxyHost);
>     }
>
>     /**
> @@ -92,7 +89,7 @@
>      */
>     public void setProxyPort(FileSystemOptions opts, int proxyPort)
>     {
> -        setParam(opts, "proxyPort", new Integer(proxyPort));
> +        HttpFileSystemOptions.getInstance(opts).setProxyPort 
> (proxyPort);
>     }
>
>     /**
> @@ -104,7 +101,7 @@
>      */
>     public String getProxyHost(FileSystemOptions opts)
>     {
> -        return getString(opts, "proxyHost");
> +        return HttpFileSystemOptions.getInstance(opts).getProxyHost 
> ();
>     }
>
>     /**
> @@ -116,7 +113,7 @@
>      */
>     public int getProxyPort(FileSystemOptions opts)
>     {
> -        return getInteger(opts, "proxyPort", 0);
> +        return HttpFileSystemOptions.getInstance(opts).getProxyPort 
> ();
>     }
>
>     /**
> @@ -124,7 +121,7 @@
>      */
>     public void setProxyAuthenticator(FileSystemOptions opts,  
> UserAuthenticator authenticator)
>     {
> -        setParam(opts, "proxyAuthenticator", authenticator);
> +        HttpFileSystemOptions.getInstance 
> (opts).setProxyAuthenticator(authenticator);
>     }
>
>     /**
> @@ -132,7 +129,7 @@
>      */
>     public UserAuthenticator getProxyAuthenticator(FileSystemOptions  
> opts)
>     {
> -        return (UserAuthenticator) getParam(opts,  
> "proxyAuthenticator");
> +        return HttpFileSystemOptions.getInstance 
> (opts).getProxyAuthenticator();
>     }
>
>     /**
> @@ -140,7 +137,7 @@
>      */
>     public void setCookies(FileSystemOptions opts, Cookie[] cookies)
>     {
> -        setParam(opts, "cookies", cookies);
> +        HttpFileSystemOptions.getInstance(opts).setCookies(cookies);
>     }
>
>     /**
> @@ -148,7 +145,7 @@
>      */
>     public Cookie[] getCookies(FileSystemOptions opts)
>     {
> -        return (Cookie[]) getParam(opts, "cookies");
> +        return HttpFileSystemOptions.getInstance(opts).getCookies();
>     }
>
>     /**
> @@ -156,7 +153,7 @@
>      */
>     public void setMaxTotalConnections(FileSystemOptions opts, int  
> maxTotalConnections)
>     {
> -        setParam(opts,  
> HttpConnectionManagerParams.MAX_TOTAL_CONNECTIONS, new Integer 
> (maxTotalConnections));
> +        HttpFileSystemOptions.getInstance 
> (opts).setMaxTotalConnections(maxTotalConnections);
>     }
>
>     /**
> @@ -166,7 +163,7 @@
>      */
>     public int getMaxTotalConnections(FileSystemOptions opts)
>     {
> -        return getInteger(opts,  
> HttpConnectionManagerParams.MAX_TOTAL_CONNECTIONS,  
> DEFAULT_MAX_CONNECTIONS);
> +        return HttpFileSystemOptions.getInstance 
> (opts).getMaxTotalConnections();
>     }
>
>     /**
> @@ -174,7 +171,7 @@
>      */
>     public void setMaxConnectionsPerHost(FileSystemOptions opts, int  
> maxHostConnections)
>     {
> -        setParam(opts,  
> HttpConnectionManagerParams.MAX_HOST_CONNECTIONS, new Integer 
> (maxHostConnections));
> +        HttpFileSystemOptions.getInstance 
> (opts).setMaxConnectionsPerHost(maxHostConnections);
>     }
>
>     /**
> @@ -184,7 +181,7 @@
>      */
>     public int getMaxConnectionsPerHost(FileSystemOptions opts)
>     {
> -        return getInteger(opts,  
> HttpConnectionManagerParams.MAX_HOST_CONNECTIONS,  
> DEFAULT_MAX_HOST_CONNECTIONS);
> +        return HttpFileSystemOptions.getInstance 
> (opts).getMaxConnectionsPerHost();
>     }
>
>     protected Class getConfigClass()
>
> Added: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/http/HttpFileSystemOptions.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/http/HttpFileSystemOptions.java?rev=814264&view=auto
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystemOptions.java (added)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/http/HttpFileSystemOptions.java Sun Sep 13  
> 06:26:23 2009
> @@ -0,0 +1,183 @@
> +/*
> + * Licensed to the Apache Software Foundation (ASF) under one or more
> + * contributor license agreements.  See the NOTICE file distributed  
> with
> + * this work for additional information regarding copyright  
> ownership.
> + * The ASF licenses this file to You under the Apache License,  
> Version 2.0
> + * (the "License"); you may not use this file except in compliance  
> with
> + * the License.  You may obtain a copy of the License at
> + *
> + *      http://www.apache.org/licenses/LICENSE-2.0
> + *
> + * Unless required by applicable law or agreed to in writing,  
> software
> + * distributed under the License is distributed on an "AS IS" BASIS,
> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or  
> implied.
> + * See the License for the specific language governing permissions  
> and
> + * limitations under the License.
> + */
> +package org.apache.commons.vfs.provider.http;
> +
> +import org.apache.commons.vfs.FileSystemOptions;
> +import org.apache.commons.vfs.UserAuthenticator;
> +import org.apache.commons.vfs.DefaultFileSystemOptions;
> +import org.apache.commons.httpclient.Cookie;
> +import  
> org.apache.commons.httpclient.params.HttpConnectionManagerParams;
> +
> +/**
> + * HTTP File System Options
> + * @author <a href="http://commons.apache.org/vfs/team- 
> list.html">Commons VFS team</a>
> + */
> +public class HttpFileSystemOptions extends DefaultFileSystemOptions
> +{
> +    private static final int DEFAULT_MAX_HOST_CONNECTIONS = 5;
> +
> +    private static final int DEFAULT_MAX_CONNECTIONS = 50;
> +
> +    public HttpFileSystemOptions()
> +    {
> +        this("http.");
> +    }
> +
> +    protected HttpFileSystemOptions(String scheme)
> +    {
> +        super(scheme);
> +    }
> +
> +    public static HttpFileSystemOptions getInstance 
> (FileSystemOptions opts)
> +    {
> +        return FileSystemOptions.makeSpecific 
> (HttpFileSystemOptions.class, opts);
> +    }
> +
> +    /**
> +     * Set the charset used for url encoding<br>
> +     *
> +     * @param chaset the chaset
> +     */
> +    public void setUrlCharset(String chaset)
> +    {
> +        setParam("urlCharset", chaset);
> +    }
> +
> +    /**
> +     * Set the charset used for url encoding<br>
> +     *
> +     * @return the chaset
> +     */
> +    public String getUrlCharset()
> +    {
> +        return getString("urlCharset");
> +    }
> +
> +    /**
> +     * Set the proxy to use for http connection.<br>
> +     * You have to set the ProxyPort too if you would like to have  
> the proxy relly used.
> +     *
> +     * @param proxyHost the host
> +     * @see #setProxyPort
> +     */
> +    public void setProxyHost(String proxyHost)
> +    {
> +        setParam("proxyHost", proxyHost);
> +    }
> +
> +    /**
> +     * Set the proxy-port to use for http connection
> +     * You have to set the ProxyHost too if you would like to have  
> the proxy relly used.
> +     *
> +     * @param proxyPort the port
> +     * @see #setProxyHost
> +     */
> +    public void setProxyPort(int proxyPort)
> +    {
> +        setParam("proxyPort", new Integer(proxyPort));
> +    }
> +
> +    /**
> +     * Get the proxy to use for http connection
> +     * You have to set the ProxyPort too if you would like to have  
> the proxy relly used.
> +     *
> +     * @return proxyHost
> +     * @see #setProxyPort
> +     */
> +    public String getProxyHost()
> +    {
> +        return getString("proxyHost");
> +    }
> +
> +    /**
> +     * Get the proxy-port to use for http the connection
> +     * You have to set the ProxyHost too if you would like to have  
> the proxy relly used.
> +     *
> +     * @return proxyPort: the port number or 0 if it is not set
> +     * @see #setProxyHost
> +     */
> +    public int getProxyPort()
> +    {
> +        return getInteger("proxyPort", 0);
> +    }
> +
> +    /**
> +     * Set the proxy authenticator where the system should get the  
> credentials from
> +     */
> +    public void setProxyAuthenticator(UserAuthenticator  
> authenticator)
> +    {
> +        setParam("proxyAuthenticator", authenticator);
> +    }
> +
> +    /**
> +     * Get the proxy authenticator where the system should get the  
> credentials from
> +     */
> +    public UserAuthenticator getProxyAuthenticator()
> +    {
> +        return (UserAuthenticator) getParam("proxyAuthenticator");
> +    }
> +
> +    /**
> +     * The cookies to add to the reqest
> +     */
> +    public void setCookies(Cookie[] cookies)
> +    {
> +        setParam("cookies", cookies);
> +    }
> +
> +    /**
> +     * The cookies to add to the reqest
> +     */
> +    public Cookie[] getCookies()
> +    {
> +        return (Cookie[]) getParam("cookies");
> +    }
> +
> +    /**
> +     * The maximum number of connections allowed
> +     */
> +    public void setMaxTotalConnections(int maxTotalConnections)
> +    {
> +        setParam(HttpConnectionManagerParams.MAX_TOTAL_CONNECTIONS,  
> new Integer(maxTotalConnections));
> +    }
> +
> +    /**
> +     * Retrieve the maximum number of connections allowed.
> +     * @return The maximum number of connections allowed.
> +     */
> +    public int getMaxTotalConnections()
> +    {
> +        return getInteger 
> (HttpConnectionManagerParams.MAX_TOTAL_CONNECTIONS,  
> DEFAULT_MAX_CONNECTIONS);
> +    }
> +
> +    /**
> +     * The maximum number of connections allowed to any host
> +     */
> +    public void setMaxConnectionsPerHost(int maxHostConnections)
> +    {
> +        setParam(HttpConnectionManagerParams.MAX_HOST_CONNECTIONS,  
> new Integer(maxHostConnections));
> +    }
> +
> +    /**
> +     * Retrieve the maximum number of connections allowed per host.
> +     * @return The maximum number of connections allowed per host.
> +     */
> +    public int getMaxConnectionsPerHost()
> +    {
> +        return getInteger 
> (HttpConnectionManagerParams.MAX_HOST_CONNECTIONS,  
> DEFAULT_MAX_HOST_CONNECTIONS);
> +    }
> +}
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ram/RamFileObject.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ram/RamFileObject.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileObject.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileObject.java Sun Sep 13 06:26:23 2009
> @@ -254,8 +254,7 @@
>     {
>         if (fs.getFileSystemOptions() != null)
>         {
> -            int maxSize = RamFileSystemConfigBuilder.getInstance 
> ().getMaxSize(
> -                    fs.getFileSystemOptions());
> +            int maxSize = fs.getFileSystemOptions().getMaxSize();
>             if (fs.size() + newSize - this.size() > maxSize)
>             {
>                 throw new IOException("FileSystem capacity (" +  
> maxSize
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ram/RamFileProvider.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ram/RamFileProvider.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileProvider.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileProvider.java Sun Sep 13 06:26:23 2009
> @@ -27,6 +27,7 @@
> import org.apache.commons.vfs.FileSystemOptions;
> import  
> org.apache.commons.vfs.provider.AbstractOriginatingFileProvider;
> import org.apache.commons.vfs.provider.FileProvider;
> +import org.apache.commons.vfs.provider.ftp.FtpFileSystemOptions;
>
> /**
>  * RAM File Provider
> @@ -46,12 +47,14 @@
>                     Capability.APPEND_CONTENT,  
> Capability.RANDOM_ACCESS_READ,
>                     Capability.RANDOM_ACCESS_WRITE }));
>
> +    private static final Class<? extends FileSystemOptions>  
> FSOPTIONS_CLASS = RamFileSystemOptions.class;
> +
>     /**
>      * Constructor
>      */
>     public RamFileProvider()
>     {
> -        super();
> +        super(FSOPTIONS_CLASS);
>     }
>
>     /*
> @@ -63,7 +66,7 @@
>     protected FileSystem doCreateFileSystem(FileName name,
>             FileSystemOptions fileSystemOptions) throws  
> FileSystemException
>     {
> -        return new RamFileSystem(name, fileSystemOptions);
> +        return new RamFileSystem(name, fileSystemOptions,  
> FSOPTIONS_CLASS);
>     }
>
>     /*
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ram/RamFileSystem.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ram/RamFileSystem.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystem.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystem.java Sun Sep 13 06:26:23 2009
> @@ -49,10 +49,10 @@
>      * @param rootName
>      * @param fileSystemOptions
>      */
> -    protected RamFileSystem(FileName rootName,
> -            FileSystemOptions fileSystemOptions)
> +    protected RamFileSystem(FileName rootName, FileSystemOptions  
> fileSystemOptions,
> +                            final Class<? extends  
> FileSystemOptions> optionsClass)
>     {
> -        super(rootName, null, fileSystemOptions);
> +        super(rootName, null, fileSystemOptions, optionsClass);
>         this.cache = Collections.synchronizedMap(new HashMap());
>         // create root
>         RamFileData rootData = new RamFileData(rootName) ;
> @@ -82,6 +82,11 @@
>         caps.addAll(RamFileProvider.capabilities);
>     }
>
> +    public RamFileSystemOptions getFileSystemOptions()
> +    {
> +        return super.getOptions();
> +    }
> +
>     /**
>      * @param name
>      * @return children
>
> Modified: commons/proper/vfs/branches/VFS281/core/src/main/java/org/ 
> apache/commons/vfs/provider/ram/RamFileSystemConfigBuilder.java
> URL: http://svn.apache.org/viewvc/commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/commons/vfs/provider/ram/RamFileSystemConfigBuilder.java?rev=814264&r1=814263&r2=814264&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystemConfigBuilder.java (original)
> +++ commons/proper/vfs/branches/VFS281/core/src/main/java/org/apache/ 
> commons/vfs/provider/ram/RamFileSystemConfigBuilder.java Sun Sep 13  
> 06:26:23 2009
> @@ -21,13 +21,12 @@
>
> /**
>  * Config Builder for the RAM filesystem.
> + * @author <a href="http://commons.apache.org/vfs/team- 
> list.html">Commons VFS team</a>
> + * @deprecated Use RamFileSystemOptions instead.
>  */
> public class RamFileSystemConfigBuilder extends  
> FileSystemConfigBuilder
> {
>
> -    /** max size key */
> -    private static final String MAX_SIZE_KEY = "maxsize";
> -
>     /** config builder singleton */
>     private static RamFileSystemConfigBuilder singleton = new  
> RamFileSystemConfigBuilder();
>
> @@ -56,24 +55,24 @@
>     }
>
>     /**
> -     * @param opts
> -     * @return
> +     * @param opts The FileSystemOptions.
> +     * @return The Maximum size of the filesystem.
>      * @see #setMaxSize
>      */
>     public int getMaxSize(FileSystemOptions opts)
>     {
> -        return getInteger(opts, MAX_SIZE_KEY, Integer.MAX_VALUE);
> +        return RamFileSystemOptions.getInstance(opts).getMaxSize();
>     }
>
>     /**
>      * sets the maximum size of the file system
>      *
> -     * @param opts
> -     * @param sizeInBytes
> +     * @param opts The FileSystemOptions.
> +     * @param sizeInBytes The maximum size in bytes of the file  
> system.
>      */
>     public void setMaxSize(FileSystemOptions opts, int sizeInBytes)
>     {
> -        setParam(opts, MAX_SIZE_KEY, new Integer(sizeInBytes));
> +        RamFileSystemOptions.getInstance(opts).setMaxSize 
> (sizeInBytes);
>     }
>
> }
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message