commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rgo...@apache.org
Subject 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:26:24 GMT
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);
     }
 
 }



Mime
View raw message