Release Commons-VFS 2.1 based on RC2

git-svn-id: https://svn.apache.org/repos/asf/commons/proper/vfs/tags/commons-vfs2-project-2.1@1744488 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 7ca2c70..112f13e 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -7,6 +7,22 @@
 
 New features and bug fix release.
 
+Please note that the Clirr report shows several errors.
+These may affect source compatibility.
+However they should not affect binary compatibility, as explained below.
+
+FileContent, FileName, FileObject, FileSystemManager, RandomAccessContent:
+The above interfaces have been updated to add new methods.
+This does not affect binary compatibility; for details please see:
+https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.3-100
+The above changes may affect source compatibility.
+ Changes to method parameters and return types in TarFileObject and TarFileSystem
+The original parameter/return types were the following:
+org.apache.commons.vfs2.provider.tar.TarEntry
+org.apache.commons.vfs2.provider.tar.TarInputStream
+The above were package protected, so any methods using them did not form part of the public API.
+Therefore source and binary compatibility is not affected.
+
 Changes in this version include:
 
 New features:
@@ -120,6 +136,8 @@
 o VFS-364:  Check the href in the response for just a path in addition to a full uri.
 
 Changes:
+o VFS-607:  Update Apache Commons Compress from 1.10 to 1.11.
+o VFS-608:  Update Apache Commons Net from 3.4 to 3.5.
 o VFS-530:  [hdfs] Use stable Apache Hadoop 2.6 dependencies. Thanks to Dave Marion.
 o VFS-601:  Update Apache Commons Net from 3.3 to 3.4.
 o VFS-602:  Update Apache Commons IO from 2.4 to 2.5.
diff --git a/core/pom.xml b/core/pom.xml
index a1c1cf5..d42e497 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -141,6 +141,16 @@
       <artifactId>hadoop-common</artifactId>
       <type>test-jar</type>
       <scope>test</scope>
+      <exclusions>
+        <exclusion>
+         <!-- VFS-606 - tools.jar not available in Java 9
+              This exclusion can be removed after upgrading Hadoop
+              to 2.7.1 or later  
+          -->
+          <groupId>jdk.tools</groupId>
+          <artifactId>jdk.tools</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
diff --git a/core/src/main/java/org/apache/commons/vfs2/provider/bzip2/Bzip2FileObject.java b/core/src/main/java/org/apache/commons/vfs2/provider/bzip2/Bzip2FileObject.java
index 2c90495..8071414 100644
--- a/core/src/main/java/org/apache/commons/vfs2/provider/bzip2/Bzip2FileObject.java
+++ b/core/src/main/java/org/apache/commons/vfs2/provider/bzip2/Bzip2FileObject.java
@@ -33,7 +33,9 @@
 public class Bzip2FileObject extends CompressedFileFileObject<Bzip2FileSystem>
 {
     /**
-     * Deprecated since 2.1. Use {@link #Bzip2FileObject(AbstractFileName, FileObject, Bzip2FileSystem)} instead.
+     * Deprecated since 2.1. 
+     * 
+     * @deprecated Use {@link #Bzip2FileObject(AbstractFileName, FileObject, Bzip2FileSystem)} instead.
      */
     @Deprecated
     protected Bzip2FileObject(final AbstractFileName name, final FileObject container, final CompressedFileFileSystem fs)
diff --git a/core/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java b/core/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java
index 5390be6..b1cb4ae 100644
--- a/core/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java
+++ b/core/src/main/java/org/apache/commons/vfs2/provider/gzip/GzipFileObject.java
@@ -32,7 +32,9 @@
 public class GzipFileObject extends CompressedFileFileObject<GzipFileSystem>
 {
     /**
-     * Deprecated since 2.1. Use {@link #GzipFileObject(AbstractFileName, FileObject, GzipFileSystem)} instead.
+     * Deprecated since 2.1. 
+     * 
+     * @deprecated Use {@link #GzipFileObject(AbstractFileName, FileObject, GzipFileSystem)} instead.
      */
     @Deprecated
     protected GzipFileObject(final AbstractFileName name, final FileObject container, final CompressedFileFileSystem fs) {
diff --git a/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java b/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
index 7d8d0f6..83a4e3c 100644
--- a/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
+++ b/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
@@ -51,8 +51,10 @@
 
     /**
      * Sets the details for this file object.
+     * 
+     * Consider this method package private. TODO Might be made package private in the next major version. 
      */
-    void setTarEntry(final TarArchiveEntry entry)
+    protected void setTarEntry(final TarArchiveEntry entry)
     {
         if (this.entry != null)
         {
diff --git a/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java b/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
index df288b3..8408443 100644
--- a/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
+++ b/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
@@ -41,6 +41,18 @@
 public class WebdavFileProvider
     extends HttpFileProvider
 {
+    
+    /**
+     * The authenticator types used by the WebDAV provider.
+     * 
+     * @deprecated Might be removed in the next major version.
+     */
+    @Deprecated
+    public static final UserAuthenticationData.Type[] AUTHENTICATOR_TYPES = new UserAuthenticationData.Type[]
+        {
+            UserAuthenticationData.USERNAME, UserAuthenticationData.PASSWORD
+        };
+   
     /** The capabilities of the WebDAV provider */
     protected static final Collection<Capability> capabilities =
             Collections.unmodifiableCollection(Arrays.asList(new Capability[]
diff --git a/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java b/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java
index 7e86952..38f5372 100644
--- a/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java
+++ b/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java
@@ -39,10 +39,10 @@
      *             thrown when the getContentInfo API fails.
      */
     @Test
-    public void testGoogle() throws FileSystemException
+    public void testGetContentInfo() throws FileSystemException
     {
         final FileSystemManager fsManager = VFS.getManager();
-        final FileObject fo = fsManager.resolveFile("http://www.google.com/images/logos/ps_logo2.png");
+        final FileObject fo = fsManager.resolveFile("http://www.apache.org/licenses/LICENSE-2.0.txt");
         final FileContent content = fo.getContent();
         Assert.assertNotNull(content);
         // Used to NPE before fix:
diff --git a/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java b/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java
index 5ef3fe8..6d28e1b 100644
--- a/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java
+++ b/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java
@@ -46,7 +46,7 @@
      *             thrown when the System environment contains an invalid URL for an HTTPS proxy.
      */
     @Test
-    public void testGoogle() throws FileSystemException, MalformedURLException
+    public void testGetContentInfo() throws FileSystemException, MalformedURLException
     {
         String httpsProxyHost = null;
         int httpsProxyPort = -1;
@@ -69,7 +69,7 @@
         }
 
         final FileSystemManager fsManager = VFS.getManager();
-        final FileObject fo = fsManager.resolveFile("https://www.google.com/images/logos/ps_logo2.png", opts);
+        final FileObject fo = fsManager.resolveFile("http://www.apache.org/licenses/LICENSE-2.0.txt", opts);
         final FileContent content = fo.getContent();
         Assert.assertNotNull(content);
         // Used to NPE before fix:
diff --git a/pom.xml b/pom.xml
index d764705..ceac4ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,6 +164,11 @@
     <version.checkstyle>2.13</version.checkstyle>
     <!-- make sure bundle plugin has dependency informations for 'optional' -->
     <commons.osgi.excludeDependencies />
+    <!-- Newer versions of clirr throw an NPE buildling the site -->
+    <commons.clirr.version>2.6</commons.clirr.version>
+    <!-- Avoid warnings about being unable to find jars during site buildling -->
+    <dependency.locations.enabled>false</dependency.locations.enabled>
+    <hadoop.version>2.6.0</hadoop.version>
   </properties>
 
   <build>
@@ -365,7 +370,7 @@
       <dependency>
         <groupId>commons-net</groupId>
         <artifactId>commons-net</artifactId>
-        <version>3.4</version>
+        <version>3.5</version>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
@@ -380,7 +385,7 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
-        <version>1.10</version>
+        <version>1.11</version>
       </dependency>
       <dependency>
         <groupId>org.apache.jackrabbit</groupId>
@@ -410,7 +415,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-common</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <exclusions>
           <exclusion>
             <groupId>*</groupId>
@@ -421,7 +426,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdfs</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <exclusions>
           <exclusion>
             <groupId>*</groupId>
@@ -501,7 +506,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-common</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <type>test-jar</type>
         <exclusions>
           <exclusion>
@@ -514,7 +519,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdfs</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
diff --git a/sandbox/pom.xml b/sandbox/pom.xml
index c988f7e..93d7e5e 100644
--- a/sandbox/pom.xml
+++ b/sandbox/pom.xml
@@ -24,13 +24,13 @@
   <name>Apache Commons VFS Sandbox</name>
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-vfs2-sandbox</artifactId>
-  <version>2.1-SNAPSHOT</version>
+  <version>2.1</version>
   <description>Apache Commons VFS is a Virtual File System library - Sandbox.</description>
 
   <parent>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-vfs2-project</artifactId>
-    <version>2.1-SNAPSHOT</version>
+    <version>2.1</version>
     <relativePath>../</relativePath>
   </parent>
 
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 0700dc1..fbbd8f7 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -15,6 +15,29 @@
    See the License for the specific language governing permissions and
    limitations under the License.
 -->
+<!--
+This file is also used by the maven-changes-plugin to generate the release notes.
+Useful ways of finding items to add to this file are:
+
+1.  Add items when you fix a bug or add a feature (this makes the
+release process easy :-).
+
+2.  Do a JIRA search for tickets closed since the previous release.
+
+3.  Use the report generated by the maven-changelog-plugin to see all
+SVN commits. Set the project.properties' maven.changelog.range
+property to the number of days since the last release.
+
+To generate the release notes from this file:
+
+mvn -N changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
+
+then tweak the formatting if necessary
+and commit
+
+The <action> type attribute can be add,update,fix,remove.
+-->
+
 <document xmlns="http://maven.apache.org/changes/1.0.0">
   <properties>
     <title>Apache Commons VFS Changes</title>
@@ -22,10 +45,51 @@
   </properties>
 
   <body>
-    <release version="2.1" date="TBD" description="New features and bug fix release.">
+    <release version="2.1" date="TBD" description="New features and bug fix release.
+
+
+
+Please note that the Clirr report shows several errors.
+
+These may affect source compatibility.
+
+However they should not affect binary compatibility, as explained below.
+
+
+
+FileContent, FileName, FileObject, FileSystemManager, RandomAccessContent:
+
+The above interfaces have been updated to add new methods.
+
+This does not affect binary compatibility; for details please see:
+
+https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.3-100
+
+The above changes may affect source compatibility.
+
+
+Changes to method parameters and return types in TarFileObject and TarFileSystem
+
+The original parameter/return types were the following:
+
+org.apache.commons.vfs2.provider.tar.TarEntry
+
+org.apache.commons.vfs2.provider.tar.TarInputStream
+
+The above were package protected, so any methods using them did not form part of the public API.
+
+Therefore source and binary compatibility is not affected.">
 <!--       <action issue="VFS-443" dev="ggregory" type="update" due-to="nickallen"> -->
 <!--        [Local] Need an easy way to convert from a FileObject to a File. -->
 <!--       </action> -->
+<!-- START Might need to be moved to the next version -->
+     <action issue="VFS-607" dev="ggregory" type="update">
+        Update Apache Commons Compress from 1.10 to 1.11.
+     </action>
+     <action issue="VFS-608" dev="ggregory" type="update">
+        Update Apache Commons Net from 3.4 to 3.5.
+     </action>
+<!-- END Might need to be moved to the next version -->
      <action issue="VFS-424" dev="ecki" type="fix">
         Fix StandardFileSystemManager class loading so it works in a OSGi environment.
      </action>
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index b77ccd6..c30df46 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -81,8 +81,8 @@
             to replace 2.0 with 2.1 without the need for changes to API consumers. VFS 2.1 has introduced some now 
             methods for provider interfaces (like <code>FileObject</code>). If you implement a VFS provider and use the
             corresponding <code>Abstract*</code> or <code>Default*</code> classes, there should be no need to modify
-            the code or recompile the provider.
-            See the <a href="https://archive.apache.org/dist/commons/vfs/RELEASE_NOTES.txt">Release Notes</a> and the
+            the code or recompile the provider. The TarFileProvider is one known exception to compatibility with 2.0.
+            See the <a href="https://dist.apache.org/repos/dist/dev/commons/vfs/RELEASE-NOTES.txt">Release Notes</a> and the
             <a href="commons-vfs2/clirr-report.html">Clirr Report</a> for details. VFS 2.1 adds a new read-only provider
             for the Apache Hadoop (HDFS) File system.
           </p><p>
diff --git a/trunk/.gitignore b/trunk/.gitignore
deleted file mode 100644
index 838eb26..0000000
--- a/trunk/.gitignore
+++ /dev/null
@@ -1,5 +0,0 @@
-target/

-.project

-.classpath

-.settings/

-.svn/

diff --git a/trunk/CONTRIBUTING.md b/trunk/CONTRIBUTING.md
deleted file mode 100644
index bfafdd8..0000000
--- a/trunk/CONTRIBUTING.md
+++ /dev/null
@@ -1,97 +0,0 @@
-<!---
- 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.
--->
-<!---
- +======================================================================+
- |****                                                              ****|
- |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|
- |****                    DO NOT EDIT DIRECTLY                      ****|
- |****                                                              ****|
- +======================================================================+
- | TEMPLATE FILE: contributing-md-template.md                           |
- | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |
- +======================================================================+
- |                                                                      |
- | 1) Re-generate using: mvn commons:contributing-md                    |
- |                                                                      |
- | 2) Set the following properties in the component's pom:              |
- |    - commons.jira.id  (required, alphabetic, upper case)             |
- |                                                                      |
- | 3) Example Properties                                                |
- |                                                                      |
- |  <properties>                                                        |
- |    <commons.jira.id>MATH</commons.jira.id>                           |
- |  </properties>                                                       |
- |                                                                      |
- +======================================================================+
---->
-Contributing to Apache Commons VFS
-======================
-
-You have found a bug or you have an idea for a cool new feature? Contributing code is a great way to give something back to
-the open source community. Before you dig right into the code there are a few guidelines that we need contributors to
-follow so that we can have a chance of keeping on top of things.
-
-Getting Started
----------------
-
-+ Make sure you have a [JIRA account](https://issues.apache.org/jira/).
-+ Make sure you have a [GitHub account](https://github.com/signup/free).
-+ If you're planning to implement a new feature it makes sense to discuss you're changes on the [dev list](http://commons.apache.org/proper/commons-vfs/mail-lists.html) first. This way you can make sure you're not wasting your time on something that isn't considered to be in Apache Commons VFS's scope.
-+ Submit a ticket for your issue, assuming one does not already exist.
-  + Clearly describe the issue including steps to reproduce when it is a bug.
-  + Make sure you fill in the earliest version that you know has the issue.
-+ Fork the repository on GitHub.
-
-Making Changes
---------------
-
-+ Create a topic branch from where you want to base your work (this is usually the master/trunk branch).
-+ Make commits of logical units.
-+ Respect the original code style:
-  + Only use spaces for indentation.
-  + Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.
-  + Check for unnecessary whitespace with git diff --check before committing.
-+ Make sure your commit messages are in the proper format. Your commit message should contain the key of the JIRA issue.
-+ Make sure you have added the necessary tests for your changes.
-+ Run all the tests with `mvn clean verify` to assure nothing else was accidentally broken.
-
-Making Trivial Changes
-----------------------
-
-For changes of a trivial nature to comments and documentation, it is not always necessary to create a new ticket in JIRA.
-In this case, it is appropriate to start the first line of a commit with '(doc)' instead of a ticket number.
-
-Submitting Changes
-------------------
-
-+ Sign the [Contributor License Agreement][cla] if you haven't already.
-+ Push your changes to a topic branch in your fork of the repository.
-+ Submit a pull request to the repository in the apache organization.
-+ Update your JIRA ticket and include a link to the pull request in the ticket.
-
-Additional Resources
---------------------
-
-+ [Contributing patches](http://commons.apache.org/patches.html)
-+ [Apache Commons VFS JIRA project page](https://issues.apache.org/jira/browse/VFS)
-+ [Contributor License Agreement][cla]
-+ [General GitHub documentation](http://help.github.com/)
-+ [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
-+ [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)
-+ #apachecommons IRC channel on freenode.org
-
-[cla]:http://www.apache.org/licenses/#clas
diff --git a/trunk/LICENSE.txt b/trunk/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/trunk/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" BASIS,
-      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
-      implied, including, without limitation, any warranties or conditions
-      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
-      PARTICULAR PURPOSE. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed 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.
diff --git a/trunk/NOTICE.txt b/trunk/NOTICE.txt
deleted file mode 100644
index b49f10e..0000000
--- a/trunk/NOTICE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Commons VFS
-Copyright 2002-2016 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/trunk/README.md b/trunk/README.md
deleted file mode 100644
index f74d6d5..0000000
--- a/trunk/README.md
+++ /dev/null
@@ -1,98 +0,0 @@
-<!---

- 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.

--->

-<!---

- +======================================================================+

- |****                                                              ****|

- |****      THIS FILE IS GENERATED BY THE COMMONS BUILD PLUGIN      ****|

- |****                    DO NOT EDIT DIRECTLY                      ****|

- |****                                                              ****|

- +======================================================================+

- | TEMPLATE FILE: readme-md-template.md                                 |

- | commons-build-plugin/trunk/src/main/resources/commons-xdoc-templates |

- +======================================================================+

- |                                                                      |

- | 1) Re-generate using: mvn commons:readme-md                          |

- |                                                                      |

- | 2) Set the following properties in the component's pom:              |

- |    - commons.componentid (required, alphabetic, lower case)          |

- |    - commons.release.version (required)                              |

- |                                                                      |

- | 3) Example Properties                                                |

- |                                                                      |

- |  <properties>                                                        |

- |    <commons.componentid>math</commons.componentid>                   |

- |    <commons.release.version>1.2</commons.release.version>            |

- |  </properties>                                                       |

- |                                                                      |

- +======================================================================+

---->

-Apache Commons VFS

-===================

-

-Apache Commons VFS is a Virtual File System library.

-

-Documentation

--------------

-

-More information can be found on the [homepage](http://commons.apache.org/proper/commons-vfs).

-The [JavaDoc](http://commons.apache.org/proper/commons-vfs/apidocs/index.html) can be browsed.

-Questions related to the usage of Apache Commons VFS should be posted to the [user mailing list][ml].

-

-Where can I get the latest release?

------------------------------------

-You can download source and binaries from our [download page](http://commons.apache.org/proper/commons-vfs/download.html).

-

-Alternatively you can pull it from the central Maven repositories:

-

-```xml

-<dependency>

-  <groupId>org.apache.commons</groupId>

-  <artifactId>commons-vfs2</artifactId>

-  <version>2.0</version>

-</dependency>

-```

-

-Contributing

-------------

-

-We accept PRs via github. The [developer mailing list][ml] is the main channel of communication for contributors.

-There are some guidelines which will make applying PRs easier for us:

-+ No tabs! Please use spaces for indentation.

-+ Respect the code style.

-+ Create minimal diffs - disable on save actions like reformat source code or organize imports. If you feel the source code should be reformatted create a separate PR for this change.

-+ Provide JUnit tests for your changes and make sure your changes don't break any existing tests by running ```mvn clean test```.

-

-If you plan to contribute on a regular basis, please consider filing a [contributor license agreement](http://www.apache.org/licenses/#clas).

-You can learn more about contributing via GitHub in our [contribution guidelines](https://github.com/apache/commons-vfs/blob/trunk/CONTRIBUTING.md).

-

-License

--------

-Code is under the [Apache Licence v2](http://www.apache.org/licenses/LICENSE-2.0.txt).

-

-Donations

----------

-You like Apache Commons VFS? Then [donate back to the ASF](http://www.apache.org/foundation/contributing.html) to support the development.

-

-Additional Resources

---------------------

-

-+ [Apache Commons Homepage](http://commons.apache.org/)

-+ [Apache Bugtracker (JIRA)](https://issues.apache.org/jira/)

-+ [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)

-+ #apachecommons IRC channel on freenode.org

-

-[ml]:http://commons.apache.org/proper/commons-vfs/mail-lists.html

diff --git a/trunk/README.txt b/trunk/README.txt
deleted file mode 100644
index e3440cc..0000000
--- a/trunk/README.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-To build Commons VFS run
-
-mvn clean install
-
-To build the distribution binaries run
-
-mvn -P apache-release clean install
-
-
diff --git a/trunk/RELEASE-NOTES.txt b/trunk/RELEASE-NOTES.txt
deleted file mode 100644
index 7ca2c70..0000000
--- a/trunk/RELEASE-NOTES.txt
+++ /dev/null
@@ -1,198 +0,0 @@
-              Apache Commons VFS 2.1
-                  RELEASE NOTES
-
-The Apache Commons VFS team is pleased to announce the release of Apache Commons VFS 2.1
-
-Apache Commons VFS is a Virtual File System library.
-
-New features and bug fix release.
-
-Changes in this version include:
-
-New features:
-o VFS-198:  [http] Make user agent configurable. Thanks to Andrew Franklin, Simon Legner.
-o VFS-555:  [hdfs] Add the ability to specify an HDFS configuration file with HdfsFileSystemConfigBuilder.
-o           [example] make VFS Shell print version and implement new 'info' command.
-o VFS-532:  [FTP] Allow configuring remoteVerificationEnabled on FTPClient instances. Thanks to Gareth Daniel Smith.
-o VFS-468:  [FTPS] Add option for KeyManager (and TrustManager) to support FTPS servers that ask for the client certificate for authentication.
-o VFS-412:  [FTPS] Add support for command to set the DataChannelProtectionLevel. Thanks to Jose Juan Montiel.
-o VFS-442:  [HDFS] Add an HDFS FileSystem Provider. Thanks to Dave Marion.
-o VFS-447:  [FTP/FTPS] Update Apache Commons Net to 3.2 from 3.1.
-o VFS-445:  Add FileSystemManager.resolveFile(URI) and resolveFile(URL).
-o VFS-440:  [SFTP] Stream (e.g. netcat) proxy for Sftp file system (aka ProxyCommand). Thanks to bpiwowar.
-o VFS-432:  [HTTP][WebDAV] Allow HTTP follow redirect.
-o VFS-431:  FileSystemOption does not implement toString().
-o VFS-405:  Get/set the file permissions. Thanks to dwaszak.
-o VFS-426:  HTTP URL query string not part of cache key. Thanks to daniel.bergholm.
-o VFS-425:  Add API FileObject.isExecutable().
-o VFS-421:  [SFTP] Configure a custom Identity Repository. Thanks to bpiwowar.
-o VFS-417:  [RAM][Local] Add and implement new API: RandomAccessContent.setLength(long).
-o VFS-400:  Add a FileSelector based on regular expressions.
-o VFS-254:  Let FileObject and FileContent extend java.io.Closeable. Thanks to mzawirski.
-o VFS-252:  [SMB] SmbFileObject does not support setLastModifiedTime while jcifs supports it.
-o VFS-313:  [FTP] Configuration does not include option for setting socket timeout. Thanks to bdavis@saintandreas.org.
-o VFS-414:  [FTP] Add config API to set the file type.
-o VFS-182:  [FTP] Usage of FTP with heterogeneous FTP server (possibility of using Ascii file type).
-o VFS-381:  Iterate over a FileObject using the Java "foreach" statement, to provide all descendents of a FileObject.
-o VFS-373:  Add FileContent write APIs.
-o VFS-372:  Add constructors FileDepthSelector() and FileDepthSelector(int).
-o VFS-371:  Add FileObject API deleteAll().
-o VFS-370:  Add a FileExtensionSelector class.
-o VFS-367:  Add APIs FileObject isFile(), FileObject isFolder(), and FileName isFile().
-
-Fixed Bugs:
-o VFS-424:  Fix StandardFileSystemManager class loading so it works in a OSGi environment.
-o VFS-490:  [vfsclassloader] Do not open folders with .jar extension. Adds tests.
-o VFS-582:  [tests] revert rename of getTestDirectoryFile to make test classes more compatible for external providers.
-o VFS-480:  Make startup of SoftRefsFileCache cleaner thread work and less racy to avoid leaks.
-o VFS-549:  Use File.seperator instead of getProperty("file.separator").
-o VFS-567:  [ftp] Ignore exceptions while QUIT/disconnect. Thanks to Antonio Petrelli.
-o VFS-572:  [sftp] better documentation for knownhosts file option. Thanks to Sandra Parsick.
-o VFS-574:  Ensure FileOpertionProviders are closed. Adds some testcases.
-            The error code for missing operations exceptions corrected: vfs.operation/operation-not-supported.error
-o VFS-279:  [local] Avoid ClassCastException when replicating local files while OnCall caching is active. Thanks to Didier Earith, Simon Legner.
-o VFS-297:  [sftp] VSF fails to reuse FileSystem instances if FileSystemOptions contain
-            an array as value. Reported for SFTP using identities. Thanks to Kirill Safonov, Jimmy Praet.
-o VFS-202:  [http] Allow URLs responding with 405 to HEAD requests. Thanks to Sergey Vladimirov, Simon Legner.
-o VFS-490:  [hdfs] Make OSGi package imports for hdfs resolution=optional.
-            Removed all scopes from dependency management.
-o VFS-560:  [http] avoid initial HEAD request to root of HttpFileSystem as it might be wrong context.
-o VFS-236:  [smb] Allow SMB to be used with no authentication. Thanks to Matt Casters.
-o VFS-564:  Make some loggers static. Thanks to Dmitry Konstantinov.
-o VFS-557:  [webdav][test] Create WebDav test directory in target/test. Avoid creating core/jackrabbit/tmp.
-            Logfiles of Jackrabbit are preserved when -DWebdavProviderTestCase.Debug=true is specified.
-o VFS-558:  Make moveTo() and getParent() work with CacheStrategy.ON_CALL.
-            In case of FTP Provider it would lead otherwise to an UnsupportedOperationException.
-o           [sandbox] RACRandomAccessFile is now in org.apache.commons.vfs2.util package (so sandbox has only one overlapping package).
-o VFS-552:  [sandbox] include vfs-providers.xml in JAR for dynamic registration of mime and smb providers.
-o VFS-551:  Javadoc: make it clear that DefaultCryptor is only an obfuscation function. Thanks to David Camilo Espitia Manrique.
-o VFS-309:  DefaultFileContent will remove thread data whenever possible to avoid leaks.
-o VFS-487:  DefaultFileMonitor detects recreated files. Thanks to Dave Marion.
-o VFS-523:  [HDFS] Make HdfsFileObject.equal use system hashcode/equals instead of
-            wrongly comparing file path only. Thanks to Roger Whitcomb.
-o VFS-544:  [Virtual] Allow virtual file systems and virtual file system provider
-            to be closed, to avoid memory leak.
-o VFS-142:  Use ThreadLocal.remove() to clean out FileContentThreadData objects. Thanks to Ryan Boettcher.
-o VFS-545:  Make DefaultFilesCache remove reference to filesystem when it is cleared (closed).
-o VFS-521:  [Ram][Tests] Make RAM provider test pass on Java 8
-            (JDK-8042377, self-suppression not permitted, MonitorOutputStream#close()).
-o VFS-338:  [Local][Tests] Avoid IndexOutOfBoundsException when validating local file URIs. Thanks to Daniel R..
-o VFS-489:  [tests] ProviderWriteTests#testListener does not fail cleanly. Thanks to Bernd Eckenfels.
-o VFS-486:  DefaultFileMonitor sleeps for twice the specified delay when checkPerRun > 0. Thanks to Sam Haldane.
-o VFS-482:  Wrong assertion messages in RAM provider test case.
-o VFS-460:  Dependency to commons-compress set as optional.
-o VFS-464:  StaticUserAuthenticator should return only requested authentication data.
-o VFS-461:  [FTP/FTPS] ConfigBuilder does not consider system properties for the value of SoTimeout and Encoding.
-o VFS-458:  [FTPS] Provider missed functionality and bug fixes already available for the FTP provider.
-o VFS-452:  [HTTP] HttpFileObject read/write attributes should reflect underlying FileSystem capabilities. Thanks to Jean-Marc Borer.
-o VFS-285:  AbstractFileObject.getChildren() may corrupt its internal state if a filename
-            can not be resolved. Thanks to Kirill Safonov.
-o VFS-450:  [HDFS] HDFSFileSystem.resolveFile() does not honor CacheStrategy.ON_RESOLVE. Thanks to Dave Marion.
-o VFS-448:  commons-vfs 2.0 JAR has flawed OSGi MANIFEST.MF.
-o VFS-439:  StaticUserAuthenticator usage example wrong. Thanks to pensecit.
-o VFS-437:  [FTP] StackOverFlowError getting the type of a directory with a symbolic link to a parent directory with the same name. Thanks to denniszhu, danttran, jpowang.
-o VFS-435:  FileSystemConfigBuilder does not use prefix for some system property lookups. Thanks to george scott.
-o VFS-434:  FileSystemException should reuse IOException's chained exception.
-o VFS-433:  [WebDAV] Message "vfs.provider.webdav/propfind.error" is not defined.
-o VFS-430:  The SoftRefFilesCache class logs clear text password. Thanks to antonin.stefanutti.
-o VFS-429:  Remove extra FileSystem ivar in AbstractFileObject subclasses with generics.
-o VFS-427:  [HTTP] NPE on HttpFileObject.getContent().getContentInfo(). Thanks to awelynant.
-o VFS-406:  [RAM] resize throws ArrayOOBE when shrinking in size. Thanks to mp1.
-o VFS-353:  [FTP] Client should call logout before disconnecting. Thanks to bergander.
-o VFS-408:  CompressedFileFileObject Exception thrown when container file has no extension. Thanks to anilm2@yahoo.com.
-o VFS-258:  [SFTP][RAM] Unsafe casting to AbstractFileObject subclasses in doRename(). Thanks to mzawirski.
-o VFS-413:  [FTP] No support for FTP servers with non Latin-1 control encoding. Thanks to polivenok.
-o VFS-200:  [SFTP] Failure when files are very large.
-o VFS-296:  [FTP] FTP socket timeout setting doesn't work if connect hangs. Thanks to andreasp.
-o VFS-410:  [SFTP] SftpFileObject getInputStream(long) reads the whole file into memory. Thanks to mstockhammer.
-o VFS-407:  [RAM] Reading a RAM FileSystem file fails because it never returns EOF -1. Thanks to mp1.
-o VFS-382:  SFTP getChildren() does not fail when called on a file.
-o VFS-380:  FTP connect.error message used instead of SFTP connect.error message.
-o VFS-378:  Tar error message are missing from resource file.
-o VFS-374:  Incorrect lazy initialization of static field org.apache.commons.vfs2.util.Messages.resources in org.apache.commons.vfs2.util.Messages.findMessage(String)Add FileContent write APIs.
-o VFS-355:  The read method of RamFileRandomAccessContent's input stream does not return -1 at eof. Thanks to Miroslav Pokorny.
-o VFS-356:  Throw an IOException if an attempt is made to seek to a position before the start of the file.
-o VFS-359:  Don't delete a RamFileObject if it is open. Thanks to Miroslav Pokorny.
-o VFS-352:  ZipFileSystem now uses an internal Map as a cache for all the files in the zip archive.
-o VFS-351:  Chain the SftpException in the FileSystemException. Thanks to John Backstrand.
-o VFS-325:  Allow # character in file names. Thanks to Larry Reeve.
-o VFS-335:  Use atomic variables in MonitorInputStream.
-o VFS-364:  Check the href in the response for just a path in addition to a full uri.
-
-Changes:
-o VFS-530:  [hdfs] Use stable Apache Hadoop 2.6 dependencies. Thanks to Dave Marion.
-o VFS-601:  Update Apache Commons Net from 3.3 to 3.4.
-o VFS-602:  Update Apache Commons IO from 2.4 to 2.5.
-o VFS-579:  Update Jsch from 0.1.51 to 0.1.53.
-o VFS-542:  Update Jsch from 0.1.50 to 0.1.51.
-o VFS-578:  Update Apache Commons Compress from 1.9 to 1.10.
-o VFS-541:  Update Apache Commons Compress from 1.6 to 1.9.
-o VFS-540:  Update Apache Commons Logging from 1.1.3 to 1.2.
-o VFS-539:  Update Apache Commons Lang from 3.1 to 3.3.2.
-o VFS-526:  [HDFS][Tests] Support HDFS testing on Windows (but keep profile "no-hdfs" enabled on Windows VFS-529).
-o VFS-453:  [HTTP][WEBDAV] Add file system options for connect and socket timeout. Thanks to Jiri Syrovy.
-o VFS-167:  [FTP] Allow Proxy support to file system options. Thanks to Jimmy Praet.
-o VFS-520:  Make JavaDoc compatible with Java 8 tool.
-o VFS-518:  Documentation of FileSystemOptions should be more helpful. Thanks to Roland Illig.
-o VFS-500:  VFSClassLoader.findResources missing. Thanks to Bernd Eckenfels.
-o VFS-514:  [tests] PermissionsTests leaves unclean test directory. Thanks to Bernd Eckenfels.
-o VFS-501:  Hide passwords from log/console output. Thanks to Yves Schumann.
-o VFS-496:  Resource translation issues. Thanks to Bernd Eckenfels.
-o VFS-494:  [SFTP] No support for SFTP servers with non Latin-1 file name encoding. Thanks to Allen Xudong Cheng.
-o VFS-368:  [SFTP] Documentation implies that "userDirIsRoot" defaults to true. Thanks to Brendan Long.
-o VFS-265:  [FTP] Set user dir as root dir by default. Thanks to Scott Bjerstedt.
-o VFS-484:  [SFTP] Update Jsch to 0.1.50 from 0.1.49.
-o VFS-507:  Update to Apache Commons Collection 4.1 from 3.2.1 and use generics.
-o VFS-476:  Update Apache Commons Logging to 1.1.3 from 1.1.2.
-o VFS-475:  Update Apache Commons Net to 3.3 from 3.2.
-o VFS-506:  [Tar][Bzip2] Update Apache Commons Compress to 1.6 from 1.5.
-o VFS-471:  Update to Apache Commons Compress 1.5.
-o VFS-283:  [SFTP] SFTP provider did not support passphrase-protected keys nor the exchange of a public key with
-            a requesting SFTP server. To support such triples (private key/passphrase/public key) instead of private
-            keys only, a new structure EntityInfo has been created. SftpFileSystemConfigBuilder has now the new
-            getter and setter methods getIdentityInfo and setIdentity info which replace the now deprecated methods
-            getIdentities and setIdentities.
-o VFS-463:  FileSytemConfigBuilder supports system properties for the value of enum-based configuration entries.
-o VFS-462:  [FTPS] Deprecate FtpsFileSystemConfigBuilder.setFtpsType and FtpsFileSystemConfigBuilder.getFtpsType
-            in favor of FtpsFileSystemConfigBuilder.setFtpsMode and FtpsFileSystemConfigBuilder.getFtpsMode which
-            use new enum FtpsMode instead.
-o VFS-459:  [FTP/FTPS] Sent commands and the received answer is logged at debug level.
-o VFS-457:  Update test dependencies: sshd-core version 0.7.0 to 0.8.0; mina-core 2.0.4 to 2.0.7; junit 4.11 to 4.12; slf4j-* 1.5.5 to 1.5.11
-o VFS-456:  Use org.bouncycastel:bcprov-jdk16 instead of org.bouncycastle:bcprof-jdk15on since Java 1.6 is required.
-o VFS-415:  Update VFS requirement to Java 1.6.
-o VFS-418:  Update to Apache Commons Compress 1.4.1.
-o VFS-321:  AbstractFileObject sometimes uses getFileSystem() and sometimes references "fs" field directly. Thanks to sebb.
-o VFS-327:  UriParser.canonicalizePath possible NPE for filenameParser. Thanks to sebb.
-o VFS-416:  [SFTP] Update Jsch to version 0.1.49 from 0.1.47.
-o VFS-395:  [POM] Remove maven-scm-* dependencies.
-o VFS-411:  [SFTP] Update Jsch to version 0.1.47 from 0.1.46.
-o VFS-409:  Update Apache Commons Compress to 1.4 from 1.3.
-o VFS-404:  [FTP][FTPS] Update Apache Commons Net to 3.1 from 3.0.1.
-o VFS-402:  [WebDAV] Update Apache Jackrabbit 1.5.2 to 1.6.5.
-o VFS-401:  Update JSch to 0.1.46 from 0.1.45 for the SFTP provider.
-o VFS-392:  Build tests WebDAV file system with an embedded WebDAV server (Apache Jackrabbit).
-o VFS-391:  Build tests URL HTTP file system with an embedded HTTP server (Apache HttpComponent Core).
-o VFS-390:  Use variable argument list in org.apache.commons.vfs2.util.Messages instead of Object[].
-o VFS-389:  Use variable argument lists in FileSystemException instead of Object[]s.
-o VFS-388:  Build tests SFTP file system with an embedded SFTP server (Apache MINA).
-o VFS-387:  Build tests FTP file system with an embedded FTP server (Apache MINA).
-o VFS-386:  Build tests HTTP file system with an embedded HTTP server (Apache HttpComponent Core).
-o VFS-385:  Add HTTP status code to HTTP file provider exception messages when available.
-o VFS-384:  Update Apache Commons Net to 3.0.1 from 2.2 for FTP and SFTP providers.
-o VFS-383:  Update JSch to 0.1.45 from 0.1.42 for the SFTP provider.
-o VFS-379:  Replace custom BZIP2 code with Apache Commons Compress 1.3.
-o VFS-377:  Replace custom TAR code with Apache Commons Compress 1.3.
-o VFS-375:  Upgrade to Apache Commons Compress 1.3 from 1.2.
-o VFS-366:  Can't sort a List of FileObject's, FileObject to implement Comparable<FileObject>.
-o VFS-341:  Enable logging of JSch using the Commons Logging Log object in SftpClientFactory. Thanks to Rajika Kumarasiri.
-o VFS-361:  Upgrade commons collections version to 3.2.1.
-
-Removed:
-o VFS-469:  Remove unused dependency to javax.jcr:jcr.
-
-Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html
-
-For complete information on Apache Commons VFS, including instructions on how to submit bug reports,
-patches, or suggestions for improvement, see the Apache Apache Commons VFS website:
-
-http://commons.apache.org/proper/commons-vfs/
diff --git a/trunk/checkstyle-suppressions.xml b/trunk/checkstyle-suppressions.xml
deleted file mode 100644
index b44b9d8..0000000
--- a/trunk/checkstyle-suppressions.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-
-<!DOCTYPE suppressions PUBLIC
-    "-//Puppy Crawl//DTD Suppressions 1.0//EN"
-    "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
-
-<!--
-   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.
--->
-
-<!-- Exceptions for Checkstyle -->
-
-<suppressions>
-
-    <!-- Disable the warnings for the generated classes -->
-    <suppress checks=".*" files="ParseException.java"/>
-    <suppress checks=".*" files="PropertyListParser.java"/>
-    <suppress checks=".*" files="PropertyListParserConstants.java"/>
-    <suppress checks=".*" files="PropertyListParserTokenManager.java"/>
-    <suppress checks=".*" files="SimpleCharStream.java"/>
-    <suppress checks=".*" files="Token.java"/>
-    <suppress checks=".*" files="TokenMgrError.java"/>
-    
-    <suppress checks="MissingSwitchDefault" files="PropertiesConfiguration.java"/>
-
-</suppressions>
diff --git a/trunk/checkstyle.properties b/trunk/checkstyle.properties
deleted file mode 100644
index 27906bf..0000000
--- a/trunk/checkstyle.properties
+++ /dev/null
@@ -1,24 +0,0 @@
-#   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.
-
-checkstyle.maxlinelen = 120
-checkstyle.lcurly.type = nl
-checkstyle.lcurly.method = nl
-checkstyle.lcurly.other = nl
-checkstyle.rcurly = alone
-checkstyle.paren.pad = ignore
-checkstyle.ignore.whitespace.cast = true
-checkstyle.javadoc.scope = package
-checkstyle.require.packagehtml = true
diff --git a/trunk/checkstyle.xml b/trunk/checkstyle.xml
deleted file mode 100644
index 966243b..0000000
--- a/trunk/checkstyle.xml
+++ /dev/null
@@ -1,213 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module PUBLIC
-    "-//Puppy Crawl//DTD Check Configuration 1.1//EN"
-    "http://www.puppycrawl.com/dtds/configuration_1_1.dtd">
-
-<!--
-   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.
--->
-
-<!-- Checkstyle configuration that checks the commons-configuration coding conventions -->
-
-<module name="Checker">
-    <property name="localeLanguage" value="en"/>
-
-    <!-- Checks that a package.html file exists for each package.     -->
-    <!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
-    <module name="JavadocPackage">
-      <property name="allowLegacy" value="true"/>
-    </module>
-
-    <!-- Checks whether files end with a new line.                        -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
-    <module name="NewlineAtEndOfFile"/>
-
-    <!-- Checks that property files contain the same keys.         -->
-    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
-    <module name="Translation"/>
-
-    <!-- Checks for Tab characters -->
-    <!-- See http://checkstyle.sourceforge.net/config_whitespace.html#FileTabCharacter -->
-    <module name="FileTabCharacter">
-        <property name="fileExtensions" value="java"/>
-    </module>
-
-    <!-- Checks for white space at the end of the line -->
-    <!-- See http://checkstyle.sourceforge.net/config_regexp.html -->
-    <module name="RegexpSingleline">
-      <property name="format" value="\s+$"/>
-      <property name="message" value="Line has trailing spaces."/>
-      <property name="fileExtensions" value="java"/>
-    </module>
-
-    <!-- @author tags are deprecated -->
-    <module name="RegexpSingleline">
-      <property name="format" value="^\s+\*\s+@author\s"/>
-      <property name="message" value="Deprecated @author tag"/>
-      <property name="fileExtensions" value="java"/>
-      <property name="severity" value="warning"/>
-    </module>
-
-    <!-- Don't use SVN $Date$ variable - it's localized and causes source archives to differ from the SVN tag -->
-    <module name="RegexpSingleline">
-      <property name="format" value="\$Date.+\$"/>
-      <property name="message" value="Don't use SVN $Date$ variable"/>
-      <property name="fileExtensions" value="java"/>
-      <property name="severity" value="warning"/>
-    </module>
-
-    <!-- Exceptions -->
-    <!--<module name="SuppressionFilter">
-        <property name="file" value="conf/checkstyle-suppressions.xml"/>
-    </module> -->
-
-    <module name="TreeWalker">
-
-        <property name="cacheFile" value="${checkstyle.cache.file}"/>
-
-        <!-- Checks for Javadoc comments.                     -->
-        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
-        <module name="JavadocMethod">
-            <property name="scope" value="public"/>
-            <property name="allowUndeclaredRTE" value="true"/>
-              <property name="allowMissingJavadoc" value="true"/>
-        </module>
-        <!-- http://checkstyle.sourceforge.net/config_javadoc.html#JavadocType -->
-        <module name="JavadocType">
-            <!-- It is unfortunate to have to do this but checkstyle doesn't allow custom tags -->
-            <property name="allowUnknownTags" value="true"/>
-        </module>
-        <module name="JavadocVariable">
-            <property name="scope" value="protected"/>
-        </module>
-        <module name="JavadocStyle">
-            <property name="scope" value="public"/>
-        </module>
-
-        <!-- Checks for Naming Conventions.                  -->
-        <!-- See http://checkstyle.sf.net/config_naming.html -->
-        <module name="ConstantName">
-          <property name="format" value="^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$|^capabilities$|^log$"/>
-        </module>
-        <module name="LocalFinalVariableName"/>
-        <module name="LocalVariableName"/>
-        <module name="MemberName"/>
-        <module name="MethodName"/>
-        <module name="PackageName"/>
-        <module name="ParameterName"/>
-        <module name="StaticVariableName"/>
-        <module name="TypeName"/>
-
-        <!-- Following interprets the header file as regular expressions. -->
-        <!-- <module name="RegexpHeader"/>                                -->
-
-        <!-- Checks for imports                              -->
-        <!-- See http://checkstyle.sf.net/config_import.html -->
-        <module name="AvoidStarImport"/>
-        <module name="IllegalImport"/> <!-- defaults to sun.* packages -->
-        <module name="RedundantImport"/>
-        <module name="UnusedImports"/>
-
-        <!-- Checks for Size Violations.                    -->
-        <!-- See http://checkstyle.sf.net/config_sizes.html -->
-        <!--<module name="FileLength"/>-->
-        <module name="LineLength">
-            <property name="max" value="120"/>
-        </module>
-        <module name="MethodLength"/>
-        <module name="ParameterNumber">
-            <property name="max" value="10"/>
-        </module>
-
-        <!-- Checks for whitespace                               -->
-        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
-        <module name="EmptyForIteratorPad"/>
-        <module name="NoWhitespaceAfter"/>
-        <module name="NoWhitespaceBefore"/>
-        <module name="OperatorWrap">
-           <property name="tokens" value="ASSIGN"/>
-           <property name="option" value="eol"/>
-        </module>
-        <module name="ParenPad"/>
-        <module name="WhitespaceAfter"/>
-        <module name="WhitespaceAround"/>
-        <module name="GenericWhitespace"/>
-
-        <!-- Modifier Checks                                    -->
-        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
-        <module name="ModifierOrder"/>
-        <module name="RedundantModifier"/>
-
-        <!-- Checks for blocks. You know, those {}'s         -->
-        <!-- See http://checkstyle.sf.net/config_blocks.html -->
-        <module name="AvoidNestedBlocks"/>
-        <!-- Require empty catch blocks to have at least a comment -->
-        <module name="EmptyBlock">
-          <property name="option" value="text"/>
-          <property name="tokens" value="LITERAL_CATCH"/>
-        </module>
-        <module name="LeftCurly">
-            <property name="option" value="nl"/>
-        </module>
-        <module name="NeedBraces"/>
-        <module name="RightCurly">
-            <property name="option" value="alone"/>
-        </module>
-
-        <!-- Checks for common coding problems               -->
-        <!-- See http://checkstyle.sf.net/config_coding.html -->
-        <module name="CovariantEquals"/>
-        <module name="EqualsHashCode"/>
-        <module name="IllegalInstantiation"/>
-        <!-- <module name="InnerAssignment"/> -->
-        <module name="MagicNumber">
-            <property name="ignoreNumbers" value="-1,0,1,2,3"/>
-        </module>
-        <module name="RedundantThrows">
-            <property name="allowUnchecked" value="true"/>
-        </module>
-        <module name="SimplifyBooleanExpression"/>
-        <module name="SimplifyBooleanReturn"/>
-        <module name="StringLiteralEquality"/>
-        <module name="SuperClone"/>
-        <module name="SuperFinalize"/>
-        <module name="DeclarationOrder"/>
-        <!-- <module name="ExplicitInitialization"/> -->
-        <module name="DefaultComesLast"/>
-        <module name="FallThrough"/>
-        <module name="MultipleVariableDeclarations"/>
-        <!-- <module name="UnnecessaryParentheses"/> -->
-
-        <!-- Checks for class design                         -->
-        <!-- See http://checkstyle.sf.net/config_design.html -->
-        <module name="FinalClass"/>
-        <module name="HideUtilityClassConstructor"/>
-        <module name="InterfaceIsType"/>
-        <module name="VisibilityModifier">
-            <property name="protectedAllowed" value="true"/>
-        </module>
-
-        <!-- Miscellaneous other checks.                   -->
-        <!-- See http://checkstyle.sf.net/config_misc.html -->
-        <module name="ArrayTypeStyle"/>
-        <module name="TodoComment">
-            <property name="severity" value="info"/>
-        </module>
-        <module name="UpperEll"/>
-
-    </module>
-
-</module>
diff --git a/trunk/core/pom.xml b/trunk/core/pom.xml
deleted file mode 100644
index a1c1cf5..0000000
--- a/trunk/core/pom.xml
+++ /dev/null
@@ -1,359 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!--
-   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.
-  -->
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-  <modelVersion>4.0.0</modelVersion>
-
-  <name>Apache Commons VFS Core</name>
-  <groupId>org.apache.commons</groupId>
-  <artifactId>commons-vfs2</artifactId>
-  <version>2.1</version>
-  <description>Apache Commons VFS is a Virtual File System library.</description>
-  <url>http://commons.apache.org/proper/commons-vfs/</url>
-
-  <parent>
-    <groupId>org.apache.commons</groupId>
-    <artifactId>commons-vfs2-project</artifactId>
-    <version>2.1</version>
-    <relativePath>../</relativePath>
-  </parent>
-
-  <dependencies>
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>ant</groupId>
-      <artifactId>ant</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>commons-net</groupId>
-      <artifactId>commons-net</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-compress</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>commons-httpclient</groupId>
-      <artifactId>commons-httpclient</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-webdav</artifactId>
-      <optional>true</optional>
-    </dependency>
-    <dependency>
-      <groupId>com.jcraft</groupId>
-      <artifactId>jsch</artifactId>
-      <optional>true</optional>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- Test FTP with Apache FTP Server (MINA) -->
-    <dependency>
-      <groupId>org.apache.ftpserver</groupId>
-      <artifactId>ftpserver-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- Test SFTP with Apache SHHd Server (MINA) -->
-    <dependency>
-      <groupId>org.apache.sshd</groupId>
-      <artifactId>sshd-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.bouncycastle</groupId>
-      <artifactId>bcprov-jdk16</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- Test HTTP with Apache HttpComponent Core -->
-    <dependency>
-      <groupId>org.apache.httpcomponents</groupId>
-      <artifactId>httpcore-nio</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- Test WebDAV with Apache Jackrabbit-->
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-standalone</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <!-- Test HDFS with Apache Hadoop -->
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-common</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hadoop</groupId>
-      <artifactId>hadoop-hdfs</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.ws.rs</groupId>
-      <artifactId>jsr311-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <properties>
-    <vfs.parent.dir>${basedir}/..</vfs.parent.dir>
-  </properties>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/java</directory>
-        <excludes>
-          <exclude>**/*.html</exclude>
-          <exclude>**/*.java</exclude>
-        </excludes>
-      </resource>
-      <!-- include NOTICE/LICENSE in generated jar -->
-      <resource>
-        <directory>${vfs.parent.dir}</directory>
-        <targetPath>META-INF</targetPath>
-        <includes>
-          <include>NOTICE.txt</include>
-          <include>LICENSE.txt</include>
-        </includes>
-      </resource>
-    </resources>
-
-
-    <testResources>
-      <testResource>
-        <directory>src/test/resources</directory>
-      </testResource>
-      <!-- include NOTICE/LICENSE in generated test jar -->
-      <testResource>
-        <directory>${vfs.parent.dir}</directory>
-        <targetPath>META-INF</targetPath>
-        <includes>
-          <include>NOTICE.txt</include>
-          <include>LICENSE.txt</include>
-        </includes>
-      </testResource>
-    </testResources>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <executions>
-          <execution>
-            <phase>process-test-classes</phase>
-            <configuration>
-              <target>
-                <move todir="${project.build.testOutputDirectory}/test-data/code" failonerror="false">
-                  <fileset dir="${project.build.testOutputDirectory}/code" />
-                </move>
-              </target>
-            </configuration>
-            <goals>
-              <goal>run</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <trimStackTrace>false</trimStackTrace>
-          <systemPropertyVariables>
-            <test.basedir>target/test-classes/test-data</test.basedir>
-            <test.basedir.res>test-data</test.basedir.res>
-            <derby.stream.error.file>target/derby.log</derby.stream.error.file>
-          </systemPropertyVariables>
-          <excludes>
-            <!-- Main class -->
-            <exclude>**/RunTest.java</exclude>
-            <!-- inner classes -->
-            <exclude>**/*$*</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <id>webdav</id>
-      <activation>
-        <activeByDefault>false</activeByDefault>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-              <systemPropertyVariables>
-                <test.webdav.uri>${test.webdav.uri}</test.webdav.uri>
-              </systemPropertyVariables>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <profile>
-      <id>ftp</id>
-      <activation>
-        <activeByDefault>false</activeByDefault>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-              <systemPropertyVariables>
-                <test.ftp.uri>${test.ftp.uri}</test.ftp.uri>
-              </systemPropertyVariables>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <profile>
-      <id>sftp</id>
-      <activation>
-        <activeByDefault>false</activeByDefault>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-              <systemPropertyVariables>
-                <test.sftp.uri>${test.sftp.uri}</test.sftp.uri>
-              </systemPropertyVariables>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <profile>
-      <id>http</id>
-      <activation>
-        <activeByDefault>false</activeByDefault>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <configuration>
-              <systemPropertyVariables>
-                <test.http.uri>${test.http.uri}</test.http.uri>
-              </systemPropertyVariables>
-            </configuration>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <!-- On Windows we disable hdfs tests by default. -->
-    <profile>
-        <id>no-test-hdfs</id>
-        <activation>
-            <activeByDefault>false</activeByDefault>
-            <os>
-                <family>Windows</family>
-            </os>
-        </activation>
-        <build>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-surefire-plugin</artifactId>
-                    <configuration>
-                        <excludes>
-                            <exclude>**/HdfsFileProviderTest.java</exclude>
-                            <exclude>**/HdfsFileProviderTestCase.java</exclude>
-                        </excludes>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </build>
-    </profile>
-  </profiles>
-
-</project>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/AllFileSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/AllFileSelector.java
deleted file mode 100644
index 9255618..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/AllFileSelector.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * A {@link FileSelector} that selects everything.
- */
-public class AllFileSelector
-    implements FileSelector
-{
-    /**
-     * Determines if a file or folder should be selected.
-     * @param fileInfo The file selection information.
-     * @return true if the file should be selected, false otherwise.
-     */
-    @Override
-    public boolean includeFile(final FileSelectInfo fileInfo)
-    {
-        return true;
-    }
-
-    /**
-     * Determines whether a folder should be traversed.
-     * @param fileInfo The file selection information.
-     * @return true if descendants should be traversed, false otherwise.
-     */
-    @Override
-    public boolean traverseDescendents(final FileSelectInfo fileInfo)
-    {
-        return true;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/CacheStrategy.java b/trunk/core/src/main/java/org/apache/commons/vfs2/CacheStrategy.java
deleted file mode 100644
index c2785e5..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/CacheStrategy.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * An enumerated type to deal with the various cache strategies.
- */
-public enum CacheStrategy
-{
-    /**
-     * Deal with cached data manually. Call {@link FileObject#refresh()} to refresh the object data.
-     */
-    MANUAL("manual"),
-
-    /**
-     * Refresh the data every time you request a file from {@link FileSystemManager#resolveFile}.
-     */
-    ON_RESOLVE("onresolve"),
-
-    /**
-     * Refresh the data every time you call a method on the fileObject.
-     * You'll use this only if you really need the latest info as this setting is a major performance
-     * loss.
-     */
-    ON_CALL("oncall");
-
-    /**
-     * Cache strategy name
-     */
-    private final String realName;
-
-    private CacheStrategy(final String name)
-    {
-        this.realName = name;
-    }
-
-    /**
-     * Returns the name of the scope.
-     * @return the name of the scope.
-     */
-    @Override
-    public String toString()
-    {
-        return realName;
-    }
-
-    /**
-     * Returns the name of the scope.
-     * @return the name of the scope.
-     */
-    public String getName()
-    {
-        return realName;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java b/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java
deleted file mode 100644
index 8fe8474..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/Capability.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * An enumerated type representing the capabilities of files and file systems.
- */
-public enum Capability
-{
-    /**
-     * File content can be read.
-     */
-    READ_CONTENT,
-
-    /**
-     * File content can be written.
-     */
-    WRITE_CONTENT,
-
-    /**
-     * File content can be read in random mode.
-     */
-    RANDOM_ACCESS_READ,
-
-    /**
-     * File content length can be set in random mode.
-     */
-    RANDOM_ACCESS_SET_LENGTH,
-
-    /**
-     * File content can be written in random mode.
-     */
-    RANDOM_ACCESS_WRITE,
-
-    /**
-     * File content can be appended.
-     */
-    APPEND_CONTENT,
-
-    /**
-     * File attributes are supported.
-     */
-    ATTRIBUTES,
-
-    /**
-     * File last-modified time is supported.
-     */
-    LAST_MODIFIED,
-
-    /**
-     * File get last-modified time is supported.
-     */
-    GET_LAST_MODIFIED,
-
-    /**
-     * File set last-modified time is supported.
-     */
-    SET_LAST_MODIFIED_FILE,
-
-    /**
-     * folder set last-modified time is supported.
-     */
-    SET_LAST_MODIFIED_FOLDER,
-
-    /**
-     * File content signing is supported.
-     */
-    SIGNING,
-
-    /**
-     * Files can be created.
-     */
-    CREATE,
-
-    /**
-     * Files can be deleted.
-     */
-    DELETE,
-
-    /**
-     * Files can be renamed.
-     */
-    RENAME,
-
-    /**
-     * The file type can be determined.
-     */
-    GET_TYPE,
-
-    /**
-     * Children of files can be listed.
-     */
-    LIST_CHILDREN,
-
-    /**
-     * URI are supported.  Files without this capability use URI that do not
-     * globally and uniquely identify the file.
-     */
-    URI,
-
-    /**
-     * File system attributes are supported.
-     */
-    FS_ATTRIBUTES,
-
-    /**
-     * Junctions are supported.
-     */
-    JUNCTIONS,
-
-    /**
-     * The set of attributes defined by the Jar manifest specification are
-     * supported.  The attributes aren't necessarily stored in a manifest file.
-     */
-    MANIFEST_ATTRIBUTES,
-
-    /**
-     * The provider itself do not provide a filesystem. It simply resolves a full name
-     * and dispatches the request back to the filesystemmanager.<br>
-     * A provider with this capability cant tell much about the capabilities about the
-     * finally used filesystem in advance.
-     */
-    DISPATCHER,
-
-    /**
-     * A compressed filesystem is a filesystem which use compression.
-     */
-    COMPRESS,
-
-    /**
-     * A virtual filesystem can be an archive like tar or zip.
-     */
-    VIRTUAL,
-
-    /**
-     * Provides directories which allows you to read its content through
-     * {@link org.apache.commons.vfs2.FileContent#getInputStream()}.
-     * @since 2.0
-     */
-    DIRECTORY_READ_CONTENT;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileChangeEvent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileChangeEvent.java
deleted file mode 100644
index 74a72ab..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileChangeEvent.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * An event fired when a file is changed.
- */
-public class FileChangeEvent
-{
-    /**
-     * The file object
-     */
-    private final FileObject file;
-
-    public FileChangeEvent(final FileObject file)
-    {
-        this.file = file;
-    }
-
-    /**
-     * Returns the file that changed.
-     * @return The FileObject that was changed.
-     */
-    public FileObject getFile()
-    {
-        return file;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileContent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileContent.java
deleted file mode 100644
index 95ea8fc..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileContent.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.security.cert.Certificate;
-import java.util.Map;
-
-import org.apache.commons.vfs2.util.RandomAccessMode;
-
-/**
- * Represents the data content of a file.
- * <p>
- * To read from a file, use the {@code InputStream} returned by {@link #getInputStream()}.
- * </p>
- * <p>
- * To write to a file, use the {@code OutputStream} returned by {@link #getOutputStream()} method. This will create
- * the file, and the parent folder, if necessary.
- * </p>
- * <p>
- * A file may have multiple InputStreams open at the same time.
- * </p>
- *
- * @see FileObject#getContent
- */
-public interface FileContent extends Closeable
-{
-    /**
-     * Returns the file which this is the content of.
-     * @return The FileObject this is the content of.
-     */
-    FileObject getFile();
-
-    /**
-     * Determines the size of the file, in bytes.
-     *
-     * @return The size of the file, in bytes.
-     * @throws FileSystemException If the file does not exist, or is being written to, or on error
-     *                             determining the size.
-     */
-    long getSize() throws FileSystemException;
-
-    /**
-     * Determines the last-modified timestamp of the file.
-     *
-     * @return The last-modified timestamp.
-     * @throws FileSystemException If the file does not exist, or is being written to, or on error
-     *                             determining the last-modified timestamp.
-     */
-    long getLastModifiedTime() throws FileSystemException;
-
-    /**
-     * Sets the last-modified timestamp of the file.  Creates the file if
-     * it does not exist.
-     *
-     * @param modTime The time to set the last-modified timestamp to.
-     * @throws FileSystemException If the file is read-only, or is being written to, or on error
-     *                             setting the last-modified timestamp.
-     */
-    void setLastModifiedTime(long modTime) throws FileSystemException;
-
-    /**
-     * Checks if an attribute of the file's content exists.
-     *
-     * @param attrName The name of the attribute.
-     * @return true if the attribute exists, false otherwise.
-     * @throws FileSystemException If the file does not exist, or does not support
-     *                             attributes.
-     */
-    boolean hasAttribute(String attrName)
-        throws FileSystemException;
-
-    /**
-     * Returns a read-only map of this file's attributes.
-     * @return The attribute Map.
-     * @throws FileSystemException If the file does not exist, or does not support attributes.
-     */
-    Map<String, Object> getAttributes() throws FileSystemException;
-
-    /**
-     * Lists the attributes of the file's content.
-     *
-     * @return The names of the attributes.  Never returns null;
-     * @throws FileSystemException If the file does not exist, or does not support attributes.
-     */
-    String[] getAttributeNames() throws FileSystemException;
-
-    /**
-     * Gets the value of an attribute of the file's content.
-     *
-     * @param attrName The name of the attribute.  Attribute names are case insensitive.
-     * @return The value of the attribute, or null if the attribute value is
-     *         unknown.
-     * @throws FileSystemException If the file does not exist, or does not support attributes.
-     */
-    Object getAttribute(String attrName) throws FileSystemException;
-
-    /**
-     * Sets the value of an attribute of the file's content.  Creates the
-     * file if it does not exist.
-     *
-     * @param attrName The name of the attribute.
-     * @param value    The value of the attribute.
-     * @throws FileSystemException If the file does not exist, or is read-only, or does not support
-     *                             attributes, or on error setting the attribute.
-     */
-    void setAttribute(String attrName, Object value)
-        throws FileSystemException;
-
-    /**
-     * Removes the value of an attribute of the file's content.
-     *
-     * @param attrName The name of the attribute.
-     * @throws FileSystemException If the file does not exist, or is read-only, or does not support
-     *                             attributes, or on error removing the attribute.
-     */
-    void removeAttribute(String attrName)
-        throws FileSystemException;
-
-    /**
-     * Retrieves the certificates if any used to sign this file or folder.
-     *
-     * @return The certificates, or an empty array if there are no certificates or
-     *         the file does not support signing.
-     * @throws FileSystemException If the file does not exist, or is being written.
-     */
-    Certificate[] getCertificates() throws FileSystemException;
-
-    /**
-     * Returns an input stream for reading the file's content.
-     * <p>
-     * There may only be a single input or output stream open for the
-     * file at any time.
-     *
-     * @return An input stream to read the file's content from.  The input
-     *         stream is buffered, so there is no need to wrap it in a
-     *         {@code BufferedInputStream}.
-     * @throws FileSystemException If the file does not exist, or is being read, or is being written,
-     *                             or on error opening the stream.
-     */
-    InputStream getInputStream() throws FileSystemException;
-
-    /**
-     * Returns an output stream for writing the file's content.
-     * <p>
-     * If the file does not exist, this method creates it, and the parent
-     * folder, if necessary.  If the file does exist, it is replaced with
-     * whatever is written to the output stream.
-     * <p>
-     * There may only be a single input or output stream open for the
-     * file at any time.
-     *
-     * @return An output stream to write the file's content to.  The stream is
-     *         buffered, so there is no need to wrap it in a
-     *         {@code BufferedOutputStream}.
-     * @throws FileSystemException If the file is read-only, or is being read, or is being written,
-     *                             or on error opening the stream.
-     */
-    OutputStream getOutputStream() throws FileSystemException;
-
-    /**
-     * Returns an stream for reading/writing the file's content.
-     * <p>
-     * If the file does not exist, and you use one of the write* methods,
-     * this method creates it, and the parent folder, if necessary.
-     * If the file does exist, parts of the file are replaced with whatever is written
-     * at a given position.
-     * <p>
-     * There may only be a single input or output stream open for the
-     * file at any time.
-     *
-     * @param mode The mode to use to access the file.
-     * @return the stream for reading and writing the file's content.
-     * @throws FileSystemException If the file is read-only, or is being read, or is being written,
-     *                             or on error opening the stream.
-     */
-    RandomAccessContent getRandomAccessContent(final RandomAccessMode mode) throws FileSystemException;
-
-    /**
-     * Returns an output stream for writing the file's content.
-     * <p>
-     * If the file does not exist, this method creates it, and the parent
-     * folder, if necessary.  If the file does exist, it is replaced with
-     * whatever is written to the output stream.
-     * <p>
-     * There may only be a single input or output stream open for the
-     * file at any time.
-     *
-     * @param bAppend true if you would like to append to the file.
-     *        This may not be supported by all implementations.
-     * @return An output stream to write the file's content to.  The stream is
-     *         buffered, so there is no need to wrap it in a
-     *         {@code BufferedOutputStream}.
-     * @throws FileSystemException If the file is read-only, or is being read, or is being written,
-     *                             or bAppend is true and the implementation does not support it,
-     *                             or on error opening the stream.
-     */
-    OutputStream getOutputStream(boolean bAppend) throws FileSystemException;
-
-    /**
-     * Closes all resources used by the content, including any open stream.
-     * Commits pending changes to the file.
-     * <p>
-     * This method is a hint to the implementation that it can release
-     * resources.  This object can continue to be used after calling this
-     * method.
-     *
-     * @throws FileSystemException if an error occurs closing the file.
-     */
-    @Override
-    void close() throws FileSystemException;
-
-    /**
-     * get the content info. e.g. type, encoding, ...
-     * @return the FileContentInfo
-     * @throws FileSystemException if an error occurs.
-     */
-    FileContentInfo getContentInfo() throws FileSystemException;
-
-    /**
-     * check if this file has open streams.
-     * @return true if the file is open, false otherwise.
-     */
-    boolean isOpen();
-
-    /**
-     * Writes this content to another FileContent.
-     *
-     * @param output
-     *            The target OutputStream.
-     * @throws IOException
-     *             if an error occurs writing the content.
-     * @return the total number of bytes written
-     * @since 2.1
-     */
-    long write(FileContent output) throws IOException;
-
-    /**
-     * Writes this content to another FileObject.
-     *
-     * @param file
-     *            The target FileObject.
-     * @throws IOException
-     *             if an error occurs writing the content.
-     * @return the total number of bytes written
-     * @since 2.1
-     */
-    long write(FileObject file) throws IOException;
-
-    /**
-     * Writes this content to an OutputStream.
-     *
-     * @param output
-     *            The target OutputStream.
-     * @return the total number of bytes written
-     * @throws IOException
-     *             if an error occurs writing the content.
-     * @since 2.1
-     */
-    long write(OutputStream output) throws IOException;
-
-    /**
-     * Writes this content to an OutputStream.
-     *
-     * @param output
-     *            The target OutputStream.
-     * @param bufferSize
-     *            The buffer size to write data chunks.
-     * @return the total number of bytes written
-     * @throws IOException
-     *             if an error occurs writing the file.
-     * @since 2.1
-     */
-    long write(OutputStream output, int bufferSize) throws IOException;
-
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileContentInfo.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileContentInfo.java
deleted file mode 100644
index 052018d..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileContentInfo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Informs on the content of a file with content type and encoding.
- */
-public interface FileContentInfo
-{
-    /**
-     * Gets the content encoding.
-     *
-     * @return The file content encoding.
-     */
-    String getContentEncoding();
-
-    /**
-     * Gets the content type.
-     *
-     * @return The file content type.
-     */
-    String getContentType();
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileContentInfoFactory.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileContentInfoFactory.java
deleted file mode 100644
index 689f203..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileContentInfoFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Creates {@link FileContentInfo} instances to determine the content-info for given file contents.
- */
-public interface FileContentInfoFactory
-{
-    /**
-     * Creates a FileContentInfo for a the given FileContent.
-     *
-     * @param fileContent
-     *            Use this FileContent to create a matching FileContentInfo
-     * @return a FileContentInfo for the given FileContent.
-     * @throws FileSystemException
-     *             when a problem occurs creating the FileContentInfo.
-     */
-    FileContentInfo create(FileContent fileContent) throws FileSystemException;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileDepthSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileDepthSelector.java
deleted file mode 100644
index 364f00d..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileDepthSelector.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * A {@link FileSelector} that selects all files in a particular depth range.
- */
-public class FileDepthSelector implements FileSelector
-{
-    /**
-     * The minimum depth
-     */
-    private final int minDepth;
-
-    /**
-     * The maximum depth
-     */
-    private final int maxDepth;
-
-    /**
-     * Creates a selector with the given minimum and maximum depths.
-     *
-     * @param minDepth
-     *            minimum depth
-     * @param maxDepth
-     *            maximum depth
-     */
-    public FileDepthSelector(final int minDepth, final int maxDepth)
-    {
-        this.minDepth = minDepth;
-        this.maxDepth = maxDepth;
-    }
-
-    /**
-     * Creates a selector with the same minimum and maximum depths.
-     *
-     * @param minMaxDepth
-     *            minimum and maximum depth
-     * @since 2.1
-     */
-    public FileDepthSelector(final int minMaxDepth)
-    {
-        this(minMaxDepth, minMaxDepth);
-    }
-
-    /**
-     * Creates a selector with the same minimum and maximum depths of 0.
-     *
-     * @since 2.1
-     */
-    public FileDepthSelector()
-    {
-        this(0, 0);
-    }
-
-    /**
-     * Determines if a file or folder should be selected.
-     *
-     * @param fileInfo
-     *            The file selection information
-     * @return true if the file or folder should be included, false otherwise.
-     */
-    @Override
-    public boolean includeFile(final FileSelectInfo fileInfo)
-    {
-        final int depth = fileInfo.getDepth();
-        return minDepth <= depth && depth <= maxDepth;
-    }
-
-    /**
-     * Determines whether a folder should be traversed.
-     *
-     * @param fileInfo
-     *            The file selection information
-     * @return true if the file or folder should be traversed, false otherwise.
-     */
-    @Override
-    public boolean traverseDescendents(final FileSelectInfo fileInfo)
-    {
-        return fileInfo.getDepth() < maxDepth;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileExtensionSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileExtensionSelector.java
deleted file mode 100644
index e0a0e72..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileExtensionSelector.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*

- * 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.vfs2;

-

-import java.util.Arrays;

-import java.util.Collection;

-import java.util.HashSet;

-import java.util.Set;

-

-/**

- * A {@link FileSelector} that selects based on file extensions.

- * <p>

- * The extension comparison is case insensitive.

- * </p>

- * <p>

- * The selector makes a copy of a given Collection or array. Changing the object passed in the constructors will not

- * affect the selector.

- * </p>

- *

- * @since 2.1

- */

-public class FileExtensionSelector implements FileSelector

-{

-

-    /**

-     * The extensions to select.

-     */

-    private final Set<String> extensions = new HashSet<String>();

-

-    /**

-     * Creates a new selector for the given extensions.

-     *

-     * @param extensions

-     *            The extensions to be included by this selector.

-     */

-    public FileExtensionSelector(final Collection<String> extensions)

-    {

-        if (extensions != null)

-        {

-            this.extensions.addAll(extensions);

-        }

-    }

-

-    /**

-     * Creates a new selector for the given extensions.

-     *

-     * @param extensions

-     *            The extensions to be included by this selector.

-     */

-    public FileExtensionSelector(final String... extensions)

-    {

-        if (extensions != null)

-        {

-            this.extensions.addAll(Arrays.asList(extensions));

-        }

-    }

-

-    /**

-     * Determines if a file or folder should be selected.

-     *

-     * @param fileInfo

-     *            The file selection information.

-     * @return true if the file should be selected, false otherwise.

-     */

-    @Override

-    public boolean includeFile(final FileSelectInfo fileInfo)

-    {

-        if (this.extensions == null)

-        {

-            return false;

-        }

-        for (final String extension : this.extensions)

-        {

-            if (fileInfo.getFile().getName().getExtension().equalsIgnoreCase(extension))

-            {

-                return true;

-            }

-        }

-        return false;

-    }

-

-    /**

-     * Determines whether a folder should be traversed.

-     *

-     * @param fileInfo

-     *            The file selection information.

-     * @return true if descendants should be traversed, fase otherwise.

-     */

-    @Override

-    public boolean traverseDescendents(final FileSelectInfo fileInfo)

-    {

-        return true;

-    }

-}

diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileFilter.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileFilter.java
deleted file mode 100644
index 828619f..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileFilter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * This interface is used to select files when traversing the direct children of the base.
- */
-public interface FileFilter
-{
-    /**
-     * Determines if a file or folder should be selected.
-     *
-     * @param fileInfo the file or folder to select.
-     * @return true if the file should be selected.
-     */
-    boolean accept(final FileSelectInfo fileInfo);
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java
deleted file mode 100644
index 3b65dde..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileFilterSelector.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * 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.vfs2;
-
-import org.apache.commons.vfs2.util.Messages;
-
-/**
- * A {@link org.apache.commons.vfs2.FileSelector} that selects all children of the given fileObject.
- * <p>
- * This is to mimic the {@link java.io.FileFilter} interface.
- */
-public class FileFilterSelector extends FileDepthSelector
-{
-    /**
-     * The FileFilter.
-     */
-    private final FileFilter fileFilter;
-
-    public FileFilterSelector()
-    {
-        this(null);
-    }
-
-    public FileFilterSelector(final FileFilter fileFilter)
-    {
-        super(1, 1);
-        this.fileFilter = fileFilter;
-    }
-
-    /**
-     * Determines if a file or folder should be selected.
-     * @param fileInfo The file selection information.
-     * @return true if the file or folder should be included, false otherwise.
-     */
-    @Override
-    public boolean includeFile(final FileSelectInfo fileInfo)
-    {
-        if (!super.includeFile(fileInfo))
-        {
-            return false;
-        }
-
-        return accept(fileInfo);
-    }
-
-    /**
-     * Determines whether the file should be selected.
-     * @param fileInfo The file selection information.
-     * @return true if the file should be selected, false otherwise.
-     */
-    public boolean accept(final FileSelectInfo fileInfo)
-    {
-        if (fileFilter != null)
-        {
-            return fileFilter.accept(fileInfo);
-        }
-
-        throw new IllegalArgumentException(Messages.getString("vfs.selectors/filefilter.missing.error"));
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileListener.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileListener.java
deleted file mode 100644
index 06c016e..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileListener.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Listens for changes to a file.
- */
-public interface FileListener
-{
-    /**
-     * Called when a file is created.
-     *
-     * @param event The FileChangeEvent.
-     * @throws Exception if an error occurs.
-     */
-    void fileCreated(FileChangeEvent event) throws Exception;
-
-    /**
-     * Called when a file is deleted.
-     *
-     * @param event The FileChangeEvent.
-     * @throws Exception if an error occurs.
-     */
-    void fileDeleted(FileChangeEvent event) throws Exception;
-
-    /**
-     * Called when a file is changed.
-     * <p>
-     * This will only happen if you monitor the file using {@link FileMonitor}.
-     *
-     * @param event The FileChangeEvent.
-     * @throws Exception if an error occurs.
-     */
-    void fileChanged(FileChangeEvent event) throws Exception;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileMonitor.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileMonitor.java
deleted file mode 100644
index 716ef27..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileMonitor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * FileMonitor interface.
- */
-public interface FileMonitor
-{
-    /**
-     * Adds a file to be monitored.
-     * @param file The FileObject to monitor.
-     */
-    void addFile(final FileObject file);
-
-    /**
-     * Removes a file from being monitored.
-     * @param file The FileObject to stop monitoring.
-     */
-    void removeFile(final FileObject file);
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileName.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileName.java
deleted file mode 100644
index 6dce63f..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileName.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Represents a file name.  File names are immutable, and work correctly as
- * keys in hash tables.
- *
- * @see FileObject
- */
-public interface FileName extends Comparable<FileName>
-{
-    /**
-     * The separator character used in file paths.
-     */
-    char SEPARATOR_CHAR = '/';
-
-    /**
-     * The separator used in file paths.
-     */
-    String SEPARATOR = "/";
-
-    /**
-     * The absolute path of the root of a file system.
-     */
-    String ROOT_PATH = "/";
-
-    /**
-     * Returns the base name of this file.  The base name is the last element
-     * of the file name.  For example the base name of
-     * {@code /somefolder/somefile} is {@code somefile}.
-     * <p>
-     * The root file of a file system has an empty base name.
-     * </p>
-     *
-     * @return The base name.  Never returns null.
-     */
-    String getBaseName();
-
-    /**
-     * Returns the absolute path of this file, within its file system.  This
-     * path is normalized, so that {@code .} and {@code ..} elements
-     * have been removed.  Also, the path only contains {@code /} as its
-     * separator character.  The path always starts with {@code /}
-     * <p>
-     * The root of a file system has {@code /} as its absolute path.
-     * </p>
-     *
-     * @return The path.  Never returns null.
-     */
-    String getPath();
-
-    /**
-     * Returns the absolute path of this file, within its file system.  This
-     * path is normalized, so that {@code .} and {@code ..} elements
-     * have been removed.  Also, the path only contains {@code /} as its
-     * separator character.  The path always starts with {@code /}
-     * <p>
-     * The root of a file system has {@code /} as its absolute path.
-     * </p>
-     * <p>
-     * In contrast to {@link #getPath()} the path is decoded i.e. all %nn stuff
-     * replaced by its character.
-     * </p>
-     *
-     * @return The path.  Never returns null.
-     * @throws FileSystemException if the path is not correctly encoded
-     */
-    String getPathDecoded() throws FileSystemException;
-
-    /**
-     * Returns the extension of this file name.
-     *
-     * @return The extension.  Returns an empty string if the name has no
-     *         extension.
-     */
-    String getExtension();
-
-    /**
-     * Returns the depth of this file name, within its file system.  The depth
-     * of the root of a file system is 0.  The depth of any other file is
-     * 1 + the depth of its parent.
-     *
-     * @return The depth of this file name.
-     */
-    int getDepth();
-
-    /**
-     * Returns the URI scheme of this file.
-     *
-     * @return The URI scheme of this file.
-     */
-    String getScheme();
-
-    /**
-     * Returns the absolute URI of this file.
-     *
-     * @return the absolute URI of this file.
-     */
-    String getURI();
-
-    /**
-     * Returns the root URI of the file system this file belongs to.
-     *
-     * @return the root URI.
-     */
-    String getRootURI();
-
-    /**
-     * Finds the root of the file system.
-     *
-     * @return the file system root.
-     */
-    FileName getRoot();
-
-    /**
-     * Returns the file name of the parent of this file.  The root of a
-     * file system has no parent.
-     *
-     * @return A {@link FileName} object representing the parent name.  Returns
-     *         null for the root of a file system.
-     */
-    FileName getParent();
-
-    /**
-     * Resolves a name, relative to this file name.  Equivalent to calling
-     * {@code resolveName( path, NameScope.FILE_SYSTEM )}.
-     *
-     * @param name The name to resolve.
-     * @return A {@link FileName} object representing the resolved file name.
-     * @throws FileSystemException If the name is invalid.
-     */
-    // FileName resolveName(String name) throws FileSystemException;
-
-    /**
-     * Resolves a name, relative to this file name.  Refer to {@link NameScope}
-     * for a description of how names are resolved.
-     *
-     * @param name  The name to resolve.
-     * @param scope The scope to use when resolving the name.
-     * @return A {@link FileName} object representing the resolved file name.
-     * @throws FileSystemException If the name is invalid.
-     */
-    // FileName resolveName(String name, NameScope scope)
-    //     throws FileSystemException;
-
-    /**
-     * Converts a file name to a relative name, relative to this file name.
-     *
-     * @param name The name to convert to a relative path.
-     * @return The relative name.
-     * @throws FileSystemException On error.
-     */
-    String getRelativeName(FileName name) throws FileSystemException;
-
-    /**
-     * Determines if another file name is an ancestor of this file name.
-     *
-     * @param ancestor The FileName to check.
-     * @return true if another file name is an ancestor of this file name.
-     */
-    boolean isAncestor(FileName ancestor);
-
-    /**
-     * Determines if another file name is a descendent of this file name.
-     *
-     * @param descendent the FileName to check.
-     * @return true if the other FileName is a descendent of this file name.
-     */
-    boolean isDescendent(FileName descendent);
-
-    /**
-     * Determines if another file name is a descendent of this file name.
-     *
-     * @param descendent the FileName to check.
-     * @param nameScope the NameScope of the FileName.
-     * @return true if the other FileName is a descendent of this file name.
-     */
-    boolean isDescendent(FileName descendent, NameScope nameScope);
-
-    /**
-     * Checks if this file name is a name for a regular file.
-     *
-     * @return true if this file name is a name for a regular file.
-     * @throws FileSystemException if an error occurs.
-     * @see #getType()
-     * @see FileType#FILE
-     * @since 2.1
-     */
-    boolean isFile() throws FileSystemException;
-
-    /**
-     * Returns the requested or current type of this name.
-     * <p>
-     * The "requested" type is the one determined during resolving the name.
-     * In this case the name is a {@link FileType#FOLDER} if it ends with an "/" else
-     * it will be a {@link FileType#FILE}.
-     * <p>
-     * Once attached it will be changed to reflect the real type of this resource.
-     *
-     * @return {@link FileType#FOLDER} or {@link FileType#FILE}
-     */
-    FileType getType();
-
-    /**
-     * Returns a "friendly path", this is a path without a password.
-     * <p>
-     * This path can not be used to resolve the path again.
-     *
-     * @return the friendly URI as a String.
-     */
-    String getFriendlyURI();
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileNotFolderException.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileNotFolderException.java
deleted file mode 100644
index 48b8066..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileNotFolderException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Delivers a file-not-folder exception which happens when trying to issue {@link FileObject#getChildren()} on a file.
- * @since 2.0
- */
-public class FileNotFolderException extends FileSystemException
-{
-    /**
-     * serialVersionUID format is YYYYMMDD for the date of the last binary change.
-     */
-    private static final long serialVersionUID = 20101208L;
-
-    public FileNotFolderException(final Object info0)
-    {
-        super("vfs.provider/list-children-not-folder.error", info0);
-    }
-
-    public FileNotFolderException(final Object info0, final Throwable throwable)
-    {
-        super("vfs.provider/list-children-not-folder.error", info0, throwable);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileNotFoundException.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileNotFoundException.java
deleted file mode 100644
index 04e5333..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileNotFoundException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * delivers a file-not-found exception.
- * @since 2.0
- */
-public class FileNotFoundException extends FileSystemException
-{
-    /**
-     * serialVersionUID format is YYYYMMDD for the date of the last binary change.
-     */
-    private static final long serialVersionUID = 20101208L;
-
-    public FileNotFoundException(final Object info0)
-    {
-        super("vfs.provider/read-not-file.error", info0);
-    }
-
-    public FileNotFoundException(final Object info0, final Throwable throwable)
-    {
-        super("vfs.provider/read-not-file.error", info0, throwable);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileObject.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileObject.java
deleted file mode 100644
index 9c5124f..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileObject.java
+++ /dev/null
@@ -1,456 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.Closeable;
-import java.net.URL;
-import java.util.List;
-
-import org.apache.commons.vfs2.operations.FileOperations;
-
-/**
- * Represents a file, and is used to access the content and
- * structure of the file.
- * <p>
- * Files are arranged in a hierarchy.  Each hierarchy forms a
- * <i>file system</i>.  A file system represents things like a local OS
- * file system, a windows share, an HTTP server, or the contents of a Zip file.
- * <p>
- * There are two types of files: <i>Folders</i>, which contain other files,
- * and <i>normal files</i>, which contain data, or <i>content</i>.  A folder may
- * not have any content, and a normal file cannot contain other files.
- *
- * <h2>File Naming</h2>
- *
- * TODO - write this.
- *
- * <h2>Reading and Writing a File</h2>
- *
- * Reading and writing a file, and all other operations on the file's
- * <i>content</i>, is done using the {@link FileContent} object returned
- * by {@link #getContent}.
-
- * <h2>Creating and Deleting a File</h2>
- *
- * A file is created using either {@link #createFolder}, {@link #createFile},
- * or by writing to the file using one of the {@link FileContent} methods.
- * <p>
- * A file is deleted using {@link #delete}.  Recursive deletion can be
- * done using {@link #delete(FileSelector)}.
- *
- * <h2>Finding Files</h2>
- *
- * Other files in the <i>same</i> file system as this file can be found
- * using:
- * <ul>
- * <li>{@link #findFiles} to find a set of matching descendants in in the same file system.</li>
- * <li>{@link #getChildren} and {@link #getChild} to find the children of this file.</li>
- * <li>{@link #getParent} to find the folder containing this file.</li>
- * <li>{@link #getFileSystem} to find another file in the same file system.</li>
- * <li>{@link #resolveFile} to find another file relative to this file.</li>
- * </ul>
- * To find files in another file system, use a {@link FileSystemManager}.
- *
- * <h2>Iterating Files</h2>
- *
- * You can iterate over a FileObject using the Java "foreach" statement, which provides all descendants of a File
- * Object.
- *
- * <h2>Sorting Files</h2>
- *
- * Files may be sorted using {@link java.util.Arrays#sort(Object[]) Arrays.sort()}
- * and {@link java.util.Collections#sort(List) Collections.sort()}.
- *
- * @see FileSystemManager
- * @see FileContent
- * @see FileName
- */
-public interface FileObject extends Comparable<FileObject>, Iterable<FileObject>, Closeable
-{
-    /**
-     * Queries the file if it is possible to rename it to newfile.
-     *
-     * @param newfile the new file(-name)
-     * @return true it this is the case
-     */
-    boolean canRenameTo(FileObject newfile);
-
-    /**
-     * Closes this file, and its content.  This method is a hint to the
-     * implementation that it can release any resources associated with
-     * the file.
-     * <p>
-     * The file object can continue to be used after this method is called.
-     * </p>
-     *
-     * @throws FileSystemException On error closing the file.
-     * @see FileContent#close
-     */
-    @Override
-    void close() throws FileSystemException;
-
-    /**
-     * Copies another file, and all its descendants, to this file.
-     * <p>
-     * If this file does not exist, it is created.  Its parent folder is also
-     * created, if necessary.  If this file does exist, it is deleted first.
-     * </p>
-     * <p>
-     * This method is not transactional.  If it fails and throws an
-     * exception, this file will potentially only be partially copied.
-     * </p>
-     *
-     * @param srcFile  The source file to copy.
-     * @param selector The selector to use to select which files to copy.
-     * @throws FileSystemException If this file is read-only, or if the source file does not exist,
-     *                             or on error copying the file.
-     */
-    void copyFrom(FileObject srcFile, FileSelector selector)
-        throws FileSystemException;
-
-    /**
-     * Creates this file, if it does not exist.  Also creates any ancestor
-     * folders which do not exist.  This method does nothing if the file
-     * already exists and is a file.
-     *
-     * @throws FileSystemException If the file already exists with the wrong type, or the parent
-     *                             folder is read-only, or on error creating this file or one of
-     *                             its ancestors.
-     */
-    void createFile() throws FileSystemException;
-
-    /**
-     * Creates this folder, if it does not exist.  Also creates any ancestor
-     * folders which do not exist.  This method does nothing if the folder
-     * already exists.
-     *
-     * @throws FileSystemException If the folder already exists with the wrong type, or the parent
-     *                             folder is read-only, or on error creating this folder or one of
-     *                             its ancestors.
-     */
-    void createFolder() throws FileSystemException;
-
-    /**
-     * Deletes this file.  Does nothing if this file does not exist of if it is a
-     * folder that has children.  Does not delete any descendants of this file,
-     * use {@link #delete(FileSelector)} or {@link #deleteAll()} for that.
-     *
-     * @return true if this object has been deleted
-     * @throws FileSystemException If this file is a non-empty folder, or if this file is read-only,
-     *                             or on error deleteing this file.
-     */
-    boolean delete() throws FileSystemException;
-
-    /**
-     * Deletes all descendants of this file that match a selector.  Does
-     * nothing if this file does not exist.
-     *
-     * <p>This method is not transactional.  If it fails and throws an
-     * exception, this file will potentially only be partially deleted.
-     * </p>
-     *
-     * @param selector The selector to use to select which files to delete.
-     * @return the number of deleted objects
-     * @throws FileSystemException If this file or one of its descendants is read-only, or on error
-     *                             deleting this file or one of its descendants.
-     */
-    int delete(FileSelector selector) throws FileSystemException;
-
-    /**
-     * Deletes this file and all children.
-     *
-     * @return the number of deleted files.
-     * @throws FileSystemException if an error occurs.
-     * @see #delete(FileSelector)
-     * @see Selectors#SELECT_ALL
-     */
-    int deleteAll() throws FileSystemException;
-
-    /**
-     * Determines if this file exists.
-     *
-     * @return {@code true} if this file exists, {@code false} if not.
-     * @throws FileSystemException On error determining if this file exists.
-     */
-    boolean exists() throws FileSystemException;
-
-    /**
-     * Finds the set of matching descendants of this file, in depthwise order.
-     *
-     * @param selector The selector to use to select matching files.
-     * @return The matching files.  The files are returned in depthwise order
-     *         (that is, a child appears in the list before its parent).
-     * @throws FileSystemException if an error occurs.
-     */
-    FileObject[] findFiles(FileSelector selector) throws FileSystemException;
-
-    /**
-      * Finds the set of matching descendants of this file.
-      *
-      * @param selector  the selector used to determine if the file should be selected
-      * @param depthwise controls the ordering in the list. e.g. deepest first
-      * @param selected  container for selected files. list needs not to be empty.
-      * @throws FileSystemException if an error occurs.
-      */
-    void findFiles(FileSelector selector, boolean depthwise, List<FileObject> selected) throws FileSystemException;
-
-    /**
-     * Returns a child of this file.  Note that this method returns {@code null}
-     * when the child does not exist.  This differs from
-     * {@link #resolveFile(String, NameScope)} which never returns null.
-     *
-     * @param name The name of the child.
-     * @return The child, or null if there is no such child.
-     * @throws FileSystemException If this file does not exist, or is not a folder, or on error
-     *                             determining this file's children.
-     */
-    FileObject getChild(String name) throws FileSystemException;
-
-    /**
-     * Lists the children of this file.
-     *
-     * @return An array containing the children of this file.  The array is
-     *         unordered.  If the file does not have any children, a zero-length
-     *         array is returned.  This method never returns null.
-     * @throws FileSystemException If this file does not exist, or is not a folder, or on error
-     *                             listing this file's children.
-     */
-    FileObject[] getChildren() throws FileSystemException;
-
-    /**
-     * Returns this file's content.  The {@link FileContent} returned by this
-     * method can be used to read and write the content of the file.
-     *
-     * <p>This method can be called if the file does not exist, and
-     * the returned {@link FileContent} can be used to create the file
-     * by writing its content.
-     * </p>
-     *
-     * @return This file's content.
-     * @throws FileSystemException On error getting this file's content.
-     */
-    FileContent getContent() throws FileSystemException;
-
-    /**
-     * @return FileOperations interface that provides access to the operations API.
-     * @throws FileSystemException if an error occurs.
-     */
-    FileOperations getFileOperations() throws FileSystemException;
-
-    /**
-     * Returns the file system that contains this file.
-     *
-     * @return The file system.
-     */
-    FileSystem getFileSystem();
-
-    /**
-     * Returns the name of this file.
-     *
-     * @return the FileName.
-     */
-    FileName getName();
-
-    /**
-     * Returns the folder that contains this file.
-     *
-     * @return The folder that contains this file.  Returns null if this file is
-     *         the root of a file system.
-     * @throws FileSystemException On error finding the file's parent.
-     */
-    FileObject getParent() throws FileSystemException;
-
-    /**
-     * Returns the receiver as a URI String for public display, like, without a
-     * password.
-     *
-     * @return A URI String without a password, never {@code null}.
-     */
-    String getPublicURIString();
-
-    /**
-     * Returns this file's type.
-     *
-     * @return One of the {@link FileType} constants.  Never returns null.
-     * @throws FileSystemException On error determining the file's type.
-     */
-    FileType getType() throws FileSystemException;
-
-    /**
-     * Returns a URL representing this file.
-     *
-     * @return the URL for the file.
-     * @throws FileSystemException if an error occurs.
-     */
-    URL getURL() throws FileSystemException;
-
-    /**
-     * Checks if the fileObject is attached.
-     *
-     * @return true if the FileObject is attached.
-     */
-    boolean isAttached();
-
-    /**
-     * Checks if someone reads/write to this file.
-     *
-     * @return true if the file content is open.
-     */
-    boolean isContentOpen();
-
-    /**
-     * Determines if this file is executable.
-     *
-     * @return {@code true} if this file is executable, {@code false} if not.
-     * @throws FileSystemException On error determining if this file exists.
-     */
-    boolean isExecutable() throws FileSystemException;
-
-    /**
-     * Checks if this file is a regular file.
-     *
-     * @return true if this file is a regular file.
-     * @throws FileSystemException if an error occurs.
-     * @see #getType()
-     * @see FileType#FILE
-     * @since 2.1
-     */
-    boolean isFile() throws FileSystemException;
-
-    /**
-     * Checks if this file is a folder.
-     *
-     * @return true if this file is a folder.
-     * @throws FileSystemException if an error occurs.
-     * @see #getType()
-     * @see FileType#FOLDER
-     * @since 2.1
-     */
-    boolean isFolder() throws FileSystemException;
-
-    /**
-     * Determines if this file is hidden.
-     *
-     * @return {@code true} if this file is hidden, {@code false} if not.
-     * @throws FileSystemException On error determining if this file exists.
-     */
-    boolean isHidden() throws FileSystemException;
-
-    /**
-     * Determines if this file can be read.
-     *
-     * @return {@code true} if this file is readable, {@code false} if not.
-     * @throws FileSystemException On error determining if this file exists.
-     */
-    boolean isReadable() throws FileSystemException;
-
-    /**
-     * Determines if this file can be written to.
-     *
-     * @return {@code true} if this file is writeable, {@code false} if not.
-     * @throws FileSystemException On error determining if this file exists.
-     */
-    boolean isWriteable() throws FileSystemException;
-
-    /**
-     * Move this file.
-     *
-     * <p>
-     * If the destFile exists, it is deleted first.
-     * </p>
-     *
-     * @param destFile the New filename.
-     * @throws FileSystemException If this file is read-only, or if the source file does not exist,
-     *                             or on error copying the file.
-     */
-    void moveTo(FileObject destFile)
-        throws FileSystemException;
-
-    /**
-     * This will prepare the fileObject to get resynchronized with the underlying file system if required.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    void refresh() throws FileSystemException;
-
-    /**
-     * Finds a file, relative to this file.  Equivalent to calling
-     * {@code resolveFile( path, NameScope.FILE_SYSTEM )}.
-     *
-     * @param path The path of the file to locate.  Can either be a relative
-     *             path or an absolute path.
-     * @return The file.
-     * @throws FileSystemException On error parsing the path, or on error finding the file.
-     */
-    FileObject resolveFile(String path) throws FileSystemException;
-
-    /**
-     * Finds a file relative to this file.
-     *
-     * Refer to {@link NameScope} for a description of how names are resolved in the different scopes.
-     *
-     * @param name The name to resolve.
-     * @param scope the NameScope for the file.
-     * @return The file.
-     * @throws FileSystemException On error parsing the path, or on error finding the file.
-     */
-    FileObject resolveFile(String name, NameScope scope)
-        throws FileSystemException;
-
-    /**
-     * Sets the owner's (or everybody's) write permission.
-     *
-     * @param executable
-     *            True to allow read access, false to disallow.
-     * @param ownerOnly
-     *            If {@code true}, the permission applies only to the owner; otherwise, it applies to everybody.
-     * @return true if the operation succeeded.
-     * @throws FileSystemException
-     *             On error determining if this file exists.
-     * @since 2.1
-     */
-    boolean setExecutable(boolean executable, boolean ownerOnly) throws FileSystemException;
-
-
-    /**
-     * Sets the owner's (or everybody's) read permission.
-     *
-     * @param readable
-     *            True to allow read access, false to disallow
-     * @param ownerOnly
-     *            If {@code true}, the permission applies only to the owner; otherwise, it applies to everybody.
-     * @return true if the operation succeeded
-     * @throws FileSystemException
-     *             On error determining if this file exists.
-     * @since 2.1
-     */
-    boolean setReadable(boolean readable, boolean ownerOnly) throws FileSystemException;
-
-    /**
-     * Sets the owner's (or everybody's) write permission.
-     *
-     * @param writable
-     *            True to allow read access, false to disallow
-     * @param ownerOnly
-     *            If {@code true}, the permission applies only to the owner; otherwise, it applies to everybody.
-     * @return true if the operation succeeded
-     * @throws FileSystemException
-     *             On error determining if this file exists.
-     * @since 2.1
-     */
-    boolean setWritable(boolean writable, boolean ownerOnly) throws FileSystemException;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSelectInfo.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSelectInfo.java
deleted file mode 100644
index dcb6f9c..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSelectInfo.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Information about a file, that is used to select files during the
- * traversal of a hierarchy.
- * <p>
- * TODO - Rename this interface, as it is used by both FileSelector and FileVisitor.
- */
-public interface FileSelectInfo
-{
-    /**
-     * Returns the base folder of the traversal.
-     * @return FileObject representing the base folder.
-     */
-    FileObject getBaseFolder();
-
-    /**
-     * Returns the file (or folder) to be considered.
-     * @return The FileObject.
-     */
-    FileObject getFile();
-
-    /**
-     * Returns the depth of the file relative to the base folder.
-     * @return The depth of the file relative to the base folder.
-     */
-    int getDepth();
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSelector.java
deleted file mode 100644
index e6bdffc..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSelector.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * This interface is used to select files when traversing a file hierarchy.
- *
- * @see Selectors
- */
-public interface FileSelector
-{
-    /**
-     * Determines if a file or folder should be selected.  This method is
-     * called in depthwise order (that is, it is called for the children
-     * of a folder before it is called for the folder itself).
-     *
-     * @param fileInfo the file or folder to select.
-     * @return true if the file should be selected.
-     * @throws Exception if an error occurs.
-     */
-    boolean includeFile(FileSelectInfo fileInfo)
-        throws Exception;
-
-    /**
-     * Determines whether a folder should be traversed.  If this method returns
-     * true, {@link #includeFile} is called for each of the children of
-     * the folder, and each of the child folders is recursively traversed.
-     * <p>
-     * This method is called on a folder before {@link #includeFile}
-     * is called.
-     *
-     * @param fileInfo the file or folder to select.
-     * @return true if the folder should be traversed.
-     * @throws Exception if an error occurs.
-     */
-    boolean traverseDescendents(FileSelectInfo fileInfo)
-        throws Exception;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystem.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystem.java
deleted file mode 100644
index 72069dd..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystem.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.File;
-
-/**
- * A file system, made up of a hierarchy of files.
- */
-public interface FileSystem
-{
-    /**
-     * Returns the root file of this file system.
-     * @return The root FileObject.
-     * @throws FileSystemException if an error occurs.
-     */
-    FileObject getRoot() throws FileSystemException;
-
-    /**
-     * Returns the name of the root file of this file system. The root name always
-     * contains a path String of "/".
-     * @return the root FileName.
-     */
-    FileName getRootName();
-
-    /**
-     * The root URI passed as a file system option or obtained from the rootName.
-     * @return The root URI.
-     */
-    String getRootURI();
-
-    /**
-     * Determines if this file system has a particular capability.
-     * <p>
-     * TODO - Move this to another interface, so that set of capabilities can be queried.
-     *
-     * @param capability The capability to check for.
-     * @return true if this filesystem has the requested capability.
-     *         Note that not all files in the file system may have the
-     *         capability.
-     */
-    boolean hasCapability(Capability capability);
-
-    /**
-     * Returns the parent layer if this is a layered file system.
-     *
-     * @return The parent layer, or null if this is not a layered file system.
-     * @throws FileSystemException if an error occurs.
-     */
-    FileObject getParentLayer() throws FileSystemException;
-
-    /**
-     * Gets the value of an attribute of the file system.
-     * <p>
-     * TODO - change to {@code Map getAttributes()} instead?<br>
-     * TODO - define the standard attribute names, and define which attrs
-     * are guaranteed to be present.
-     *
-     * @param attrName The name of the attribute.
-     * @return The value of the attribute.
-     * @throws org.apache.commons.vfs2.FileSystemException
-     *          If the file does not exist, or is being written, or if the
-     *          attribute is unknown.
-     * @see org.apache.commons.vfs2.FileContent#getAttribute
-     */
-    Object getAttribute(String attrName) throws FileSystemException;
-
-    /**
-     * Sets the value of an attribute of the file's content.  Creates the
-     * file if it does not exist.
-     *
-     * @param attrName The name of the attribute.
-     * @param value    The value of the attribute.
-     * @throws FileSystemException If the file is read-only, or is being read, or if the attribute
-     *                             is not supported, or on error setting the attribute.
-     * @see FileContent#setAttribute
-     */
-    void setAttribute(String attrName, Object value)
-        throws FileSystemException;
-
-    /**
-     * Finds a file in this file system.
-     *
-     * @param name The name of the file.
-     * @return The file.  Never returns null.
-     * @throws FileSystemException if an error occurs.
-     */
-    FileObject resolveFile(FileName name) throws FileSystemException;
-
-    /**
-     * Finds a file in this file system.
-     *
-     * @param name The name of the file.  This must be an absolute path.
-     * @return The file.  Never returns null.
-     * @throws FileSystemException if an error occurs.
-     */
-    FileObject resolveFile(String name) throws FileSystemException;
-
-    /**
-     * Adds a listener on a file in this file system.
-     *
-     * @param file     The file to attach the listener to.
-     * @param listener The listener to add.
-     */
-    void addListener(FileObject file, FileListener listener);
-
-    /**
-     * Removes a listener from a file in this file system.
-     *
-     * @param file     The file to remove the listener from.
-     * @param listener The listener to remove.
-     */
-    void removeListener(FileObject file, FileListener listener);
-
-    /**
-     * Adds a junction to this file system.  A junction is a link that attaches
-     * the supplied file to a point in this file system, making it look like
-     * part of the file system.
-     *
-     * @param junctionPoint The point in this file system to add the junction.
-     * @param targetFile    The file to link to.
-     * @throws FileSystemException If this file system does not support junctions, or the junction
-     *                             point or target file is invalid (the file system may not support
-     *                             nested junctions, for example).
-     */
-    void addJunction(String junctionPoint, FileObject targetFile)
-        throws FileSystemException;
-
-    /**
-     * Removes a junction from this file system.
-     *
-     * @param junctionPoint The junction to remove.
-     * @throws FileSystemException On error removing the junction.
-     */
-    void removeJunction(String junctionPoint) throws FileSystemException;
-
-    /**
-     * Creates a temporary local copy of a file and its descendants.  If
-     * this file is already a local file, a copy is not made.
-     * <p>
-     * Note that the local copy may include additonal files, that were
-     * not selected by the given selector.
-     * <p>
-     * TODO - Add options to indicate whether the caller is happy to deal with
-     * extra files being present locally (eg if the file has been
-     * replicated previously), or whether the caller expects only
-     * the selected files to be present.
-     *
-     * @param file     The file to replicate.
-     * @param selector The selector to use to select the files to replicate.
-     * @return The local copy of this file.
-     * @throws FileSystemException If this file does not exist, or on error replicating the file.
-     */
-    File replicateFile(FileObject file, FileSelector selector)
-        throws FileSystemException;
-
-    /**
-     * Returns the FileSystemOptions used to instantiate this filesystem.
-     * @return The FileSystemOptions.
-     */
-    FileSystemOptions getFileSystemOptions();
-
-    /**
-     * Returns a reference to the FileSytemManager.
-     * @return The FileSystemManager.
-     */
-    FileSystemManager getFileSystemManager();
-
-    /**
-     * Returns the accuracy of the last modification time.
-     * <p>
-     * The local file provider is not very smart in figuring this out, for remote
-     * access to file systems the providers typically don't know the value of the underlying
-     * real file system.
-     *
-     * @return the accuracy of the last modification time in milliseconds. A
-     *         value of 0 means perfectly accurate, anything {@literal > 0} might be off
-     *         by this value. For example, sftp has an accuracy of 1000 ms.
-     */
-    double getLastModTimeAccuracy();
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java
deleted file mode 100644
index 05966af..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemConfigBuilder.java
+++ /dev/null
@@ -1,740 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Abstract class which has the right to fill FileSystemOptions.
- */
-public abstract class FileSystemConfigBuilder
-{
-    /** Default prefix to use when resolving system properties */
-    private static final String PREFIX = "vfs.";
-
-    /** The root uri of the file system */
-    private static final String ROOTURI = "rootURI";
-
-    /** The prefix to use when resolving system properties */
-    private final String prefix;
-
-    /**
-     * Construct builder with default prefix.
-     *
-     * @since 1.0
-     */
-    protected FileSystemConfigBuilder()
-    {
-        this.prefix = PREFIX;
-    }
-
-    /**
-     * Construct builder with specified component name.
-     *
-     * @param component component name to be used in prefix
-     *
-     * @since 2.0
-     */
-    protected FileSystemConfigBuilder(final String component)
-    {
-        this.prefix = PREFIX + component;
-    }
-
-    /**
-     * The root URI of the file system.
-     *
-     * @param opts the file system options to modify
-     * @param rootURI The creator name to be associated with the file.
-     *
-     * @since 2.0
-     */
-    public void setRootURI(final FileSystemOptions opts, final String rootURI)
-    {
-        setParam(opts, ROOTURI, rootURI);
-    }
-
-    /**
-     * Return the root URI of the file system.
-     *
-     * @param opts file system options to work with
-     * @return The root URI
-     *
-     * @since 2.0
-     */
-    public String getRootURI(final FileSystemOptions opts)
-    {
-        return getString(opts, ROOTURI);
-    }
-
-    /**
-     * Set named parameter.
-     *
-     * @param opts the file system options to modify
-     * @param name set option with this name
-     * @param value boolean value to set
-     *
-     * @since 2.1
-     */
-    protected void setParam(final FileSystemOptions opts, final String name, final boolean value)
-    {
-        setParam(opts, name, Boolean.valueOf(value));
-    }
-
-    /**
-     * Set named parameter.
-     *
-     * @param opts the file system options to modify
-     * @param name set option with this name
-     * @param value object value to set
-     *
-     * @since 1.0
-     */
-    protected void setParam(final FileSystemOptions opts, final String name, final Object value)
-    {
-        opts.setOption(getConfigClass(), name, value);
-    }
-
-    /**
-     * Get named parameter.
-     *
-     * @param opts file system options to work with
-     * @param name get option with this name
-     * @return the named option or null
-     *
-     * @since 1.0
-     */
-    protected Object getParam(final FileSystemOptions opts, final String name)
-    {
-        if (opts == null)
-        {
-            return null;
-        }
-
-        return opts.getOption(getConfigClass(), name);
-    }
-
-    /**
-     * Check if option exists.
-     *
-     * @param opts file system options to work with
-     * @param name the name to look up in {@code opts}
-     * @return true if opts have the named parameter
-     *
-     * @since 1.0
-     */
-    protected boolean hasParam(final FileSystemOptions opts, final String name)
-    {
-        return opts != null && opts.hasOption(getConfigClass(), name);
-    }
-
-    /**
-     * Is named setting specified.
-     *
-     * @param opts file system options to work with
-     * @param name the option to check in {@code opts} or system properties
-     * @return true if option exists
-     *
-     * @since 2.0
-     */
-    protected boolean hasObject(final FileSystemOptions opts, final String name)
-    {
-        return hasParam(opts, name) || System.getProperties().containsKey(toPropertyKey(name));
-    }
-
-    /**
-     * Get named option as boolean.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getBoolean(FileSystemOptions, String, Boolean)
-     *
-     * @since 2.0
-     */
-    protected Boolean getBoolean(final FileSystemOptions opts, final String name)
-    {
-        return getBoolean(opts, name, null);
-    }
-
-    /**
-     * Get named option as boolean.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getBoolean(FileSystemOptions, String, Boolean)
-     *
-     * @since 2.0
-     */
-    protected boolean getBoolean(final FileSystemOptions opts, final String name, final boolean defaultValue)
-    {
-        return getBoolean(opts, name, Boolean.valueOf(defaultValue)).booleanValue();
-    }
-
-    /**
-     * Get named option as boolean.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getBoolean(FileSystemOptions, String, Boolean)
-     *
-     * @since 2.0
-     */
-    protected Boolean getBoolean(final FileSystemOptions opts, final String name, final Boolean defaultValue)
-    {
-        Boolean value = (Boolean) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null)
-            {
-                return defaultValue;
-            }
-            value = Boolean.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as byte.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getByte(FileSystemOptions, String, Byte)
-     *
-     * @since 2.0
-     */
-    protected Byte getByte(final FileSystemOptions opts, final String name)
-    {
-        return getByte(opts, name, null);
-    }
-
-    /**
-     * Get named option as byte.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getByte(FileSystemOptions, String, Byte)
-     *
-     * @since 2.0
-     */
-    protected byte getByte(final FileSystemOptions opts, final String name, final byte defaultValue)
-    {
-        return getByte(opts, name, Byte.valueOf(defaultValue)).byteValue();
-    }
-
-    /**
-     * Get named option as byte.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     *
-     * @since 2.0
-     */
-    protected Byte getByte(final FileSystemOptions opts, final String name, final Byte defaultValue)
-    {
-        Byte value = (Byte) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null)
-            {
-                return defaultValue;
-            }
-            value = Byte.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as character.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getCharacter(FileSystemOptions, String, Character)
-     *
-     * @since 2.0
-     */
-    protected Character getCharacter(final FileSystemOptions opts, final String name)
-    {
-        return getCharacter(opts, name, null);
-    }
-
-    /**
-     * Get named option as character.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getCharacter(FileSystemOptions, String, Character)
-     *
-     * @since 2.0
-     */
-    protected char getCharacter(final FileSystemOptions opts, final String name, final char defaultValue)
-    {
-        return getCharacter(opts, name, new Character(defaultValue)).charValue();
-    }
-
-    /**
-     * Get named option as character.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     *
-     * @since 2.0
-     */
-    protected Character getCharacter(final FileSystemOptions opts, final String name, final Character defaultValue)
-    {
-        Character value = (Character) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null || str.length() <= 0)
-            {
-                return defaultValue;
-            }
-            value = new Character(str.charAt(0));
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as double.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getDouble(FileSystemOptions, String, Double)
-     *
-     * @since 2.0
-     */
-    protected Double getDouble(final FileSystemOptions opts, final String name)
-    {
-        return getDouble(opts, name, null);
-    }
-
-    /**
-     * Get named option as double.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getDouble(FileSystemOptions, String, Double)
-     *
-     * @since 2.0
-     */
-    protected double getDouble(final FileSystemOptions opts, final String name, final double defaultValue)
-    {
-        return getDouble(opts, name, new Double(defaultValue)).doubleValue();
-    }
-
-    /**
-     * Get named option as double.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     *
-     * @since 2.0
-     */
-    protected Double getDouble(final FileSystemOptions opts, final String name, final Double defaultValue)
-    {
-        Double value = (Double) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null || str.length() <= 0)
-            {
-                return defaultValue;
-            }
-            value = Double.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as enumeration.
-     *
-     * @param <E> enumeration type
-     * @param enumClass class of enumeration type
-     * @param opts file system options to work with
-     * @param name the option name     *
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getEnum(Class, FileSystemOptions, String, Enum)
-     * @throws IllegalArgumentException if option value is not a known enumeration.
-     *
-     * @since 2.1
-     */
-    protected <E extends Enum<E>> E getEnum(final Class<E> enumClass, final FileSystemOptions opts, final String name)
-    {
-        return this.<E>getEnum(enumClass, opts, name, null);
-    }
-
-    /**
-     * Get named option as enumeration.
-     *
-     * @param <E> enumeration type
-     * @param enumClass class of enumeration type
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getEnum(Class, FileSystemOptions, String, Enum)
-     * @throws IllegalArgumentException if option value is not a known enumeration.
-     *
-     * @since 2.1
-     */
-    protected <E extends Enum<E>> E getEnum(final Class<E> enumClass, final FileSystemOptions opts,
-                                            final String name, final E defaultValue)
-    {
-        @SuppressWarnings("unchecked")
-        E value = (E) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null)
-            {
-                return defaultValue;
-            }
-            value = Enum.valueOf(enumClass, str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as float.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getFloat(FileSystemOptions, String, Float)
-     * @throws NumberFormatException if option value is not a valid float.
-     *
-     * @since 2.0
-     */
-    protected Float getFloat(final FileSystemOptions opts, final String name)
-    {
-        return getFloat(opts, name, null);
-    }
-
-    /**
-     * Get named option as float.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getFloat(FileSystemOptions, String, Float)
-     * @throws NumberFormatException if option value is not a valid float.
-     *
-     * @since 2.0
-     */
-    protected float getFloat(final FileSystemOptions opts, final String name, final float defaultValue)
-    {
-        return getFloat(opts, name, new Float(defaultValue)).floatValue();
-    }
-
-    /**
-     * Get named option as float.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @throws NumberFormatException if option value is not a valid float.
-     *
-     * @since 2.0
-     */
-    protected Float getFloat(final FileSystemOptions opts, final String name, final Float defaultValue)
-    {
-        Float value = (Float) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null || str.length() <= 0)
-            {
-                return defaultValue;
-            }
-            value = Float.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as integer.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getInteger(FileSystemOptions, String, Integer)
-     * @throws NumberFormatException if option value is not a valid integer.
-     *
-     * @since 2.0
-     */
-    protected Integer getInteger(final FileSystemOptions opts, final String name)
-    {
-        return getInteger(opts, name, null);
-    }
-
-    /**
-     * Get named option as integer.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getInteger(FileSystemOptions, String, Integer)
-     * @throws NumberFormatException if option value is not a valid integer.
-     *
-     * @since 2.0
-     */
-    protected int getInteger(final FileSystemOptions opts, final String name, final int defaultValue)
-    {
-        return getInteger(opts, name, Integer.valueOf(defaultValue)).intValue();
-    }
-
-    /**
-     * Get named option as integer.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @throws NumberFormatException if option value is not a valid integer.
-     *
-     * @since 2.0
-     */
-    protected Integer getInteger(final FileSystemOptions opts, final String name, final Integer defaultValue)
-    {
-        Integer value = (Integer) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null)
-            {
-                return defaultValue;
-            }
-            value = Integer.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as long.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getLong(FileSystemOptions, String, Long)
-     * @throws NumberFormatException if option value is not a valid long.
-     *
-     * @since 2.0
-     */
-    protected Long getLong(final FileSystemOptions opts, final String name)
-    {
-        return getLong(opts, name, null);
-    }
-
-    /**
-     * Get named option as long.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getLong(FileSystemOptions, String, Long)
-     * @throws NumberFormatException if option value is not a valid long.
-     *
-     * @since 2.0
-     */
-    protected long getLong(final FileSystemOptions opts, final String name, final long defaultValue)
-    {
-        return getLong(opts, name, Long.valueOf(defaultValue)).longValue();
-    }
-
-    /**
-     * Get named option as long.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @throws NumberFormatException if option value is not a valid long.
-     *
-     * @since 2.0
-     */
-    protected Long getLong(final FileSystemOptions opts, final String name, final Long defaultValue)
-    {
-        Long value = (Long) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null)
-            {
-                return defaultValue;
-            }
-            value = Long.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as short.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getShort(FileSystemOptions, String, Short)
-     * @throws NumberFormatException if option value is not a valid short.
-     *
-     * @since 2.0
-     */
-    protected Short getShort(final FileSystemOptions opts, final String name)
-    {
-        return getShort(opts, name, null);
-    }
-
-    /**
-     * Get named option as short.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @see #getShort(FileSystemOptions, String, Short)
-     * @throws NumberFormatException if option value is not a valid short
-     *
-     * @since 2.0
-     */
-   protected short getShort(final FileSystemOptions opts, final String name, final short defaultValue)
-    {
-        return getShort(opts, name, Short.valueOf(defaultValue)).shortValue();
-    }
-
-    /**
-     * Get named option as short.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     * @throws NumberFormatException if option value is not a valid short
-     *
-     * @since 2.0
-     */
-    protected Short getShort(final FileSystemOptions opts, final String name, final Short defaultValue)
-    {
-        Short value = (Short) getParam(opts, name);
-        if (value == null)
-        {
-            final String str = getProperty(name);
-            if (str == null)
-            {
-                return defaultValue;
-            }
-            value = Short.valueOf(str);
-        }
-        return value;
-    }
-
-    /**
-     * Get named option as String.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @return the option in {@code opts} or system properties, otherwise null
-     * @see #getString(FileSystemOptions, String, String)
-     *
-     * @since 2.0
-     */
-    protected String getString(final FileSystemOptions opts, final String name)
-    {
-        return getString(opts, name, null);
-    }
-
-    /**
-     * Get named option as String.
-     *
-     * @param opts file system options to work with
-     * @param name the option name
-     * @param defaultValue value to return if option is not present
-     * @return the option in {@code opts} or system properties, otherwise {@code defaultValue}
-     *
-     * @since 2.0
-     */
-    protected String getString(final FileSystemOptions opts, final String name, final String defaultValue)
-    {
-        String value = (String) getParam(opts, name);
-        if (value == null)
-        {
-            value = getProperty(name);
-            if (value == null)
-            {
-                return defaultValue;
-            }
-        }
-        return value;
-    }
-
-    /**
-     * Get the target of this configuration.
-     *
-     * @return the specific file system class
-     *
-     * @since 1.0
-     */
-    protected abstract Class<? extends FileSystem> getConfigClass();
-
-    /**
-     * Converts the given name into a System property key.
-     *
-     * @param name a name to combine with the builder prefix
-     * @return name of system property
-     *
-     * @since 2.1
-     */
-    private String toPropertyKey(final String name)
-    {
-        return this.prefix + name;
-    }
-
-    /**
-     * Get the system property for the given name.
-     *
-     * @param name The name to lookup combined with the prefix.
-     * @return a system property or null
-     *
-     * @since 2.1
-     */
-    private String getProperty(final String name)
-    {
-        return System.getProperty(toPropertyKey(name));
-    }
-
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemException.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemException.java
deleted file mode 100644
index b1ee6f1..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemException.java
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.IOException;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.vfs2.util.Messages;
-
-/**
- * Thrown for file system errors.
- */
-public class FileSystemException
-    extends IOException
-{
-    /**
-     * serialVersionUID format is YYYYMMDD for the date of the last binary change.
-     */
-    private static final long serialVersionUID = 20101208L;
-
-    /** URL pattern */
-    private static final Pattern URL_PATTERN = Pattern.compile("[a-z]+://.*");
-
-    /** Password pattern */
-    private static final Pattern PASSWORD_PATTERN = Pattern.compile(":(?:[^/]+)@");
-
-    /**
-     * Array of complementary info (context).
-     */
-    private final String[] info;
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code the error code of the message.
-     */
-    public FileSystemException(final String code)
-    {
-        this(code, null, (Object[]) null);
-    }
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code  the error code of the message.
-     * @param info0 one context information.
-     */
-    public FileSystemException(final String code, final Object info0)
-    {
-        this(code, null, new Object[]{info0});
-    }
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code      the error code of the message.
-     * @param info0     one context information.
-     * @param throwable the cause.
-     */
-    public FileSystemException(final String code,
-                               final Object info0,
-                               final Throwable throwable)
-    {
-        this(code, throwable, new Object[]{info0});
-    }
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code the error code of the message.
-     * @param info array of complementary info (context).
-     */
-    public FileSystemException(final String code, final Object... info)
-    {
-        this(code, null, info);
-    }
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code the error code of the message.
-     * @param throwable the original cause
-     */
-    public FileSystemException(final String code, final Throwable throwable)
-    {
-        this(code, throwable, (Object[]) null);
-    }
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code      the error code of the message.
-     * @param info      array of complementary info (context).
-     * @param throwable the cause.
-     * @deprecated Use instead {@link #FileSystemException(String, Throwable, Object[])}. Will be removed in 3.0.
-     */
-    @Deprecated
-    public FileSystemException(final String code,
-                               final Object[] info,
-                               final Throwable throwable)
-    {
-        this(code, throwable, info);
-    }
-
-    /**
-     * Constructs exception with the specified detail message.
-     *
-     * @param code      the error code of the message.
-     * @param info      array of complementary info (context).
-     * @param throwable the cause.
-     */
-    public FileSystemException(final String code,
-                               final Throwable throwable,
-                               final Object... info)
-    {
-        super(code, throwable);
-
-        if (info == null)
-        {
-            this.info = new String[0];
-        }
-        else
-        {
-            this.info = new String[info.length];
-            for (int i = 0; i < info.length; i++)
-            {
-                String value = String.valueOf(info[i]);
-                // mask passwords (VFS-169)
-                final Matcher urlMatcher = URL_PATTERN.matcher(value);
-                if (urlMatcher.find())
-                {
-                    final Matcher pwdMatcher = PASSWORD_PATTERN.matcher(value);
-                    value = pwdMatcher.replaceFirst(":***@");
-                }
-                this.info[i] = value;
-            }
-        }
-    }
-
-    /**
-     * Constructs wrapper exception.
-     *
-     * @param throwable the root cause to wrap.
-     */
-    public FileSystemException(final Throwable throwable)
-    {
-        this(throwable.getMessage(), throwable, (Object[]) null);
-    }
-
-    /**
-     * Retrieves message from bundle.
-     * @return The exception message.
-     */
-    @Override
-    public String getMessage()
-    {
-        return Messages.getString(super.getMessage(), (Object[]) getInfo());
-    }
-
-    /**
-     * Retrieves error code of the exception.
-     * Could be used as key for internationalization.
-     *
-     * @return the code.
-     */
-    public String getCode()
-    {
-        return super.getMessage();
-    }
-
-    /**
-     * Retrieves array of complementary info (context).
-     * Could be used as parameter for internationalization.
-     *
-     * @return the context info.
-     */
-    public String[] getInfo()
-    {
-        return info;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemManager.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemManager.java
deleted file mode 100644
index fa15b70..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemManager.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.net.URI;
-import java.net.URL;
-import java.net.URLStreamHandlerFactory;
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.vfs2.operations.FileOperationProvider;
-
-/**
- * A FileSystemManager manages a set of file systems.  This interface is
- * used to locate a {@link FileObject} by name from one of those file systems.
- * <p>
- * To locate a {@link FileObject}, use one of the {@code resolveFile()}
- * methods.
- *
- * <h2><a name="naming">File Naming</a></h2>
- *
- * A file system manager can recognise several types of file names:
- * <ul>
- * <li>Absolute URI.  These must start with a scheme, such as
- * {@code file:} or {@code ftp:}, followed by a scheme dependent
- * file name.  Some examples: {@code file:/c:/somefile} or
- * {@code ftp://somewhere.org/somefile}.</li>
- * <li>Absolute local file name.  For example,
- * {@code /home/someuser/a-file} or {@code c:\dir\somefile.html}.
- * Elements in the name can be separated using any of the following
- * characters: {@code /}, {@code \}, or the native file separator
- * character. For example, the following file names are the same:
- * {@code c:\somedir\somefile.xml} and {@code c:/somedir/somefile.xml}.</li>
- * <li>Relative path.  For example: {@code ../somefile} or
- * {@code somedir/file.txt}. The file system manager resolves relative
- * paths against its <i>base file</i>.  Elements in the relative path can be
- * separated using {@code /}, {@code \}, or file system specific
- * separator characters. Relative paths may also contain {@code ..} and
- * {@code .} elements. See {@link FileObject#resolveFile} for more
- * details.</li>
- * </ul>
- */
-public interface FileSystemManager
-{
-    /**
-     * Returns the base file used to resolve relative paths.
-     *
-     * @return The base FileObject.
-     * @throws FileSystemException if an error occurs.
-     */
-    FileObject getBaseFile() throws FileSystemException;
-
-    /**
-     * Locates a file by name.  Equivalent to calling
-     * {@code resolveFile(getBaseFile(), name)}.
-     *
-     * @param name The name of the file.
-     * @return The file.  Never returns null.
-     * @throws FileSystemException On error parsing the file name.
-     */
-    FileObject resolveFile(String name) throws FileSystemException;
-
-    /**
-     * Locates a file by name.  Equivalent to calling
-     * {@code resolveFile(getBaseFile(), name)}.
-     *
-     * @param name              The name of the file.
-     * @param fileSystemOptions The FileSystemOptions used for FileSystem creation.
-     *                          All files that are later resolved relative to the
-     *                          returned {@code FileObject} share the options.
-     * @return The file.  Never returns null.
-     * @throws FileSystemException On error parsing the file name.
-     */
-    FileObject resolveFile(String name, FileSystemOptions fileSystemOptions)
-        throws FileSystemException;
-
-    /**
-     * Locates a file by name.  The name is resolved as described
-     * <a href="#naming">above</a>.  That is, the name can be either
-     * an absolute URI, an absolute file name, or a relative path to
-     * be resolved against {@code baseFile}.
-     * <p>
-     * Note that the file does not have to exist when this method is called.
-     *
-     * @param baseFile The base file to use to resolve relative paths.
-     *                 May be null if the name is an absolute file name.
-     * @param name     The name of the file.
-     * @return The file.  Never returns null.
-     * @throws FileSystemException On error parsing the file name.
-     */
-    FileObject resolveFile(FileObject baseFile, String name) throws FileSystemException;
-
-    /**
-     * Locates a file by name.  See {@link #resolveFile(FileObject, String)}
-     * for details.
-     *
-     * @param baseFile The base file to use to resolve relative paths.
-     *                 Must not be {@code null}, not even if the <i>name</i> is absolute.
-     * @param name     The name of the file.
-     * @return The file.  Never returns null.
-     * @throws FileSystemException On error parsing the file name.
-     */
-    FileObject resolveFile(File baseFile, String name) throws FileSystemException;
-
-    /**
-     * Resolves a name, relative to this file name.  Equivalent to calling
-     * {@code resolveName( path, NameScope.FILE_SYSTEM )}.
-     *
-     * @param root the base filename
-     * @param name The name to resolve.
-     * @return A {@link FileName} object representing the resolved file name.
-     * @throws FileSystemException If the name is invalid.
-     */
-    FileName resolveName(FileName root, String name) throws FileSystemException;
-
-    /**
-     * Resolves a name, relative to the "root" file name.  Refer to {@link NameScope}
-     * for a description of how names are resolved.
-     *
-     * @param root the base filename
-     * @param name  The name to resolve.
-     * @param scope The {@link NameScope} to use when resolving the name.
-     * @return A {@link FileName} object representing the resolved file name.
-     * @throws FileSystemException If the name is invalid.
-     */
-    FileName resolveName(FileName root, String name, NameScope scope)
-        throws FileSystemException;
-
-    /**
-     * Converts a local file into a {@link FileObject}.
-     *
-     * @param file The file to convert.
-     * @return The {@link FileObject} that represents the local file.  Never
-     *         returns null.
-     * @throws FileSystemException On error converting the file.
-     */
-    FileObject toFileObject(File file) throws FileSystemException;
-
-    /**
-     * Creates a layered file system.  A layered file system is a file system
-     * that is created from the contents of a file, such as a zip or tar file.
-     *
-     * @param provider The name of the file system provider to use.  This name
-     *                 is the same as the scheme used in URI to identify the provider.
-     * @param file     The file to use to create the file system.
-     * @return The root file of the new file system.
-     * @throws FileSystemException On error creating the file system.
-     */
-    FileObject createFileSystem(String provider, FileObject file)
-        throws FileSystemException;
-
-    /**
-     * Closes the given filesystem.
-     * <p>
-     * If you use VFS as singleton it is VERY dangerous to call this method.
-     *
-     * @param filesystem The FileSystem to close.
-     */
-    void closeFileSystem(FileSystem filesystem);
-
-    /**
-     * Creates a layered file system.  A layered file system is a file system
-     * that is created from the contents of a file, such as a zip or tar file.
-     *
-     * @param file The file to use to create the file system.
-     * @return The root file of the new file system.
-     * @throws FileSystemException On error creating the file system.
-     */
-    FileObject createFileSystem(FileObject file) throws FileSystemException;
-
-    /**
-     * Creates an empty virtual file system.  Can be populated by adding
-     * junctions to it.
-     *
-     * @param rootUri The root URI to use for the new file system.  Can be null.
-     * @return The root file of the new file system.
-     * @throws FileSystemException if an error occurs creating the VirtualFileSystem.
-     */
-    FileObject createVirtualFileSystem(String rootUri) throws FileSystemException;
-
-    /**
-     * Creates a virtual file system.  The file system will contain a junction
-     * at the fs root to the supplied root file.
-     *
-     * @param rootFile The root file to backs the file system.
-     * @return The root of the new file system.
-     * @throws FileSystemException if an error occurs creating the VirtualFileSystem.
-     */
-    FileObject createVirtualFileSystem(FileObject rootFile) throws FileSystemException;
-
-    /**
-     * Returns a streamhandler factory to enable URL lookup using this
-     * FileSystemManager.
-     *
-     * @return the URLStreamHandlerFactory.
-     */
-    URLStreamHandlerFactory getURLStreamHandlerFactory();
-
-    /**
-     * Determines if a layered file system can be created for a given file.
-     *
-     * @param file The file to check for.
-     * @return true if the FileSystem can be created.
-     * @throws FileSystemException if an error occurs.
-     */
-    boolean canCreateFileSystem(FileObject file) throws FileSystemException;
-
-    /**
-     * Get the cache used to cache fileobjects.
-     *
-     * @return The FilesCache.
-     */
-    FilesCache getFilesCache();
-
-    /**
-     * Get the cache strategy used.
-     *
-     * @return the CacheStrategy.
-     */
-    CacheStrategy getCacheStrategy();
-
-    /**
-     * Get the file object decorator used.
-     *
-     * @return the file object decorator Class.
-     */
-    Class<?> getFileObjectDecorator();
-
-    /**
-     * The constructor associated to the fileObjectDecorator.
-     * We cache it here for performance reasons.
-     *
-     * @return the Constructor associated with the FileObjectDecorator.
-     */
-    Constructor<?> getFileObjectDecoratorConst();
-
-    /**
-     * The class to use to determine the content-type (mime-type).
-     *
-     * @return the FileContentInfoFactory.
-     */
-    FileContentInfoFactory getFileContentInfoFactory();
-
-    /**
-     * Returns true if this manager has a provider for a particular scheme.
-     *
-     * @param scheme The scheme for which a provider should be checked.
-     * @return true if a provider for the scheme is available.
-     */
-    boolean hasProvider(String scheme);
-
-    /**
-     * Get the schemes currently available.
-     *
-     * @return An array of available scheme names that are supported.
-     */
-    String[] getSchemes();
-
-    /**
-     * Get the capabilities for a given scheme.
-     *
-     * @param scheme The scheme to use to locate the provider's capabilities.
-     * @return A Collection of the various capabilities.
-     * @throws FileSystemException if the given scheme is not konwn.
-     */
-    Collection<Capability> getProviderCapabilities(String scheme) throws FileSystemException;
-
-    /**
-     * Sets the logger to use.
-     *
-     * @param log The logger to use.
-     */
-    void setLogger(Log log);
-
-    /**
-     * Get the configuration builder for the given scheme.
-     *
-     * @param scheme The schem to use to obtain the FileSystemConfigBuidler.
-     * @return A FileSystemConfigBuilder appropriate for the given scheme.
-     * @throws FileSystemException if the given scheme is not konwn.
-     */
-    FileSystemConfigBuilder getFileSystemConfigBuilder(String scheme) throws FileSystemException;
-
-    /**
-     * Resolve the uri to a filename.
-     *
-     * @param uri The uri to resolve.
-     * @return A FileName that matches the uri.
-     * @throws FileSystemException if this is not possible.
-     */
-    FileName resolveURI(String uri) throws FileSystemException;
-
-    // -- OPERATIONS --
-    /**
-     * Adds the specified FileOperationProvider for the specified scheme.
-     * <p>
-     * Several FileOperationProvider's might be registered for the same scheme.
-     * For example, for {@code "file"} scheme we can register {@code SvnWsOperationProvider} and
-     * {@code CvsOperationProvider.}
-     *
-     * @param scheme The scheme assoicated with this provider.
-     * @param operationProvider The FileOperationProvider to add.
-     * @throws FileSystemException if an error occurs.
-     */
-    void addOperationProvider(String scheme, FileOperationProvider operationProvider)
-        throws FileSystemException;
-
-    /**
-     * @see FileSystemManager#addOperationProvider(String, org.apache.commons.vfs2.operations.FileOperationProvider)
-     *
-     * @param schemes The schemes that will be associated with the provider.
-     * @param operationProvider The FileOperationProvider to add.
-     * @throws FileSystemException if an error occurs.
-     */
-    void addOperationProvider(String[] schemes, FileOperationProvider operationProvider)
-        throws FileSystemException;
-
-
-    /**
-     * Get Providers for file operations.
-     *
-     * @param scheme the scheme for wich we want to get the list af registered providers.
-     *
-     * @return the registered FileOperationProviders for the specified scheme.
-     * If there were no providers registered for the scheme, it returns null.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    FileOperationProvider[] getOperationProviders(String scheme) throws FileSystemException;
-
-    /**
-     * Resolves a URI into a {@link FileObject}.
-     *
-     * @param uri The URI to convert.
-     * @return The {@link FileObject} that represents the URI.  Never
-     *         returns null.
-     * @throws FileSystemException On error converting the file.
-     * @since 2.1
-     */
-    FileObject resolveFile(URI uri) throws FileSystemException;
-
-    /**
-     * Resolves a URL into a {@link FileObject}.
-     *
-     * @param url The URL to convert.
-     * @return The {@link FileObject} that represents the URL.  Never
-     *         returns null.
-     * @throws FileSystemException On error converting the file.
-     * @since 2.1
-     */
-    FileObject resolveFile(URL url) throws FileSystemException;
-
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java
deleted file mode 100644
index 0f7c945..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileSystemOptions.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.util.Arrays;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
-
-/**
- * Configures file systems individually with these options.
- * <p>
- * To configure a file system, you set properties on a {@link FileSystemOptions} object. Most file systems provide a
- * {@link FileSystemConfigBuilder} with specific options for that file system.
- * <p>
- * To use the options, pass them to {@link FileSystemManager#resolveFile(String,FileSystemOptions)}. From there, the
- * options apply to all files that are resolved relative to that file.
- *
- * @see org.apache.commons.vfs2.impl.DefaultFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.ftp.FtpFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.ftps.FtpsFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.hdfs.HdfsFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.http.HttpFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.webdav.WebdavFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.ram.RamFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.res.ResourceFileSystemConfigBuilder
- * @see org.apache.commons.vfs2.provider.sftp.SftpFileSystemConfigBuilder
- *
- */
-public final class FileSystemOptions implements Cloneable
-{
-    /** The options */
-    private final Map<FileSystemOptionKey, Object> options;
-
-    /**
-     * Creates a new instance.
-     */
-    public FileSystemOptions()
-    {
-        this(new TreeMap<FileSystemOptionKey, Object>());
-    }
-
-    protected FileSystemOptions(final Map<FileSystemOptionKey, Object> options)
-    {
-        this.options = options;
-    }
-
-    /**
-     * Keys in the options Map.
-     */
-    private static final class FileSystemOptionKey implements Comparable<FileSystemOptionKey>
-    {
-        /** Constant used to create hashcode */
-        private static final int HASH = 29;
-
-        /** The FileSystem class */
-        private final Class<? extends FileSystem> fileSystemClass;
-
-        /** The option name */
-        private final String name;
-
-        // TODO: the parameter name suggests that the class should only be a
-        // a FileSystem, however some of the tests pass in DefaultFileSystemConfigBuilder
-        private FileSystemOptionKey(final Class<? extends FileSystem> fileSystemClass, final String name)
-        {
-            this.fileSystemClass = fileSystemClass;
-            this.name = name;
-        }
-
-        @Override
-        public int compareTo(final FileSystemOptionKey o)
-        {
-            final int ret = fileSystemClass.getName().compareTo(o.fileSystemClass.getName());
-            if (ret != 0)
-            {
-                return ret;
-            }
-            return name.compareTo(o.name);
-        }
-
-        @Override
-        public boolean equals(final Object o)
-        {
-            if (this == o)
-            {
-                return true;
-            }
-            if (o == null || getClass() != o.getClass())
-            {
-                return false;
-            }
-
-            final FileSystemOptionKey that = (FileSystemOptionKey) o;
-
-            if (!fileSystemClass.equals(that.fileSystemClass))
-            {
-                return false;
-            }
-            if (!name.equals(that.name))
-            {
-                return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public int hashCode()
-        {
-            int result;
-            result = fileSystemClass.hashCode();
-            result = HASH * result + name.hashCode();
-            return result;
-        }
-
-        @Override
-        public String toString()
-        {
-            return fileSystemClass.getName()+"."+name;
-        }
-    }
-
-    void setOption(final Class<? extends FileSystem> fileSystemClass, final String name, final Object value)
-    {
-        options.put(new FileSystemOptionKey(fileSystemClass, name), value);
-    }
-
-    Object getOption(final Class<? extends FileSystem> fileSystemClass, final String name)
-    {
-        final FileSystemOptionKey key = new FileSystemOptionKey(fileSystemClass, name);
-        return options.get(key);
-    }
-
-    boolean hasOption(final Class<? extends FileSystem> fileSystemClass, final String name)
-    {
-        final FileSystemOptionKey key = new FileSystemOptionKey(fileSystemClass, name);
-        return options.containsKey(key);
-    }
-
-    public int compareTo(final FileSystemOptions other)
-    {
-        if (this == other)
-        {
-            // the same instance
-            return 0;
-        }
-
-        final int propsSz = options == null ? 0 : options.size();
-        final int propsFkSz = other.options == null ? 0 : other.options.size();
-        if (propsSz < propsFkSz)
-        {
-            return -1;
-        }
-        if (propsSz > propsFkSz)
-        {
-            return 1;
-        }
-        if (propsSz == 0)
-        {
-            // props empty
-            return 0;
-        }
-
-        // ensure proper sequence of options
-        final SortedMap<FileSystemOptionKey, Object> myOptions =
-              options instanceof SortedMap
-            ? (SortedMap<FileSystemOptionKey, Object>)options
-            : new TreeMap<FileSystemOptionKey, Object>(options);
-        final SortedMap<FileSystemOptionKey, Object> theirOptions =
-              other.options instanceof SortedMap
-            ? (SortedMap<FileSystemOptionKey, Object>)other.options
-            : new TreeMap<FileSystemOptionKey, Object>(other.options);
-        final Iterator<FileSystemOptionKey> optKeysIter = myOptions.keySet().iterator();
-        final Iterator<FileSystemOptionKey> otherKeysIter = theirOptions.keySet().iterator();
-        while(optKeysIter.hasNext()) {
-            int comp = optKeysIter.next().compareTo(otherKeysIter.next());
-            if (comp != 0) {
-                return comp;
-            }
-        }
-
-        Object[] array = new Object[propsSz];
-        final int hash = Arrays.deepHashCode(myOptions.values().toArray(array));
-        final int hashFk = Arrays.deepHashCode(theirOptions.values().toArray(array));
-        if (hash < hashFk)
-        {
-            return -1;
-        }
-        if (hash > hashFk)
-        {
-            return 1;
-        }
-
-        // TODO: compare Entry by Entry ??
-        return 0;
-    }
-
-    @Override
-    public int hashCode()
-    {
-        final int prime = 31;
-        int result = 1;
-        if (options == null) {
-            result = prime * result;
-        } else {
-            final SortedMap<FileSystemOptionKey, Object> myOptions =
-                options instanceof SortedMap
-              ? (SortedMap<FileSystemOptionKey, Object>)options
-              : new TreeMap<FileSystemOptionKey, Object>(options);
-            result = prime * result + myOptions.keySet().hashCode();
-            result = prime * result + Arrays.deepHashCode(myOptions.values().toArray(new Object[options.size()]));
-        }
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        FileSystemOptions other = (FileSystemOptions)obj;
-        return compareTo(other) == 0;
-    }
-
-
-    /**
-     * {@inheritDoc}
-     *
-     * @since 2.0
-     */
-    @Override
-    public Object clone()
-    {
-        return new FileSystemOptions(new TreeMap<FileSystemOptionKey, Object>(options));
-    }
-
-    @Override
-    public String toString()
-    {
-        return options.toString();
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileType.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileType.java
deleted file mode 100644
index 922d23e..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileType.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * An enumerated type that represents a file's type.
- */
-public enum FileType
-{
-    /**
-     * A folder.  May contain other files, and have attributes, but does not
-     * have any data content.
-     */
-    FOLDER("folder", true, false, true),
-
-    /**
-     * A regular file.  May have data content and attributes, but cannot
-     * contain other files.
-     */
-    FILE("file", false, true, true),
-
-    /**
-     * A file or folder.  May have data content and attributes, and can
-     * contain other files.
-     */
-    FILE_OR_FOLDER("fileOrFolder", true, true, true),
-
-    /**
-     * A file that does not exist.  May not have data content, attributes,
-     * or contain other files.
-     */
-    IMAGINARY("imaginary", false, false, false);
-
-    /** The name of the FileType */
-    private final String name;
-
-    /** true if the FileType can have children */
-    private final boolean hasChildren;
-
-    /** true if the FileType can have content */
-    private final boolean hasContent;
-
-    /** true if the FileType has attributes */
-    private final boolean hasAttrs;
-
-    private FileType(final String name,
-                     final boolean hasChildren,
-                     final boolean hasContent,
-                     final boolean hasAttrs)
-    {
-        this.name = name;
-        this.hasChildren = hasChildren;
-        this.hasContent = hasContent;
-        this.hasAttrs = hasAttrs;
-    }
-
-    /**
-     * Returns the name of this type.
-     * @return The name of this type.
-     */
-    @Override
-    public String toString()
-    {
-        return name;
-    }
-
-    /**
-     * Returns the name of this type.
-     * @return The name of the type.
-     */
-    public String getName()
-    {
-        return name;
-    }
-
-    /**
-     * Returns true if files of this type may contain other files.
-     * @return true if files can contain other files.
-     */
-    public boolean hasChildren()
-    {
-        return hasChildren;
-    }
-
-    /**
-     * Returns true if files of this type may have data content.
-     * @return true if files can have content.
-     */
-    public boolean hasContent()
-    {
-        return hasContent;
-    }
-
-    /**
-     * Returns true if files of this type may have attributes.
-     * @return true if files can have attributes
-     */
-    public boolean hasAttributes()
-    {
-        return hasAttrs;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileTypeHasNoContentException.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileTypeHasNoContentException.java
deleted file mode 100644
index d4bcba4..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileTypeHasNoContentException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * delivers a file-not-folder exception which happens when trying to issue
- * {@link org.apache.commons.vfs2.FileObject#getChildren()} on a file.
- * @since 2.0
- */
-public class FileTypeHasNoContentException extends FileSystemException
-{
-    /**
-     * serialVersionUID format is YYYYMMDD for the date of the last binary change.
-     */
-    private static final long serialVersionUID = 20101208L;
-
-    public FileTypeHasNoContentException(final Object info0)
-    {
-        super("vfs.provider/read-not-file.error", info0);
-    }
-
-    public FileTypeHasNoContentException(final Object info0, final Throwable throwable)
-    {
-        super("vfs.provider/read-not-file.error", info0, throwable);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileTypeSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileTypeSelector.java
deleted file mode 100644
index 2558589..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileTypeSelector.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * A {@link FileSelector} that selects files of a particular type.
- */
-public class FileTypeSelector
-    implements FileSelector
-{
-    /** The FileType */
-    private final FileType type;
-
-    /**
-     * Creates a new selector for the given file type.
-     *
-     * @param type
-     *            The file type to select
-     */
-    public FileTypeSelector(final FileType type)
-    {
-        this.type = type;
-    }
-
-    /**
-     * Determines if a file or folder should be selected.
-     * @param fileInfo The file selection information.
-     * @return true if the file or folder should be selected.
-     * @throws FileSystemException if an error occurs
-     */
-    @Override
-    public boolean includeFile(final FileSelectInfo fileInfo)
-        throws FileSystemException
-    {
-        return fileInfo.getFile().getType() == type;
-    }
-
-    /**
-     * Determines whether a folder should be traversed.
-     * @param fileInfo The file selection information.
-     * @return true if the file or folder should be traversed.
-     */
-    @Override
-    public boolean traverseDescendents(final FileSelectInfo fileInfo)
-    {
-        return true;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FileUtil.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FileUtil.java
deleted file mode 100644
index 5b38745..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FileUtil.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * Utility methods for dealing with FileObjects.
- */
-public final class FileUtil
-{
-
-    private FileUtil()
-    {
-    }
-
-    /**
-     * Returns the content of a file, as a byte array.
-     *
-     * @param file The file to get the content of.
-     * @return The content as a byte array.
-     * @throws IOException if the file content cannot be accessed.
-     */
-    public static byte[] getContent(final FileObject file)
-        throws IOException
-    {
-        final FileContent content = file.getContent();
-        final int size = (int) content.getSize();
-        final byte[] buf = new byte[size];
-
-        final InputStream in = content.getInputStream();
-        try
-        {
-            int read = 0;
-            for (int pos = 0; pos < size && read >= 0; pos += read)
-            {
-                read = in.read(buf, pos, size - pos);
-            }
-        }
-        finally
-        {
-            in.close();
-        }
-
-        return buf;
-    }
-
-    /**
-     * Writes the content of a file to an OutputStream.
-     * @param file The FileObject to write.
-     * @param output The OutputStream to write to.
-     * @throws IOException if an error occurs writing the file.
-     * @see FileContent#write(OutputStream)
-     */
-    public static void writeContent(final FileObject file,
-                                    final OutputStream output)
-        throws IOException
-    {
-        file.getContent().write(output);
-    }
-
-    /**
-     * Copies the content from a source file to a destination file.
-     * @param srcFile The source FileObject.
-     * @param destFile The target FileObject
-     * @throws IOException If an error occurs copying the file.
-     * @see FileContent#write(FileContent)
-     * @see FileContent#write(FileObject)
-     */
-    public static void copyContent(final FileObject srcFile,
-                                   final FileObject destFile)
-        throws IOException
-    {
-        srcFile.getContent().write(destFile);
-    }
-
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/FilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/FilesCache.java
deleted file mode 100644
index 113cead..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/FilesCache.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * 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.vfs2;
-
-
-/**
- * The fileCache interface. Implementations of this interface are expected to be thread safe.
- */
-public interface FilesCache
-{
-    /**
-     * Adds a FileObject to the cache.
-     *
-     * @param file the file
-     */
-    void putFile(final FileObject file);
-
-    /**
-     * Adds a FileObject to the cache if it isn't already present.
-     *
-     * @param file the file
-     * @return true if the file was stored, false otherwise.
-     */
-    boolean putFileIfAbsent(final FileObject file);
-
-    /**
-     * Retrieves a FileObject from the cache by name.
-     *
-     * @param filesystem The FileSystem.
-     * @param name the name
-     * @return the fileobject or null if file is not cached
-     */
-    FileObject getFile(final FileSystem filesystem, final FileName name);
-
-    /**
-     * Purges the entries corresponding to the FileSystem.
-     *
-     * @param fileSystem The FileSystem.
-     */
-    void clear(final FileSystem fileSystem);
-
-    /**
-     * Purges the whole cache.
-     */
-    void close();
-
-    /**
-     * Removes a file from cache.
-     *
-     * @param filesystem filesystem
-     * @param name       filename
-     */
-    void removeFile(final FileSystem filesystem, final FileName name);
-
-    /**
-     * If the cache uses timestamps it could use this method to handle
-     * updates of them.
-     *
-     * @param file filename
-     */
-    // public void touchFile(final FileObject file);
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/NameScope.java b/trunk/core/src/main/java/org/apache/commons/vfs2/NameScope.java
deleted file mode 100644
index 8b43e53..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/NameScope.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * An enumerated type for file name scope, used when resolving a name relative
- * to a file.
- */
-public enum NameScope
-{
-    /**
-     * Resolve against the children of the base file.  The name is resolved
-     * as described by {@link #FILE_SYSTEM}.  However, an exception is
-     * thrown if the resolved file is not a direct child of the base file.
-     */
-    CHILD("child"),
-
-    /**
-     * Resolve against the descendants of the base file.  The name is resolved
-     * as described by {@link #FILE_SYSTEM}.  However, an exception is thrown
-     * if the resolved file is not a descendent of the base file.
-     */
-    DESCENDENT("descendent"),
-
-    /**
-     * Resolve against the descendants of the base file.  The name is resolved
-     * as described by {@link #FILE_SYSTEM}.  However, an exception is thrown
-     * if the resolved file is not a descendent of the base file, or the base
-     * files itself.
-     */
-    DESCENDENT_OR_SELF("descendent_or_self"),
-
-    /**
-     * Resolve against files in the same file system as the base file.
-     * <p>
-     * If the supplied name is an absolute path, then it is resolved
-     * relative to the root of the file system that the base file belongs to.
-     * If a relative name is supplied, then it is resolved relative to the base
-     * file.
-     * <p>
-     * The path may use any mix of {@code /}, {@code \}, or file
-     * system specific separators to separate elements in the path.  It may
-     * also contain {@code .} and {@code ..} elements.
-     * <p>
-     * A path is considered absolute if it starts with a separator character,
-     * and relative if it does not.
-     */
-    FILE_SYSTEM("filesystem");
-
-    /** The name */
-    private final String realName;
-
-    private NameScope(final String name)
-    {
-        this.realName = name;
-    }
-
-    /**
-     * Returns the name of the scope.
-     * @return The name of the scope.
-     */
-    @Override
-    public String toString()
-    {
-        return realName;
-    }
-
-    /**
-     * Returns the name of the scope.
-     * @return The name of the scope.
-     */
-    public String getName()
-    {
-        return realName;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/PatternFileSelector.java b/trunk/core/src/main/java/org/apache/commons/vfs2/PatternFileSelector.java
deleted file mode 100644
index b78d4bb..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/PatternFileSelector.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*

- * 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.vfs2;

-

-import java.util.regex.Pattern;

-

-/**

- * A {@link FileSelector} that selects based on regular expressions matched against base filename.

- *

- * @since 2.1

- */

-public class PatternFileSelector implements FileSelector

-{

-

-    /**

-     * The extensions to select.

-     */

-    private final Pattern pattern;

-

-    /**

-     * Creates a new selector for the given pattern.

-     *

-     * @param pattern

-     *            The regular expressed used by this selector.

-     */

-    public PatternFileSelector(final Pattern pattern)

-    {

-        this.pattern = pattern;

-    }

-

-    /**

-     * Creates a new selector for the given pattern.

-     *

-     * @param regex

-     *            The regular expressed used by this selector.

-     */

-    public PatternFileSelector(final String regex)

-    {

-        this(Pattern.compile(regex));

-    }

-

-    /**

-     * Creates a new selector for the given Pattern and flags.

-     *

-     * @param regex

-     *            The expression to be compiled

-     *

-     * @param flags

-     *            Match flags, a bit mask.

-     *

-     * @see Pattern#compile(String, int)

-     */

-    public PatternFileSelector(final String regex, final int flags)

-    {

-        this(Pattern.compile(regex, flags));

-    }

-

-    /**

-     * Determines if a file or folder should be selected.

-     *

-     * @param fileInfo

-     *            The file selection information.

-     * @return true if the file should be selected, false otherwise.

-     */

-    @Override

-    public boolean includeFile(final FileSelectInfo fileInfo)

-    {

-        return this.pattern.matcher(fileInfo.getFile().getName().getPath()).matches();

-    }

-

-    @Override

-    public String toString()

-    {

-        return this.pattern.toString();

-    }

-

-    /**

-     * Determines whether a folder should be traversed.

-     *

-     * @param fileInfo

-     *            The file selection information.

-     * @return true if descendants should be traversed, false otherwise.

-     */

-    @Override

-    public boolean traverseDescendents(final FileSelectInfo fileInfo)

-    {

-        return true;

-    }

-}

diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java
deleted file mode 100644
index a52b352..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/RandomAccessContent.java
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Provides random access over content.
- */
-public interface RandomAccessContent extends DataOutput, DataInput
-{
-    /**
-     * Closes this random access file stream and releases any system resources associated with the stream.
-     * <p>
-     * A closed random access file cannot perform input or output operations and cannot be reopened.
-     * </p>
-     * <p>
-     * If this file has an associated channel then the channel is closed as well.
-     * <p>
-     *
-     * @throws IOException
-     *             if an I/O error occurs.
-     */
-    void close() throws IOException;
-
-    /**
-     * Returns the current offset in this file.
-     *
-     * @return the offset from the beginning of the file, in bytes, at which the next read or write occurs.
-     * @throws IOException
-     *             if an I/O error occurs.
-     */
-    long getFilePointer() throws IOException;
-
-    /**
-     * Get the input stream.
-     * <p>
-     * <b>Notice: If you use {@link #seek(long)} you have to re-get the InputStream</b>
-     * </p>
-     *
-     * @return the InputStream.
-     * @throws IOException
-     *             if an I/O error occurs.
-     */
-    InputStream getInputStream() throws IOException;
-
-    /**
-     * Returns the length of this file.
-     *
-     * @return the length of this file, measured in bytes.
-     * @throws IOException
-     *             if an I/O error occurs.
-     */
-    long length() throws IOException;
-
-    /**
-     * Sets the file-pointer offset, measured from the beginning of this file, at which the next read or write occurs.
-     * <p>
-     * The offset may be set beyond the end of the file. Setting the offset beyond the end of the file does not change
-     * the file length. The file length will change only by writing after the offset has been set beyond the end of the
-     * file.
-     * </p>
-     * <p>
-     * <b>Notice: If you use {@link #getInputStream()} you have to re-get the InputStream after calling
-     * {@link #seek(long)}</b>
-     * </p>
-     *
-     * @param pos
-     *            the offset position, measured in bytes from the beginning of the file, at which to set the file
-     *            pointer.
-     * @throws IOException
-     *             if {@code pos} is less than {@code 0} or if an I/O error occurs.
-     */
-    void seek(long pos) throws IOException;
-
-    /**
-     * Sets the length of this content.
-     *
-     * <p>
-     * If the the {@code newLength} argument is smaller than {@link #length()}, the content is truncated.
-     * </p>
-     *
-     * <p>
-     * If the the {@code newLength} argument is greater than {@link #length()}, the content grows with undefined data.
-     * </p>
-     *
-     * @param newLength
-     *            The desired content length
-     * @exception IOException
-     *                If an I/O error occurs
-     * @since 2.1
-     */
-    void setLength(long newLength) throws IOException;
-
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/Resources.properties b/trunk/core/src/main/java/org/apache/commons/vfs2/Resources.properties
deleted file mode 100644
index 34270b9..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/Resources.properties
+++ /dev/null
@@ -1,301 +0,0 @@
-#   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.
-
-# $Id$
-
-# Factory
-vfs/create-manager.error=Could not create a file system manager of class "{0}".
-
-# AbstractFileObject
-vfs.provider/delete-not-supported.error=This file type does not support delete.
-vfs.provider/rename-not-supported.error=This file type does not support rename.
-vfs.provider/write-append-not-supported.error=The file type does not support append mode.
-vfs.provider/random-access-not-supported.error=The file type does not support random access.
-vfs.provider/random-access-read-not-supported.error=The file type does not support read in random access mode.
-vfs.provider/random-access-write-not-supported.error=The file type does not support write in random access mode.
-vfs.provider/create-folder-not-supported.error=This file type does not support folder creation.
-vfs.provider/get-last-modified-not-supported.error=This file type does not support retriving last modified time.
-vfs.provider/set-last-modified-not-supported.error=This file type does not support setting last modified time.
-vfs.provider/set-attribute-not-supported.error=This file type does not support setting attributes.
-vfs.provider/remove-attribute-not-supported.error=This file type does not support removing attributes.
-vfs.provider/get-attribute-not-supported.error=This file type does not support getting attributes.
-vfs.provider/write-not-supported.error=This file type cannot be written to.
-vfs.provider/get-type.error=Could not determine the type of file "{0}".
-vfs.provider/list-children-not-folder.error=Could not list the contents of "{0}" because it is not a folder.
-vfs.provider/list-children.error=Could not list the contents of folder "{0}".
-vfs.provider/delete-read-only.error=Could not delete "{0}" because it is read-only.
-vfs.provider/rename-read-only.error=Could not rename "{0}" because it is read-only.
-vfs.provider/rename-parent-read-only.error=Could not rename "{0}" because "{1}" is read-only.
-vfs.provider/rename-dest-exists.error=Destination "{0}" already existent.
-vfs.provider/delete.error=Could not delete "{0}".
-vfs.provider/rename.error=Could not rename "{0}" to "{1}".
-vfs.provider/create-folder-mismatched-type.error=Could not create folder "{0}" because it already exists and is a file.
-vfs.provider/create-folder-read-only.error=Could not create folder "{0}" because its parent folder is read-only.
-vfs.provider/create-folder.error=Could not create folder "{0}".
-vfs.provider/create-file.error=Could not create file "{0}".
-vfs.provider/write-read-only.error=Could not write to "{0}" because it is read-only.
-vfs.provider/write-not-file.error=Could not write to "{0}" because it is not a file.
-vfs.provider/write.error=Could not write to "{0}".
-vfs.provider/copy-file.error=Could not copy "{0}" to "{1}".
-vfs.provider/rename-filename.error=You can only rename within the same folder. Invalid Filename: "{0}".
-vfs.provider/copy-read-only.error=Could not copy {0} "{1}" to "{2}" because the destination file is read-only.
-vfs.provider/copy-missing-file.error=Could not copy "{0}" because it does not exist.
-vfs.provider/find-files.error=Could not find files in "{0}".
-vfs.provider/check-is-executable.error=Could not determine if file "{0}" is executable.
-vfs.provider/check-is-hidden.error=Could not determine if file "{0}" is hidden.
-vfs.provider/check-is-writeable.error=Could not determine if file "{0}" is writeable.
-vfs.provider/check-is-readable.error=Could not determine if file "{0}" is readable.
-vfs.provider/set-executable.error=Could not set the executable flag of file "{0}".
-vfs.provider/set-writeable.error=Could not set the writeable flag of file "{0}".
-vfs.provider/set-readable.error=Could not set the readable flag of file "{0}".
-vfs.provider/get-url.error=Could not create URL for "{0}".
-vfs.provider/resync.error=Could not resync "{0}".
-vfs.provider/close.error=Could not close "{0}".
-vfs.provider/read.error=Could not read file "{0}".
-vfs.provider/random-access.error=Could not read/write file "{0}".
-vfs.provider/read-not-readable.error=File "{0}" is not readable.
-vfs.provider/read-not-file.error=Could not read from "{0}" because it is not a file.
-vfs.provider/closed.error=File closed.
-
-# DefaultFileContent
-vfs.provider/get-size-not-file.error=Could not determine the size of "{0}" because it is not a file.
-vfs.provider/get-size-write.error=Could not determine the size of file "{0}" because it is being written to.
-vfs.provider/get-size.error=Could not determine the size of file "{0}".
-vfs.provider/read-in-use.error=Could not read file "{0}" because it is currently being written to.
-vfs.provider/write-in-use.error=Could not write to "{0}" because it is currently in use.
-vfs.provider/random-in-use.error=Could not read/write file "{0}" because it is currently in use.
-vfs.provider/get-last-modified-writing.error=Could not determine the last modified timestamp of "{0}" because it is being written to.
-vfs.provider/get-last-modified-no-exist.error=Could not determine the last modified timestamp of "{0}" because it does not exist.
-vfs.provider/get-last-modified.error=Could not determine the last modified timestamp of "{0}".
-vfs.provider/set-last-modified-writing.error=Could not set the last modified timestamp of "{0}" because it is being written to.
-vfs.provider/set-last-modified-no-exist.error=Could not set the last modified timestamp of "{0}" because it does not exist.
-vfs.provider/set-last-modified.error=Could not set the last modified timestamp of "{0}".
-vfs.provider/get-certificates-no-exist.error=Could not retrieve the certificates of "{0}" because it does not exist.
-vfs.provider/get-certificates-writing.error=Could not retrieve the certificates of "{0}" because it is being written to.
-vfs.provider/get-certificates.error=Could not retrieve the certificates of "{0}".
-vfs.provider/close-instr.error=Could not close the input stream for file "{0}".
-vfs.provider/close-outstr.error=Could not close the output stream for file "{0}".
-vfs.provider/close-rac.error=Could not close the random access content for file "{0}".
-vfs.provider/exists-attribute-no-exist.error=Could not check if attribute "{0}" of "{1}" exists because attributes are not supported.
-vfs.provider/get-attributes-no-exist.error=Could not get attributes for file "{0}" because it does not exist.
-vfs.provider/get-attributes.error=Could not get attributes "{0}".
-vfs.provider/set-attribute-no-exist.error=Could not set attribute "{0}" of "{1}" because it does not exist.
-vfs.provider/set-attribute.error=Could not set attribute "{0}" of "{1}".
-vfs.provider/remove-attribute-no-exist.error=Could not check if attribute "{0}" of "{1}" exists because attributes are not supported.
-vfs.provider/remove-attribute.error=Could not remove attribute "{0}" of "{1}".
-
-# AbstractFileSystemProvider
-vfs.provider/invalid-absolute-uri.error=Invalid absolute URI "{0}".
-vfs.provider/not-layered-fs.error=File system for URL scheme "{0}" is not a layered file system.
-vfs.provider/no-config-builder.error=File provider for URL scheme "{0}" does not provide a configuration builder.
-vfs.provider/config-key-invalid.error=The configuration builder for scheme "{0}" has no option "{1}".
-vfs.provider/config-value-invalid.error=The delegating configuration builder cant convert value "{2}" for key "{1}" scheme "{0}".
-vfs.provider/config-too-many-values.error=Too many values for configuration builder for scheme "{0}" key "{1}".
-vfs.provider/config-unexpected-primitive.error=Unexpected primitive "{0}".
-vfs.provider/config-unexpected-value-class.error=Cant convert a "{0}" value for scheme "{1}" key "{2}".
-
-# AbstractFileSystem
-vfs.provider/files-cache-missing.error=No files-cache implementation set.
-vfs.provider/mismatched-fs-for-name.error=Incorrect file system URI "{2}" in name "{0}", was expecting "{1}".
-vfs.provider/junctions-not-supported.error=Junctions not supported for file system "{0}".
-vfs.provider/notify-listener.warn=Could not notify listener of change to "{0}".
-vfs.provider/replicate-missing-file.error=Could not replicate "{0}" as it does not exist.
-vfs.provider/replicate-file.error=Could not replicate "{0}".
-vfs.provider/resolve-file.error=Could not resolve file "{0}".
-
-# AbstractFileProvider
-vfs.provider/filename-parser-missing.error=No filename-parser implementation set.
-
-# AbstractFileName
-vfs.provider/filename-type.error=A filename can only be of type FileType.FOLDER or FileType.FILE
-
-# Operations
-vfs.operation/wrong-type.error=Can't lookup operation, wrong type: "{0}"
-vfs.operation/not-found.error=Operation not found, type: "{0}"
-vfs.operation/cant-register.error=Can't register operation, wrong type: "{0}"
-vfs.operation/operation-not-supported.error=Operation "{0}" not supported.
-vfs.operation/operation-provider-already-added.error=Operation provider already added to scheme "{0}"
-
-# RandomAccess
-vfs.provider/random-access-invalid-position.error=Invalid position: "{0}"
-vfs.provider/random-access-open-failed.error=Could not access file "{0}" because it does not exist.
-
-# UriParser
-vfs.provider/missing-double-slashes.error=Expecting // to follow the scheme in URI "{0}".
-vfs.provider/missing-hostname.error=Hostname missing from URI "{0}".
-vfs.provider/missing-port.error=Port number is missing from URI "{0}".
-vfs.provider/missing-hostname-path-sep.error=Expecting / to follow the hostname in URI "{0}".
-vfs.provider/invalid-descendent-name.error=Invalid descendent file name "{0}".
-vfs.provider/invalid-escape-sequence.error=Invalid URI escape sequence "{0}".
-vfs.provider/invalid-relative-path.error=Invalid relative file name.
-
-# DefaultFileSystemManager
-vfs.impl/unknown-scheme.error=Unknown scheme "{0}" in URI "{1}".
-vfs.impl/find-rel-file.error=Could not find file with URI "{0}" because it is a relative path, and no base URI was provided.
-vfs.impl/multiple-providers-for-scheme.error=Multiple providers registered for URL scheme "{0}".
-vfs.impl/configuration-already-set.error=FilesCache implementation already set.
-vfs.impl/configuration-already-in-use.error=The configuration is already attached to an filesystemmanager. You cant change it anymore.
-vfs.impl/unknown-provider.error=No file provider is registered with URI scheme "{0}" to handle file "{1}".
-vfs.impl/no-provider-for-file.error=Could not find a file provider that can handle file "{0}".
-vfs.impl/no-local-file-provider.error=Could not find a file provider which can handle local files.
-vfs.impl/no-replicator.error=No file replicator configured.
-vfs.impl/no-temp-file-store.error=No temporary file store configured.
-vfs.impl/replicate-file.error=Could not replicate "{0}".
-vfs.impl/delete-temp.warn=Could not clean up temporary file "{0}".
-vfs.impl/init-replicator.error=Could not initialise file replicator.
-vfs.impl/already-inited.error=Manager already inited, cant change the configuration now.
-vfs.impl/invalid-decorator.error="{0}" is not a valid decorator. It has to extend "DecoratedFileObject" and must provide a single argument constructor which takes a "FileObject"
-vfs.impl/temp-dir.info=Using "{0}" as temporary files store.
-
-# StandardFileSystemManager
-vfs.impl/find-config-file.error=Could not find VFS configuration resource "{0}".
-vfs.impl/load-config.error=Could not load VFS configuration from "{0}".
-vfs.impl/create-provider.error=Could not create file provider of class "{0}".
-vfs.impl/create-files-cache.error=Could not create files-cache implementation of class "{0}".
-vfs.impl/create-client-factory.error=Could not create client factory of class "{0}".
-vfs.impl/skipping-provider.debug=Skipping provider "{0}" because required class "{1}" is not available.
-vfs.impl/skipping-provider-scheme.debug=Skipping provider "{0}" because required scheme "{1}" is not available.
-
-# FileTypeMap
-vfs.impl/multiple-schemes.error=This file requires multiple schemes. Use getSchemes() instead.
-
-# VFSClassLoader
-vfs.impl/pkg-sealing-unsealed=Trying to seal package "{0}" that exists as unsealed.
-vfs.impl/pkg-sealed-other-url=Package "{0}" exists and is sealed with other URL.
-
-# VirtualFileSystem
-vfs.impl/nested-junction.error=Attempting to create a nested junction at "{0}".  Nested junctions are not supported.
-vfs.impl/create-junction.error=Could not create a junction at "{0}".
-
-# SoftRefFilesCache
-vfs.impl/SoftRefReleaseThread-interrupt.info=SoftRefFilesCache - Release Thread interrupted.
-vfs.impl/SoftRefReleaseThread-already-running.warn=SoftRefFilesCache - Release Thread already running.
-
-# Local Provider
-vfs.provider.local/get-type.error=Could not determine the type of "{0}".
-vfs.provider.local/delete-file.error=Could not delete "{0}".
-vfs.provider.local/rename-file.error=Could not rename file "{0}" to "{1}".
-vfs.provider.local/create-folder.error=Could not create directory "{0}".
-vfs.provider.local/not-absolute-file-name.error=URI "{0}" is not an absolute file name.
-vfs.provider.local/missing-share-name.error=Share name missing from UNC file name "{0}".
-
-# Temp Provider
-vfs.provider.temp/get-type.error=Could not determine the type of "{0}".
-vfs.provider.temp/delete-file.error=Could not delete "{0}".
-vfs.provider.temp/rename-file.error=Could not rename file "{0}" to "{1}".
-vfs.provider.temp/create-folder.error=Could not create directory "{0}".
-vfs.provider.temp/not-absolute-file-name.error=URI "{0}" is not an absolute file name.
-vfs.provider.temp/missing-share-name.error=Share name missing from UNC file name "{0}".
-
-# SMB Provider
-vfs.provider.smb/missing-share-name.error=The share name is missing from URI "{0}".
-vfs.provider.smb/get-type.error=Could not detemine the type of "{0}".
-
-# Zip Provider
-vfs.provider.zip/open-zip-file.error=Could not open Zip file "{0}".
-vfs.provider.zip/close-zip-file.error=Could not close Zip file "{0}".
-
-# Bzip2 Provider
-vfs.provider.bzip2/not-a-bzip2-file.error=File "{0}" is not bzip2 compressed.
-
-# JarFileSystem
-vfs.provider.jar/open-jar-file.error=Could not open Jar file "{0}".
-
-# JarURLConnectionImpl
-vfs.provider.jar/jar-file-no-access.error=JarURLConnections in VFS does not give access to the JarFile.
-vfs.provider.jar/jar-entry-no-access.error=JarURLConnections in VFS does not give access to the JarEntry.
-
-# FTP Provider
-vfs.provider.ftp.wrapper/change-work-directory-back.error=Could not change back to work directory "{0}".
-vfs.provider.ftp/change-work-directory.error=Could not change to work directory "{0}".
-vfs.provider.ftp/close-connection.error=Could not close connection to FTP server.
-vfs.provider.ftp/connect-rejected.error=Connection to FTP server on "{0}" rejected.
-vfs.provider.ftp/connect.error=Could not connect to FTP server on "{0}".
-vfs.provider.ftp/create-folder.error=Could not create FTP directory "{0}".
-vfs.provider.ftp/delete-file.error=Could not delete FTP file "{0}".
-vfs.provider.ftp/finish-get.error=Could not get FTP file "{0}".
-vfs.provider.ftp/finish-put.error=Could not put FTP file "{0}".
-vfs.provider.ftp/get-type.error=Could not determine the file type of "{0}".
-vfs.provider.ftp/input-error.debug=Cant open input connection for file "{0}". Reason: "{1}".
-vfs.provider.ftp/invalid-directory-entry.debug=Invalid directory entry at line "{0}" (directory "{1}").
-vfs.provider.ftp/login.error=Could not login to FTP server on "{0}" as user "{1}".
-vfs.provider.ftp/output-error.debug=Cant open output connection for file "{0}". Reason: "{1}".
-vfs.provider.ftp/rename-file.error=Could not rename FTP file "{0}" to "{1}".
-vfs.provider.ftp/set-file-type.error=Could not set the file type to "{0}".
-
-# FTPS Provider
-vfs.provider.ftps/data-channel.level=Failed to setup secure data channel level "{0}".
-
-# SFTP Provider
-vfs.provider.sftp/change-work-directory-back.error=Could not change back to work directory "{0}".
-vfs.provider.sftp/change-work-directory.error=Could not change to work directory "{0}".
-vfs.provider.sftp/config-sshdir.error=SSH-Folder "{0}" non existent or not a folder.
-vfs.provider.sftp/connect.error=Could not connect to SFTP server at "{0}".
-vfs.provider.sftp/create-folder.error=Folder creation failed with unknown error.
-vfs.provider.sftp/delete.error=Delete failed with unknown error.
-vfs.provider.sftp/filename-encoding.error=Could not change to file name encoding "{0}"
-vfs.provider.sftp/get-file.error=Read file contents failed with unknown error.
-vfs.provider.sftp/known-hosts.error=Error during processing known-hosts file "{0}".
-vfs.provider.sftp/list-children.error=List folder contents failed with unknown error.
-vfs.provider.sftp/load-private-key.error=Could not load private key from "{0}".
-vfs.provider.sftp/put-file.error=Write file contents failed with unknown error.
-vfs.provider.sftp/StrictHostKeyChecking-arg.error=Illegal argument "{0}" hostKeyChecking can only be "ask", "yes" or "no"
-vfs.provider.sftp/unknown-modtime.error=Last modification time not fetched.
-vfs.provider.sftp/unknown-permissions.error=File permissions not fetched.
-vfs.provider.sftp/unknown-size.error=File size not fetched.
-
-# URL Provider
-vfs.provider.url/badly-formed-uri.error=Badly formed URI "{0}".
-
-# Http Provider
-vfs.provider.http/get.error=GET method failed for "{0}" with HTTP status {1}.
-vfs.provider.http/head.error=HEAD method failed for "{0}" with HTTP status {1}.
-vfs.provider.http/last-modified.error=No Last-Modified header in HTTP response.
-vfs.provider.http/get-range.error=GET method failed for "{0}" range "{1}" with HTTP status {2}.
-vfs.provider.http/connect.error=Could not connect to HTTP server on "{0}".
-
-# WebDAV Provider
-vfs.provider.webdav/write-file.error=Write to file failed with message: "{0}".
-vfs.provider.webdav/list-children.error=List child resources failed with message: "{0}".
-vfs.provider.webdav/create-collection.error=Create collection failed with message: "{0}".
-vfs.provider.webdav/delete-file.error=Delete file failed with message: "{0}".
-vfs.provider.webdav/create-client.error=Could not create client for server "{0}".
-vfs.provider.webdav/rename-file.error=Rename file failed with message: "{0}".
-vfs.provider.webdav/get-attributes.error=Could not get attributes for: "{0}".
-vfs.provider.webdav/set-attributes.error=Could not set property "{1}" for: "{0}".
-vfs.provider.webdav/get-property.error=Could not get property for: "{0}", name="{1}", type="{2}", nameSet="{3}", addEncoding="{4}".
-
-# Tar
-vfs.provider.tar/open-tar-file.error=Could not open Tar file "{0}".
-vfs.provider.tar/close-tar-file.error=Could not close Tar file "{0}".
-
-# Ant tasks
-vfs.tasks/sync.no-destination.error=No destination file or directory specified.
-vfs.tasks/sync.too-many-destinations.error=Cannot specify both a destination file and a destination directory.
-vfs.tasks/sync.no-source-files.warn=No source files specified.
-vfs.tasks/sync.no-source-file.error=No source file specified.
-vfs.tasks/sync.too-many-source-files.error=Too many source files specified.
-vfs.tasks/sync.source-not-file.error=Source file "{0}" is not a file, or does not exist.
-vfs.tasks/sync.src-file-no-exist.warn=Source file "{0}" does not exist.
-vfs.tasks/sync.duplicate-source-files.warn=Multiple source files for destination file "{0}".
-vfs.tasks/delete.no-source-files.error=No files to delete specified.
-vfs.tasks/mkdir.create-folder.info=Creating directory "{0}".
-
-# Selectors
-vfs.selectors/filefilter.missing.error=Configure a fileFilter or override accept().
-
-# Utils
-vfs.util/find-abstract-file-object.error=Object "{0}" did not extend from AbstractFileObject.
-vfs.util/missing-capability.error=The Filesystem does not provide the required capability "{0}".
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/Selectors.java b/trunk/core/src/main/java/org/apache/commons/vfs2/Selectors.java
deleted file mode 100644
index 1d539fc..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/Selectors.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * Several standard file selectors.
- */
-public final class Selectors
-{
-    /**
-     * A {@link FileSelector} that selects only the base file/folder.
-     */
-    public static final FileSelector SELECT_SELF = new FileDepthSelector();
-
-    /**
-     * A {@link FileSelector} that selects the base file/folder and its
-     * direct children.
-     */
-    public static final FileSelector SELECT_SELF_AND_CHILDREN = new FileDepthSelector(0, 1);
-
-    /**
-     * A {@link FileSelector} that selects only the direct children
-     * of the base folder.
-     */
-    public static final FileSelector SELECT_CHILDREN = new FileDepthSelector(1);
-
-    /**
-     * A {@link FileSelector} that selects all the descendants of the
-     * base folder, but does not select the base folder itself.
-     */
-    public static final FileSelector EXCLUDE_SELF = new FileDepthSelector(1, Integer.MAX_VALUE);
-
-    /**
-     * A {@link FileSelector} that only files (not folders).
-     */
-    public static final FileSelector SELECT_FILES = new FileTypeSelector(FileType.FILE);
-
-    /**
-     * A {@link FileSelector} that only folders (not files).
-     */
-    public static final FileSelector SELECT_FOLDERS = new FileTypeSelector(FileType.FOLDER);
-
-    /**
-     * A {@link FileSelector} that selects the base file/folder, plus all
-     * its descendants.
-     */
-    public static final FileSelector SELECT_ALL = new AllFileSelector();
-
-    /**
-     * Prevent the class from being instantiated.
-     */
-    private Selectors()
-    {
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/UserAuthenticationData.java b/trunk/core/src/main/java/org/apache/commons/vfs2/UserAuthenticationData.java
deleted file mode 100644
index f35a381..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/UserAuthenticationData.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.util.Iterator;
-import java.util.Map;
-import java.util.TreeMap;
-
-/**
- * Contains various authentication data.
- */
-public class UserAuthenticationData
-{
-    /**
-     * Represents a user authentication item.
-     */
-    public static class Type implements Comparable<Type>
-    {
-        /** The type name */
-        private final String type;
-
-        /**
-         * Creates a new Type.
-         *
-         * @param type the type
-         */
-        public Type(final String type)
-        {
-            this.type = type;
-        }
-
-        @Override
-        public boolean equals(final Object o)
-        {
-            if (this == o)
-            {
-                return true;
-            }
-            if (o == null || getClass() != o.getClass())
-            {
-                return false;
-            }
-
-            final Type type1 = (Type) o;
-
-            if (type != null ? !type.equals(type1.type) : type1.type != null)
-            {
-                return false;
-            }
-
-            return true;
-        }
-
-        @Override
-        public int compareTo(final Type o)
-        {
-            return type.compareTo(o.type);
-        }
-
-        /**
-         * @return The hash code.
-         * @since 2.0
-         * */
-        @Override
-        public int hashCode()
-        {
-            return type != null ? type.hashCode() : 0;
-        }
-
-        /**
-         * @return The type.
-         * @since 2.0
-         * */
-        @Override
-        public String toString()
-        {
-            return type;
-        }
-    }
-
-    /** The user name. */
-    public static final Type USERNAME = new Type("username");
-
-    /** The password. */
-    public static final Type PASSWORD = new Type("password");
-
-    /** The user's domain. */
-    public static final Type DOMAIN = new Type("domain");
-
-    /** The authentication data. */
-    private final Map<Type, char[]> authenticationData = new TreeMap<Type, char[]>();
-
-    /**
-     * Creates a new uninitialized instance.
-     */
-    public UserAuthenticationData()
-    {
-        // do nothing
-    }
-
-    /**
-     * Sets a data to this collection.
-     * @param type The Type to add
-     * @param data The data associated with the Type
-     */
-    public void setData(final Type type, final char[] data)
-    {
-        authenticationData.put(type, data);
-    }
-
-    /**
-     * Gets a data from the collection.
-     * @param type The Type to retrieve.
-     * @return a character array containing the data associated with the type.
-     */
-    public char[] getData(final Type type)
-    {
-        return authenticationData.get(type);
-    }
-
-    /**
-     * Deletes all data stored within this authenticator.
-     */
-    public void cleanup()
-    {
-        // step 1: nullify character buffers
-        final Iterator<char[]> iterAuthenticationData = authenticationData.values().iterator();
-        while (iterAuthenticationData.hasNext())
-        {
-            final char[] data = iterAuthenticationData.next();
-            if (data == null || data.length < 0)
-            {
-                continue;
-            }
-
-            for (int i = 0; i < data.length; i++)
-            {
-                data[i] = 0;
-            }
-        }
-        // step 2: allow data itself to gc
-        authenticationData.clear();
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/UserAuthenticator.java b/trunk/core/src/main/java/org/apache/commons/vfs2/UserAuthenticator.java
deleted file mode 100644
index 9885986..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/UserAuthenticator.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.vfs2;
-
-/**
- * The user authenticator is used to query credentials from the user. Since a UserAuthenticator
- * is provided with the {@link FileSystemOptions} to a {@link FileSystem} it should also implement
- * reasonable equals and hashCode functions if the FileSystem should be shared.
- */
-public interface UserAuthenticator
-{
-    /**
-     * Queries the given type from the user.
-     * @param types An array containing the user's credentials
-     * @return The UserAuthenticationData.
-     */
-    UserAuthenticationData requestAuthentication(UserAuthenticationData.Type[] types);
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/VFS.java b/trunk/core/src/main/java/org/apache/commons/vfs2/VFS.java
deleted file mode 100644
index 4a06105..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/VFS.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * 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.vfs2;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * The main entry point for the VFS.  Used to create {@link FileSystemManager}
- * instances.
- */
-public final class VFS
-{
-    /** The URI style */
-    private static Boolean uriStyle;
-
-    /** The FileSystemManager */
-    private static FileSystemManager instance;
-
-    private VFS()
-    {
-    }
-
-    /**
-     * Returns the default {@link FileSystemManager} instance.
-     * <p>
-     * Warning, if you close this instance you may affect all current
-     * and future users of this manager singleton.
-     *
-     * @return The FileSystemManager.
-     * @throws FileSystemException if an error occurs creating the manager.
-     */
-    public static synchronized FileSystemManager getManager()
-        throws FileSystemException
-    {
-        if (instance == null)
-        {
-            instance = createManager("org.apache.commons.vfs2.impl.StandardFileSystemManager");
-        }
-        return instance;
-    }
-
-    /**
-     * Creates a file system manager instance.
-     * @param managerClassName The specific manager impelmentation class name.
-     * @return The FileSystemManager.
-     * @throws FileSystemException if an error occurs creating the manager.
-     */
-    private static FileSystemManager createManager(final String managerClassName)
-        throws FileSystemException
-    {
-        try
-        {
-            // Create instance
-            final Class<?> mgrClass = Class.forName(managerClassName);
-            final FileSystemManager mgr = (FileSystemManager) mgrClass.newInstance();
-
-            try
-            {
-                // Initialize
-                final Method initMethod = mgrClass.getMethod("init", (Class[]) null);
-                initMethod.invoke(mgr, (Object[]) null);
-            }
-            catch (final NoSuchMethodException ignored)
-            {
-                /* Ignore; don't initialize. */
-            }
-
-            return mgr;
-        }
-        catch (final InvocationTargetException e)
-        {
-            throw new FileSystemException("vfs/create-manager.error",
-                managerClassName,
-                e.getTargetException());
-        }
-        catch (final Exception e)
-        {
-            throw new FileSystemException("vfs/create-manager.error",
-                managerClassName,
-                e);
-        }
-    }
-
-    public static boolean isUriStyle()
-    {
-        if (uriStyle == null)
-        {
-            uriStyle = Boolean.FALSE;
-        }
-        return uriStyle.booleanValue();
-    }
-
-    public static void setUriStyle(final boolean uriStyle)
-    {
-        if (VFS.uriStyle != null && VFS.uriStyle.booleanValue() != uriStyle)
-        {
-            throw new IllegalStateException("VFS.uriStyle was already set differently.");
-        }
-        VFS.uriStyle = Boolean.valueOf(uriStyle);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/VfsLog.java b/trunk/core/src/main/java/org/apache/commons/vfs2/VfsLog.java
deleted file mode 100644
index 4149e58..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/VfsLog.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * 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.vfs2;
-
-import org.apache.commons.logging.Log;
-
-/**
- * This class is to keep the old logging behaviour (for ant-task) and to be able to
- * correctly use commons-logging.<br>
- * I hope i could remove it sometimes.
- */
-public final class VfsLog
-{
-    // static utility class
-    private VfsLog()
-    {
-    }
-
-    /**
-     * warning.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     * @param t The exception, if any.
-     */
-    public static void warn(final Log vfslog, final Log commonslog, final String message, final Throwable t)
-    {
-        if (vfslog != null)
-        {
-            vfslog.warn(message, t);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.warn(message, t);
-        }
-    }
-
-    /**
-     * warning.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     */
-    public static void warn(final Log vfslog, final Log commonslog, final String message)
-    {
-        if (vfslog != null)
-        {
-            vfslog.warn(message);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.warn(message);
-        }
-    }
-
-    /**
-     * debug.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     */
-    public static void debug(final Log vfslog, final Log commonslog, final String message)
-    {
-        if (vfslog != null)
-        {
-            vfslog.debug(message);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.debug(message);
-        }
-    }
-
-    /**
-     * debug.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     * @param t The exception, if any.
-     */
-    public static void debug(final Log vfslog, final Log commonslog, final String message, final Throwable t)
-    {
-        if (vfslog != null)
-        {
-            vfslog.debug(message, t);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.debug(message, t);
-        }
-    }
-
-    /**
-     * info.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     * @param t The exception, if any.
-     */
-    public static void info(final Log vfslog, final Log commonslog, final String message, final Throwable t)
-    {
-        if (vfslog != null)
-        {
-            vfslog.info(message, t);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.info(message, t);
-        }
-    }
-
-    /**
-     * info.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     */
-    public static void info(final Log vfslog, final Log commonslog, final String message)
-    {
-        if (vfslog != null)
-        {
-            vfslog.info(message);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.info(message);
-        }
-    }
-
-    /**
-     * error.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     * @param t The exception, if any.
-     */
-    public static void error(final Log vfslog, final Log commonslog, final String message, final Throwable t)
-    {
-        if (vfslog != null)
-        {
-            vfslog.error(message, t);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.error(message, t);
-        }
-    }
-
-    /**
-     * error.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     */
-    public static void error(final Log vfslog, final Log commonslog, final String message)
-    {
-        if (vfslog != null)
-        {
-            vfslog.error(message);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.error(message);
-        }
-    }
-
-    /**
-     * fatal.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     * @param t The exception, if any.
-     */
-    public static void fatal(final Log vfslog, final Log commonslog, final String message, final Throwable t)
-    {
-        if (vfslog != null)
-        {
-            vfslog.fatal(message, t);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.fatal(message, t);
-        }
-    }
-
-    /**
-     * fatal.
-     * @param vfslog The base component Logger to use.
-     * @param commonslog The class specific Logger
-     * @param message The message to log.
-     */
-    public static void fatal(final Log vfslog, final Log commonslog, final String message)
-    {
-        if (vfslog != null)
-        {
-            vfslog.fatal(message);
-        }
-        else if (commonslog != null)
-        {
-            commonslog.fatal(message);
-        }
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java b/trunk/core/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java
deleted file mode 100644
index f142db9..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/auth/StaticUserAuthenticator.java
+++ /dev/null
@@ -1,205 +0,0 @@
-/*
- * 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.vfs2.auth;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.vfs2.UserAuthenticationData;
-import org.apache.commons.vfs2.UserAuthenticator;
-import org.apache.commons.vfs2.util.UserAuthenticatorUtils;
-
-/**
- * Provides always the same credentials data passed in with the constructor.
- */
-public class StaticUserAuthenticator implements UserAuthenticator, Comparable<StaticUserAuthenticator>
-{
-    private static final Log LOG = LogFactory.getLog(StaticUserAuthenticator.class);
-
-    /** The user name */
-    private final String username;
-
-    /** The password */
-    private final String password;
-
-    /** The user's domain */
-    private final String domain;
-
-    public StaticUserAuthenticator(final String domain, final String username, final String password)
-    {
-        this.username = username;
-        this.password = password;
-        this.domain = domain;
-    }
-
-    @Override
-    public UserAuthenticationData requestAuthentication(final UserAuthenticationData.Type[] types)
-    {
-        final UserAuthenticationData data = new UserAuthenticationData();
-        for (final UserAuthenticationData.Type type : types)
-        {
-            if (type == UserAuthenticationData.DOMAIN)
-            {
-                data.setData(UserAuthenticationData.DOMAIN, UserAuthenticatorUtils.toChar(domain));
-            }
-            else if (type == UserAuthenticationData.USERNAME)
-            {
-                data.setData(UserAuthenticationData.USERNAME, UserAuthenticatorUtils.toChar(username));
-            }
-            else if (type == UserAuthenticationData.PASSWORD)
-            {
-                data.setData(UserAuthenticationData.PASSWORD, UserAuthenticatorUtils.toChar(password));
-            }
-            else
-            {
-                if (LOG.isDebugEnabled())
-                {
-                    LOG.debug(StaticUserAuthenticator.class.getSimpleName()
-                        + " does not support authentication data type '" + type
-                        + "'; authentication request for this type ignored.");
-                }
-            }
-        }
-        return data;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @since 2.0
-     */
-    @Override
-    public int hashCode()
-    {
-        final int prime = 37;
-        int result = 1;
-        result = prime * result + (domain == null ? 0 : domain.hashCode());
-        result = prime * result + (password == null ? 0 : password.hashCode());
-        result = prime * result + (username == null ? 0 : username.hashCode());
-
-        return result;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @since 2.0
-     */
-    @Override
-    public boolean equals(final Object obj)
-    {
-        if (this == obj)
-        {
-            return true;
-        }
-
-        if (obj == null)
-        {
-            return false;
-        }
-
-        if (getClass() != obj.getClass())
-        {
-            return false;
-        }
-
-        final StaticUserAuthenticator other = (StaticUserAuthenticator) obj;
-        return equalsNullsafe(domain, other.domain)
-                && equalsNullsafe(username, other.username)
-                && equalsNullsafe(password, other.password);
-    }
-
-    private boolean equalsNullsafe(final String thisString, final String otherString)
-    {
-        if (thisString == null)
-        {
-            if (otherString != null)
-            {
-                return false;
-            }
-        }
-        else if (!thisString.equals(otherString))
-        {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @since 2.0
-     */
-    @Override
-    public int compareTo(final StaticUserAuthenticator other)
-    {
-        int result = compareStringOrNull(domain, other.domain);
-        result = result == 0 ? compareStringOrNull(username, other.username) : result;
-        result = result == 0 ? compareStringOrNull(password, other.password) : result;
-
-        return result;
-    }
-
-    private int compareStringOrNull(final String thisString, final String otherString)
-    {
-        if (thisString == null)
-        {
-            if (otherString != null)
-            {
-                return -1;
-            }
-        }
-        else
-        {
-            if (otherString == null)
-            {
-                return 1;
-            }
-
-            final int result = thisString.compareTo(otherString);
-            if (result != 0)
-            {
-                return result;
-            }
-        }
-
-        return 0;
-    }
-
-    /**
-     * {@inheritDoc}
-     * @since 2.0
-     */
-    @Override
-    public String toString()
-    {
-        final StringBuilder buffer = new StringBuilder();
-        if (domain != null)
-        {
-            buffer.append(domain).append('\\');
-        }
-        if (username != null)
-        {
-            buffer.append(username);
-        }
-        else
-        {
-            buffer.append("(null)");
-        }
-        if (password != null)
-        {
-            buffer.append(":***");
-        }
-        return buffer.toString();
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/auth/package.html b/trunk/core/src/main/java/org/apache/commons/vfs2/auth/package.html
deleted file mode 100644
index 754cf02..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/auth/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-    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.
--->
-<body>
-<p>VFS Authentication implementation</p>
-</body>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/AbstractFilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/AbstractFilesCache.java
deleted file mode 100644
index b802777..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/AbstractFilesCache.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FilesCache;
-import org.apache.commons.vfs2.provider.AbstractVfsComponent;
-
-
-/**
- * Abstract base class for FilesCache implementations.
- */
-public abstract class AbstractFilesCache extends AbstractVfsComponent implements FilesCache
-{
-    // @Override - commented in FilesCache interface
-    public void touchFile(final FileObject file)
-    {
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java
deleted file mode 100644
index 920d9d0..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/DefaultFilesCache.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystem;
-
-/**
- * A simple {@link org.apache.commons.vfs2.FilesCache FilesCache} implementation.
- * <p>
- * This implementation caches every file with no expire or limit.
- * All files and filesystems are hard reachable references. This implementation
- * holds a list of filesystem specific {@linkplain ConcurrentHashMap ConcurrentHashMaps} in
- * the main cache map.
- * <p>
- * Cached {@linkplain FileObject FileObjects} as well as {@linkplain FileSystem FileSystems}
- * are only removed when {@link #clear(FileSystem)} is called (i.e. on filesystem close).
- * When the used {@link org.apache.commons.vfs2.FileSystemManager FileSystemManager} is closed,
- * it will also {@linkplain #close() close} this cache (which frees all entries).
- * <p>
- * Despite its name, this is not the fallback implementation used by
- * {@link org.apache.commons.vfs2.impl.DefaultFileSystemManager#init() DefaultFileSystemManager#init()}
- * anymore.
- */
-public class DefaultFilesCache extends AbstractFilesCache
-{
-    /** The FileSystem cache. Keeps one Map for each FileSystem. */
-    private final ConcurrentMap<FileSystem, ConcurrentMap<FileName, FileObject>> filesystemCache =
-                    new ConcurrentHashMap<FileSystem, ConcurrentMap<FileName, FileObject>>(10);
-
-    @Override
-    public void putFile(final FileObject file)
-    {
-        final Map<FileName, FileObject> files = getOrCreateFilesystemCache(file.getFileSystem());
-        files.put(file.getName(), file);
-    }
-
-    @Override
-    public boolean putFileIfAbsent(final FileObject file)
-    {
-        final ConcurrentMap<FileName, FileObject> files = getOrCreateFilesystemCache(file.getFileSystem());
-        return files.putIfAbsent(file.getName(), file) == null;
-    }
-
-    @Override
-    public FileObject getFile(final FileSystem filesystem, final FileName name)
-    {
-        // avoid creating filesystem entry for empty filesystem cache:
-        final Map<FileName, FileObject> files = filesystemCache.get(filesystem);
-        if (files == null)
-        {
-            // cache for filesystem is not known => file is not cached:
-            return null;
-        }
-
-        return files.get(name); // or null
-    }
-
-    @Override
-    public void clear(final FileSystem filesystem)
-    {
-        // avoid keeping a reference to the FileSystem (key) object
-        final Map<FileName, FileObject> files = filesystemCache.remove(filesystem);
-        if (files != null)
-        {
-            files.clear(); // help GC
-        }
-    }
-
-    protected ConcurrentMap<FileName, FileObject> getOrCreateFilesystemCache(final FileSystem filesystem)
-    {
-        ConcurrentMap<FileName, FileObject> files = filesystemCache.get(filesystem);
-        // we loop to make sure we never return null even when concurrent clean is called
-        while (files == null)
-        {
-            filesystemCache.putIfAbsent(filesystem, new ConcurrentHashMap<FileName, FileObject>(200, 0.75f, 8));
-            files = filesystemCache.get(filesystem);
-        }
-
-        return files;
-    }
-
-    @Override
-    public void close()
-    {
-        super.close();
-
-        filesystemCache.clear();
-    }
-
-    @Override
-    public void removeFile(final FileSystem filesystem, final FileName name)
-    {
-        // avoid creating filesystem entry for empty filesystem cache:
-        final Map<FileName, FileObject> files = filesystemCache.get(filesystem);
-        if (files != null)
-        {
-            files.remove(name);
-            // This would be too racey:
-            // if (files.empty()) filesystemCache.remove(filessystem);
-        }
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/FileSystemAndNameKey.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/FileSystemAndNameKey.java
deleted file mode 100644
index d9cdaa4..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/FileSystemAndNameKey.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileSystem;
-
-/**
- * Key for various cache implementations.
- * <p>
- * It compares the fileSystem (by hashCode) and the filename.
- */
-class FileSystemAndNameKey implements Comparable<FileSystemAndNameKey>
-{
-    /** The FileSystem */
-    private final FileSystem fileSystem;
-
-    /** The FileName */
-    private final FileName fileName;
-
-    /** hashcode to identify this object */
-    private final int fileSystemId;
-
-    FileSystemAndNameKey(final FileSystem fileSystem, final FileName fileName)
-    {
-        this.fileSystem = fileSystem;
-        this.fileSystemId = System.identityHashCode(fileSystem);
-
-        this.fileName = fileName;
-    }
-
-    @Override
-    public int compareTo(final FileSystemAndNameKey other)
-    {
-        if (fileSystemId < other.fileSystemId)
-        {
-            return -1;
-        }
-        if (fileSystemId > other.fileSystemId)
-        {
-            return 1;
-        }
-
-        return fileName.compareTo(other.fileName);
-    }
-
-    FileSystem getFileSystem()
-    {
-        return fileSystem;
-    }
-
-    FileName getFileName()
-    {
-        return fileName;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/LRUFilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/LRUFilesCache.java
deleted file mode 100644
index eba5fcd..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/LRUFilesCache.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-import org.apache.commons.collections4.map.AbstractLinkedMap;
-import org.apache.commons.collections4.map.LRUMap;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystem;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.VfsLog;
-import org.apache.commons.vfs2.util.Messages;
-
-/**
- * This implementation caches every file using {@link LRUMap}.
- * <p>
- * The default constructor uses a LRU size of 100 per filesystem.
- */
-public class LRUFilesCache extends AbstractFilesCache
-{
-    /** The default LRU size */
-    private static final int DEFAULT_LRU_SIZE = 100;
-
-    /** The logger to use. */
-    private static final Log log = LogFactory.getLog(LRUFilesCache.class);
-
-    /** The FileSystem cache */
-    private final ConcurrentMap<FileSystem, Map<FileName, FileObject>> filesystemCache =
-          new ConcurrentHashMap<FileSystem, Map<FileName, FileObject>>(10);
-
-    /** The size of the cache */
-    private final int lruSize;
-
-    private final ReadWriteLock rwLock = new ReentrantReadWriteLock();
-    private final Lock readLock = rwLock.readLock();
-    private final Lock writeLock = rwLock.writeLock();
-
-    /**
-     * The file cache
-     */
-    private class MyLRUMap extends LRUMap<FileName, FileObject>
-    {
-        /**
-         * serialVersionUID format is YYYYMMDD for the date of the last binary change.
-         */
-        private static final long serialVersionUID = 20101208L;
-
-        /** The FileSystem */
-        private final FileSystem filesystem;
-
-        public MyLRUMap(final FileSystem filesystem, final int size)
-        {
-            super(size, true);
-            this.filesystem = filesystem;
-        }
-
-        @Override
-        protected boolean removeLRU(final AbstractLinkedMap.LinkEntry<FileName, FileObject> linkEntry)
-        {
-            synchronized (LRUFilesCache.this)
-            {
-                final FileObject file = linkEntry.getValue();
-
-                // System.err.println(">>> " + size() + " check removeLRU:" + linkEntry.getKey().toString());
-
-                if (file.isAttached() || file.isContentOpen())
-                {
-                    // do not allow open or attached files to be removed
-                    // System.err.println(">>> " + size() + " VETO removeLRU:" +
-                    //    linkEntry.getKey().toString() + " (" + file.isAttached() + "/" +
-                    //    file.isContentOpen() + ")");
-                    return false;
-                }
-
-                // System.err.println(">>> " + size() + " removeLRU:" + linkEntry.getKey().toString());
-                if (super.removeLRU(linkEntry))
-                {
-                    try
-                    {
-                        // force detach
-                        file.close();
-                    }
-                    catch (final FileSystemException e)
-                    {
-                        VfsLog.warn(getLogger(), log, Messages.getString("vfs.impl/LRUFilesCache-remove-ex.warn"), e);
-                    }
-
-                    final Map<?, ?> files = filesystemCache.get(filesystem);
-                    if (files.size() < 1)
-                    {
-                        filesystemCache.remove(filesystem);
-                    }
-
-                    return true;
-                }
-
-                return false;
-            }
-        }
-    }
-
-    /**
-     * Default constructor. Uses a LRU size of 100 per filesystem.
-     */
-    public LRUFilesCache()
-    {
-        this(DEFAULT_LRU_SIZE);
-    }
-
-    /**
-     * Set the desired LRU size.
-     *
-     * @param lruSize the LRU size
-     */
-    public LRUFilesCache(final int lruSize)
-    {
-        this.lruSize = lruSize;
-    }
-
-    @Override
-    public void putFile(final FileObject file)
-    {
-        final Map<FileName, FileObject> files = getOrCreateFilesystemCache(file.getFileSystem());
-
-        writeLock.lock();
-        try
-        {
-            files.put(file.getName(), file);
-        }
-        finally
-        {
-            writeLock.unlock();
-        }
-    }
-
-
-    @Override
-    public boolean putFileIfAbsent(final FileObject file)
-    {
-        final Map<FileName, FileObject> files = getOrCreateFilesystemCache(file.getFileSystem());
-
-        writeLock.lock();
-        try
-        {
-            final FileName name = file.getName();
-
-            if (files.containsKey(name))
-            {
-                return false;
-            }
-
-            files.put(name, file);
-            return true;
-        }
-        finally
-        {
-            writeLock.unlock();
-        }
-    }
-
-    @Override
-    public FileObject getFile(final FileSystem filesystem, final FileName name)
-    {
-        final Map<FileName, FileObject> files = getOrCreateFilesystemCache(filesystem);
-
-        readLock.lock();
-        try
-        {
-            return files.get(name);
-        }
-        finally
-        {
-            readLock.unlock();
-        }
-    }
-
-    @Override
-    public void clear(final FileSystem filesystem)
-    {
-        final Map<FileName, FileObject> files = getOrCreateFilesystemCache(filesystem);
-
-        writeLock.lock();
-        try
-        {
-            files.clear();
-
-            filesystemCache.remove(filesystem);
-        }
-        finally
-        {
-            writeLock.unlock();
-        }
-    }
-
-    protected Map<FileName, FileObject> getOrCreateFilesystemCache(final FileSystem filesystem)
-    {
-        Map<FileName, FileObject> files = filesystemCache.get(filesystem);
-        if (files == null)
-        {
-            files = new MyLRUMap(filesystem, lruSize);
-            filesystemCache.putIfAbsent(filesystem, files);
-        }
-        return files;
-    }
-
-    @Override
-    public void close()
-    {
-        super.close();
-        filesystemCache.clear();
-    }
-
-    @Override
-    public void removeFile(final FileSystem filesystem, final FileName name)
-    {
-        final Map<?, ?> files = getOrCreateFilesystemCache(filesystem);
-
-        writeLock.lock();
-        try
-        {
-            files.remove(name);
-
-            if (files.size() < 1)
-            {
-                filesystemCache.remove(filesystem);
-            }
-        }
-        finally
-        {
-            writeLock.unlock();
-        }
-    }
-
-    @Override
-    public void touchFile(final FileObject file)
-    {
-        // this moves the file back on top
-        getFile(file.getFileSystem(), file.getName());
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/NullFilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/NullFilesCache.java
deleted file mode 100644
index 8f3146e..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/NullFilesCache.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystem;
-
-/**
- * A {@link org.apache.commons.vfs2.FilesCache} implementation.
- * <p>
- * This implementation never ever caches a single file.
- * <p>
- * <b>Notice</b>: if you use resolveFile(uri) multiple times with the same path, the system will always
- * create a new instance. Changes on one instance of this file are not seen by the others.
- */
-public class NullFilesCache extends AbstractFilesCache
-{
-    @Override
-    public void putFile(final FileObject file)
-    {
-    }
-
-    @Override
-    public boolean putFileIfAbsent(final FileObject file)
-    {
-        return false;
-    }
-
-    @Override
-    public FileObject getFile(final FileSystem filesystem, final FileName name)
-    {
-        return null;
-    }
-
-    @Override
-    public void clear(final FileSystem filesystem)
-    {
-    }
-
-    @Override
-    public void removeFile(final FileSystem filesystem, final FileName name)
-    {
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/OnCallRefreshFileObject.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/OnCallRefreshFileObject.java
deleted file mode 100644
index c7bed07..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/OnCallRefreshFileObject.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import java.util.List;
-
-import org.apache.commons.vfs2.FileContent;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSelector;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.NameScope;
-import org.apache.commons.vfs2.impl.DecoratedFileObject;
-
-/**
- * This decorator refreshes the fileObject data on every call.
- */
-public class OnCallRefreshFileObject extends DecoratedFileObject
-{
-    public OnCallRefreshFileObject(final FileObject fileObject)
-    {
-        super(fileObject);
-    }
-
-    @Override
-    public void close() throws FileSystemException
-    {
-        refresh();
-        super.close();
-    }
-
-    @Override
-    public void copyFrom(final FileObject srcFile, final FileSelector selector) throws FileSystemException
-    {
-        refresh();
-        super.copyFrom(srcFile, selector);
-    }
-
-    @Override
-    public void createFile() throws FileSystemException
-    {
-        refresh();
-        super.createFile();
-    }
-
-    @Override
-    public void createFolder() throws FileSystemException
-    {
-        refresh();
-        super.createFolder();
-    }
-
-    @Override
-    public boolean delete() throws FileSystemException
-    {
-        refresh();
-        return super.delete();
-    }
-
-    @Override
-    public int delete(final FileSelector selector) throws FileSystemException
-    {
-        refresh();
-        return super.delete(selector);
-    }
-
-    @Override
-    public boolean exists() throws FileSystemException
-    {
-        refresh();
-        return super.exists();
-    }
-
-    @Override
-    public void findFiles(final FileSelector selector, final boolean depthwise, final List<FileObject> selected)
-        throws FileSystemException
-    {
-        refresh();
-        super.findFiles(selector, depthwise, selected);
-    }
-
-    @Override
-    public FileObject[] findFiles(final FileSelector selector) throws FileSystemException
-    {
-        refresh();
-        return super.findFiles(selector);
-    }
-
-    @Override
-    public FileObject getChild(final String name) throws FileSystemException
-    {
-        refresh();
-        return super.getChild(name);
-    }
-
-    @Override
-    public FileObject[] getChildren() throws FileSystemException
-    {
-        refresh();
-        return super.getChildren();
-    }
-
-    @Override
-    public FileContent getContent() throws FileSystemException
-    {
-        refresh();
-        return super.getContent();
-    }
-
-    @Override
-    public FileType getType() throws FileSystemException
-    {
-        refresh();
-        return super.getType();
-    }
-
-    @Override
-    public boolean isExecutable() throws FileSystemException
-    {
-        refresh();
-        return super.isExecutable();
-    }
-
-    @Override
-    public boolean isHidden() throws FileSystemException
-    {
-        refresh();
-        return super.isHidden();
-    }
-
-    @Override
-    public boolean isReadable() throws FileSystemException
-    {
-        refresh();
-        return super.isReadable();
-    }
-
-    @Override
-    public boolean isWriteable() throws FileSystemException
-    {
-        refresh();
-        return super.isWriteable();
-    }
-
-    @Override
-    public boolean setExecutable(final boolean executable, final boolean ownerOnly) throws FileSystemException
-    {
-        refresh();
-        return super.setExecutable(executable, ownerOnly);
-    }
-
-    @Override
-    public boolean setReadable(final boolean readable, final boolean ownerOnly) throws FileSystemException
-    {
-        refresh();
-        return super.setReadable(readable, ownerOnly);
-    }
-
-    @Override
-    public boolean setWritable(final boolean writable, final boolean ownerOnly) throws FileSystemException
-    {
-        refresh();
-        return super.setWritable(writable, ownerOnly);
-    }
-
-    @Override
-    public void moveTo(final FileObject destFile) throws FileSystemException
-    {
-        refresh();
-        super.moveTo(destFile);
-    }
-
-    @Override
-    public FileObject resolveFile(final String name, final NameScope scope) throws FileSystemException
-    {
-        refresh();
-        return super.resolveFile(name, scope);
-    }
-
-    @Override
-    public FileObject resolveFile(final String path) throws FileSystemException
-    {
-        refresh();
-        return super.resolveFile(path);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java
deleted file mode 100644
index 100abaf..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java
+++ /dev/null
@@ -1,387 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.SoftReference;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.atomic.AtomicReference;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystem;
-import org.apache.commons.vfs2.VfsLog;
-import org.apache.commons.vfs2.util.Messages;
-
-/**
- * This implementation caches every file as long as it is strongly reachable by
- * the java vm. As soon as the vm needs memory - every softly reachable file
- * will be discarded.
- *
- * @see SoftReference
- */
-public class SoftRefFilesCache extends AbstractFilesCache
-{
-    private static final int TIMEOUT = 1000;
-
-    private static final Log log = LogFactory.getLog(SoftRefFilesCache.class);
-
-    private final ConcurrentMap<FileSystem, Map<FileName, Reference<FileObject>>> fileSystemCache =
-          new ConcurrentHashMap<FileSystem, Map<FileName, Reference<FileObject>>>();
-    private final Map<Reference<FileObject>, FileSystemAndNameKey> refReverseMap =
-          new HashMap<Reference<FileObject>, FileSystemAndNameKey>(100);
-    private final ReferenceQueue<FileObject> refQueue = new ReferenceQueue<FileObject>();
-
-    private volatile SoftRefReleaseThread softRefReleaseThread = null; // @GuardedBy("lock")
-
-    private final Lock lock = new ReentrantLock();
-
-
-    /**
-     * This thread will listen on the ReferenceQueue and remove the entry in the
-     * filescache as soon as the vm removes the reference
-     */
-    private final class SoftRefReleaseThread extends Thread
-    {
-        private volatile boolean requestEnd; // used for inter-thread communication
-
-        private SoftRefReleaseThread()
-        {
-            setName(SoftRefReleaseThread.class.getName());
-            setDaemon(true);
-        }
-
-        @Override
-        public void run()
-        {
-            loop: while (!requestEnd && !Thread.currentThread().isInterrupted())
-            {
-                try
-                {
-                    final Reference<?> ref = refQueue.remove(TIMEOUT);
-                    if (ref == null)
-                    {
-                        continue;
-                    }
-
-                    lock.lock();
-                    try
-                    {
-                        final FileSystemAndNameKey key = refReverseMap.get(ref);
-
-                        if (key != null && removeFile(key))
-                        {
-                            close(key.getFileSystem());
-                        }
-                    }
-                    finally
-                    {
-                        lock.unlock();
-                    }
-                }
-                catch (final InterruptedException e)
-                {
-                    if (!requestEnd)
-                    {
-                        VfsLog.warn(getLogger(), log,
-                                    Messages.getString("vfs.impl/SoftRefReleaseThread-interrupt.info"));
-                    }
-                    break loop;
-                }
-            }
-        }
-    }
-
-    public SoftRefFilesCache()
-    {
-    }
-
-    private void startThread()
-    {
-        // Double Checked Locking is allowed when volatile
-        if (softRefReleaseThread != null)
-        {
-            return;
-        }
-
-        synchronized (lock)
-        {
-            if (softRefReleaseThread == null)
-            {
-                softRefReleaseThread = new SoftRefReleaseThread();
-                softRefReleaseThread.start();
-            }
-        }
-    }
-
-    private void endThread()
-    {
-        synchronized (lock)
-        {
-            final SoftRefReleaseThread thread = softRefReleaseThread;
-            softRefReleaseThread = null;
-            if (thread != null)
-            {
-                thread.requestEnd = true;
-                thread.interrupt();
-            }
-        }
-    }
-
-    @Override
-    public void putFile(final FileObject fileObject)
-    {
-        if (log.isDebugEnabled())
-        {
-            log.debug("putFile: " + this.getSafeName(fileObject));
-        }
-
-        final Map<FileName, Reference<FileObject>> files = getOrCreateFilesystemCache(fileObject.getFileSystem());
-
-        final Reference<FileObject> ref = createReference(fileObject, refQueue);
-        final FileSystemAndNameKey key = new FileSystemAndNameKey(fileObject.getFileSystem(), fileObject.getName());
-
-        lock.lock();
-        try
-        {
-            final Reference<FileObject> old = files.put(fileObject.getName(), ref);
-            if (old != null)
-            {
-                refReverseMap.remove(old);
-            }
-            refReverseMap.put(ref, key);
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    private String getSafeName(final FileName fileName)
-    {
-        return fileName.getFriendlyURI();
-    }
-
-    private String getSafeName(final FileObject fileObject)
-    {
-        return this.getSafeName(fileObject.getName());
-    }
-
-    @Override
-    public boolean putFileIfAbsent(final FileObject fileObject)
-    {
-        if (log.isDebugEnabled())
-        {
-            log.debug("putFile: " + this.getSafeName(fileObject));
-        }
-
-        final Map<FileName, Reference<FileObject>> files = getOrCreateFilesystemCache(fileObject.getFileSystem());
-
-        final Reference<FileObject> ref = createReference(fileObject, refQueue);
-        final FileSystemAndNameKey key = new FileSystemAndNameKey(fileObject.getFileSystem(), fileObject.getName());
-
-        lock.lock();
-        try
-        {
-            if (files.containsKey(fileObject.getName()) && files.get(fileObject.getName()).get() != null)
-            {
-                return false;
-            }
-            final Reference<FileObject> old = files.put(fileObject.getName(), ref);
-            if (old != null)
-            {
-                refReverseMap.remove(old);
-            }
-            refReverseMap.put(ref, key);
-            return true;
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    protected Reference<FileObject> createReference(final FileObject file, final ReferenceQueue<FileObject> refqueue)
-    {
-        return new SoftReference<FileObject>(file, refqueue);
-    }
-
-    @Override
-    public FileObject getFile(final FileSystem fileSystem, final FileName fileName)
-    {
-        final Map<FileName, Reference<FileObject>> files = getOrCreateFilesystemCache(fileSystem);
-
-        lock.lock();
-        try
-        {
-            final Reference<FileObject> ref = files.get(fileName);
-            if (ref == null)
-            {
-                return null;
-            }
-
-            final FileObject fo = ref.get();
-            if (fo == null)
-            {
-                removeFile(fileSystem, fileName);
-            }
-            return fo;
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    @Override
-    public void clear(final FileSystem fileSystem)
-    {
-        final Map<FileName, Reference<FileObject>> files = getOrCreateFilesystemCache(fileSystem);
-
-        lock.lock();
-        try
-        {
-            final Iterator<FileSystemAndNameKey> iterKeys = refReverseMap.values().iterator();
-            while (iterKeys.hasNext())
-            {
-                final FileSystemAndNameKey key = iterKeys.next();
-                if (key.getFileSystem() == fileSystem)
-                {
-                    iterKeys.remove();
-                    files.remove(key.getFileName());
-                }
-            }
-
-            if (files.size() < 1)
-            {
-                close(fileSystem);
-            }
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    /**
-     * Called while the lock is held
-     * @param fileSystem The file system to close.
-     */
-    private void close(final FileSystem fileSystem)
-    {
-        if (log.isDebugEnabled())
-        {
-            log.debug("close fs: " + fileSystem.getRootName());
-        }
-
-        fileSystemCache.remove(fileSystem);
-        if (fileSystemCache.size() < 1)
-        {
-            endThread();
-        }
-        /* This is not thread-safe as another thread might be opening the file system
-        ((DefaultFileSystemManager) getContext().getFileSystemManager())
-                ._closeFileSystem(filesystem);
-         */
-    }
-
-    @Override
-    public void close()
-    {
-        super.close();
-
-        endThread();
-
-        lock.lock();
-        try
-        {
-            fileSystemCache.clear();
-
-            refReverseMap.clear();
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    @Override
-    public void removeFile(final FileSystem fileSystem, final FileName fileName)
-    {
-        if (removeFile(new FileSystemAndNameKey(fileSystem, fileName)))
-        {
-            close(fileSystem);
-        }
-    }
-
-    private boolean removeFile(final FileSystemAndNameKey key)
-    {
-        if (log.isDebugEnabled())
-        {
-            log.debug("removeFile: " + this.getSafeName(key.getFileName()));
-        }
-
-        final Map<?, ?> files = getOrCreateFilesystemCache(key.getFileSystem());
-
-        lock.lock();
-        try
-        {
-            final Object ref = files.remove(key.getFileName());
-            if (ref != null)
-            {
-                refReverseMap.remove(ref);
-            }
-
-            return files.size() < 1;
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    protected Map<FileName, Reference<FileObject>> getOrCreateFilesystemCache(final FileSystem fileSystem)
-    {
-        if (fileSystemCache.size() < 1)
-        {
-            startThread();
-        }
-
-        Map<FileName, Reference<FileObject>> files;
-
-        do
-        {
-            files = fileSystemCache.get(fileSystem);
-            if (files != null)
-            {
-                break;
-            }
-            files = new HashMap<FileName, Reference<FileObject>>();
-        } while (fileSystemCache.putIfAbsent(fileSystem, files) == null);
-
-        return files;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/WeakRefFilesCache.java b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/WeakRefFilesCache.java
deleted file mode 100644
index a0d40f2..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/WeakRefFilesCache.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * 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.vfs2.cache;
-
-import java.lang.ref.Reference;
-import java.lang.ref.ReferenceQueue;
-import java.lang.ref.WeakReference;
-
-import org.apache.commons.vfs2.FileObject;
-
-/**
- * This implementation caches every file as long as it is strongly reachable by
- * the java vm. As soon as the object is no longer reachable it will be discarded.
- * In contrast to the SoftRefFilesCache this implementation might free resources faster
- * as it don't wait until a memory limitation.
- *
- * @see java.lang.ref.WeakReference
- */
-public class WeakRefFilesCache extends SoftRefFilesCache
-{
-    @Override
-    protected Reference<FileObject> createReference(final FileObject file, final ReferenceQueue<FileObject> refqueue)
-    {
-        return new WeakReference<FileObject>(file, refqueue);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/package.html b/trunk/core/src/main/java/org/apache/commons/vfs2/cache/package.html
deleted file mode 100644
index 55f796a..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/cache/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-    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.
--->
-<body>
-<p>VFS File caching</p>
-</body>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/events/AbstractFileChangeEvent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/events/AbstractFileChangeEvent.java
deleted file mode 100644
index ce4a9ae..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/events/AbstractFileChangeEvent.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * 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.vfs2.events;
-
-import org.apache.commons.vfs2.FileChangeEvent;
-import org.apache.commons.vfs2.FileListener;
-import org.apache.commons.vfs2.FileObject;
-
-/**
- * A change event that knows how to notify a listener.
- */
-public abstract class AbstractFileChangeEvent extends FileChangeEvent
-{
-    public AbstractFileChangeEvent(final FileObject file)
-    {
-        super(file);
-    }
-
-    public abstract void notify(final FileListener listener) throws Exception;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/events/ChangedEvent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/events/ChangedEvent.java
deleted file mode 100644
index 5be75f0..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/events/ChangedEvent.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.vfs2.events;
-
-import org.apache.commons.vfs2.FileListener;
-import org.apache.commons.vfs2.FileObject;
-
-/**
- * File changed event.
- */
-public class ChangedEvent extends AbstractFileChangeEvent
-{
-    public ChangedEvent(final FileObject file)
-    {
-        super(file);
-    }
-
-    @Override
-    public void notify(final FileListener listener) throws Exception
-    {
-        listener.fileChanged(this);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/events/CreateEvent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/events/CreateEvent.java
deleted file mode 100644
index 26f35ec..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/events/CreateEvent.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.vfs2.events;
-
-import org.apache.commons.vfs2.FileListener;
-import org.apache.commons.vfs2.FileObject;
-
-/**
- * File creation event.
- */
-public class CreateEvent extends AbstractFileChangeEvent
-{
-    public CreateEvent(final FileObject file)
-    {
-        super(file);
-    }
-
-    @Override
-    public void notify(final FileListener listener) throws Exception
-    {
-        listener.fileCreated(this);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/events/DeleteEvent.java b/trunk/core/src/main/java/org/apache/commons/vfs2/events/DeleteEvent.java
deleted file mode 100644
index de4e775..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/events/DeleteEvent.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * 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.vfs2.events;
-
-import org.apache.commons.vfs2.FileListener;
-import org.apache.commons.vfs2.FileObject;
-
-/**
- * File deletion event.
- */
-public class DeleteEvent extends AbstractFileChangeEvent
-{
-    public DeleteEvent(final FileObject file)
-    {
-        super(file);
-    }
-
-    @Override
-    public void notify(final FileListener listener) throws Exception
-    {
-        listener.fileDeleted(this);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/events/package.html b/trunk/core/src/main/java/org/apache/commons/vfs2/events/package.html
deleted file mode 100644
index acbdf79..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/events/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-    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.
--->
-<body>
-<p>VFS Events</p>
-</body>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DecoratedFileObject.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DecoratedFileObject.java
deleted file mode 100644
index 07ef301..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DecoratedFileObject.java
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.net.URL;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.commons.vfs2.FileContent;
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSelector;
-import org.apache.commons.vfs2.FileSystem;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.NameScope;
-import org.apache.commons.vfs2.operations.FileOperations;
-
-/**
- * Base class to build a fileObject decoration.
- */
-public class DecoratedFileObject implements FileObject
-{
-    private final FileObject decoratedFileObject;
-
-    public DecoratedFileObject(final FileObject decoratedFileObject)
-    {
-        super();
-        this.decoratedFileObject = decoratedFileObject;
-    }
-
-    @Override
-    public boolean canRenameTo(final FileObject newfile)
-    {
-        return decoratedFileObject.canRenameTo(newfile);
-    }
-
-    @Override
-    public void close() throws FileSystemException
-    {
-        decoratedFileObject.close();
-    }
-
-    @Override
-    public int compareTo(final FileObject fo)
-    {
-        return decoratedFileObject.compareTo(fo);
-    }
-
-    @Override
-    public void copyFrom(final FileObject srcFile, final FileSelector selector) throws FileSystemException
-    {
-        decoratedFileObject.copyFrom(srcFile, selector);
-    }
-
-    @Override
-    public void createFile() throws FileSystemException
-    {
-        decoratedFileObject.createFile();
-    }
-
-    @Override
-    public void createFolder() throws FileSystemException
-    {
-        decoratedFileObject.createFolder();
-    }
-
-    @Override
-    public boolean delete() throws FileSystemException
-    {
-        return decoratedFileObject.delete();
-    }
-
-    @Override
-    public int delete(final FileSelector selector) throws FileSystemException
-    {
-        return decoratedFileObject.delete(selector);
-    }
-
-    @Override
-    public int deleteAll() throws FileSystemException
-    {
-        return decoratedFileObject.deleteAll();
-    }
-
-    @Override
-    public boolean exists() throws FileSystemException
-    {
-        return decoratedFileObject.exists();
-    }
-
-    @Override
-    public FileObject[] findFiles(final FileSelector selector) throws FileSystemException
-    {
-        return decoratedFileObject.findFiles(selector);
-    }
-
-    @Override
-    public void findFiles(final FileSelector selector, final boolean depthwise, final List<FileObject> selected)
-        throws FileSystemException
-    {
-        decoratedFileObject.findFiles(selector, depthwise, selected);
-    }
-
-    @Override
-    public FileObject getChild(final String name) throws FileSystemException
-    {
-        return decoratedFileObject.getChild(name);
-    }
-
-    @Override
-    public FileObject[] getChildren() throws FileSystemException
-    {
-        return decoratedFileObject.getChildren();
-    }
-
-    @Override
-    public FileContent getContent() throws FileSystemException
-    {
-        return decoratedFileObject.getContent();
-    }
-
-    public FileObject getDecoratedFileObject()
-    {
-        return decoratedFileObject;
-    }
-
-    @Override
-    public FileOperations getFileOperations() throws FileSystemException
-    {
-        return decoratedFileObject.getFileOperations();
-    }
-
-    @Override
-    public FileSystem getFileSystem()
-    {
-        return decoratedFileObject.getFileSystem();
-    }
-
-    @Override
-    public String getPublicURIString()
-    {
-        return decoratedFileObject.getPublicURIString();
-    }
-
-    @Override
-    public FileName getName()
-    {
-        return decoratedFileObject.getName();
-    }
-
-    @Override
-    public FileObject getParent() throws FileSystemException
-    {
-        return decoratedFileObject.getParent();
-    }
-
-    @Override
-    public FileType getType() throws FileSystemException
-    {
-        return decoratedFileObject.getType();
-    }
-
-    @Override
-    public URL getURL() throws FileSystemException
-    {
-        return decoratedFileObject.getURL();
-    }
-
-    @Override
-    public boolean isAttached()
-    {
-        return decoratedFileObject.isAttached();
-    }
-
-    @Override
-    public boolean isContentOpen()
-    {
-        return decoratedFileObject.isContentOpen();
-    }
-
-    @Override
-    public boolean isExecutable() throws FileSystemException
-    {
-        return decoratedFileObject.isExecutable();
-    }
-
-    @Override
-    public boolean isFile() throws FileSystemException
-    {
-        return decoratedFileObject.isFile();
-    }
-
-    @Override
-    public boolean isFolder() throws FileSystemException
-    {
-        return decoratedFileObject.isFolder();
-    }
-
-    @Override
-    public boolean isHidden() throws FileSystemException
-    {
-        return decoratedFileObject.isHidden();
-    }
-
-    @Override
-    public boolean isReadable() throws FileSystemException
-    {
-        return decoratedFileObject.isReadable();
-    }
-
-    @Override
-    public boolean isWriteable() throws FileSystemException
-    {
-        return decoratedFileObject.isWriteable();
-    }
-
-    @Override
-    public Iterator<FileObject> iterator()
-    {
-        return decoratedFileObject.iterator();
-    }
-
-    @Override
-    public void moveTo(final FileObject destFile) throws FileSystemException
-    {
-        decoratedFileObject.moveTo(destFile);
-    }
-
-    @Override
-    public void refresh() throws FileSystemException
-    {
-        decoratedFileObject.refresh();
-    }
-
-    @Override
-    public FileObject resolveFile(final String path) throws FileSystemException
-    {
-        return decoratedFileObject.resolveFile(path);
-    }
-
-    @Override
-    public FileObject resolveFile(final String name, final NameScope scope) throws FileSystemException
-    {
-        return decoratedFileObject.resolveFile(name, scope);
-    }
-
-    @Override
-    public boolean setExecutable(final boolean executable, final boolean ownerOnly) throws FileSystemException
-    {
-        return decoratedFileObject.setExecutable(executable, ownerOnly);
-    }
-
-    @Override
-    public boolean setReadable(final boolean readable, final boolean ownerOnly) throws FileSystemException
-    {
-        return decoratedFileObject.setReadable(readable, ownerOnly);
-    }
-
-    @Override
-    public boolean setWritable(final boolean writable, final boolean ownerOnly) throws FileSystemException
-    {
-        return decoratedFileObject.setWritable(writable, ownerOnly);
-    }
-
-    @Override
-    public String toString()
-    {
-        return decoratedFileObject.toString();
-    }
-
-
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileContentInfo.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileContentInfo.java
deleted file mode 100644
index 7b5aded..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileContentInfo.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import org.apache.commons.vfs2.FileContentInfo;
-
-/**
- * The default file content information.
- */
-public class DefaultFileContentInfo implements FileContentInfo
-{
-    private final String contentType;
-    private final String contentEncoding;
-
-    public DefaultFileContentInfo(final String contentType, final String contentEncoding)
-    {
-        this.contentType = contentType;
-        this.contentEncoding = contentEncoding;
-    }
-
-    @Override
-    public String getContentType()
-    {
-        return contentType;
-    }
-
-    @Override
-    public String getContentEncoding()
-    {
-        return contentEncoding;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java
deleted file mode 100644
index ad4d22b..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileMonitor.java
+++ /dev/null
@@ -1,677 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Stack;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.vfs2.FileListener;
-import org.apache.commons.vfs2.FileMonitor;
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.provider.AbstractFileSystem;
-
-/**
- * A polling {@link FileMonitor} implementation.
- * <p>
- * The DefaultFileMonitor is a Thread based polling file system monitor with a 1
- * second delay.
- *
- * <h2>Design:</h2>
- *
- * There is a Map of monitors known as FileMonitorAgents. With the thread running,
- * each FileMonitorAgent object is asked to "check" on the file it is
- * responsible for. To do this check, the cache is cleared.
- * <ul>
- * <li>If the file existed before the refresh and it no longer exists, a delete
- * event is fired.</li>
- * <li>If the file existed before the refresh and it still exists, check the
- * last modified timestamp to see if that has changed.</li>
- * <li>If it has, fire a change event.</li>
- * </ul>
- * With each file delete, the FileMonitorAgent of the parent is asked to
- * re-build its
- * list of children, so that they can be accurately checked when there are new
- * children.
- * <p>
- * New files are detected during each "check" as each file does a check for new
- * children.
- * If new children are found, create events are fired recursively if recursive
- * descent is enabled.
- * <p>
- * For performance reasons, added a delay that increases as the number of files
- * monitored
- * increases. The default is a delay of 1 second for every 1000 files processed.
- *
- * <h2>Example usage:</h2><pre>
- * FileSystemManager fsManager = VFS.getManager();
- * FileObject listendir = fsManager.resolveFile("/home/username/monitored/");
- *
- * DefaultFileMonitor fm = new DefaultFileMonitor(new CustomFileListener());
- * fm.setRecursive(true);
- * fm.addFile(listendir);
- * fm.start();</pre>
- * <i>(where CustomFileListener is a class that implements the FileListener
- * interface.)</i>
- */
-public class DefaultFileMonitor implements Runnable, FileMonitor
-{
-    private static final Log LOG = LogFactory.getLog(DefaultFileMonitor.class);
-
-    private static final long DEFAULT_DELAY = 1000;
-
-    private static final int DEFAULT_MAX_FILES = 1000;
-
-    /**
-     * Map from FileName to FileObject being monitored.
-     */
-    private final Map<FileName, FileMonitorAgent> monitorMap = new HashMap<FileName, FileMonitorAgent>();
-
-    /**
-     * The low priority thread used for checking the files being monitored.
-     */
-    private Thread monitorThread;
-
-    /**
-     * File objects to be removed from the monitor map.
-     */
-    private final Stack<FileObject> deleteStack = new Stack<FileObject>();
-
-    /**
-     * File objects to be added to the monitor map.
-     */
-    private final Stack<FileObject> addStack = new Stack<FileObject>();
-
-    /**
-     * A flag used to determine if the monitor thread should be running.
-     */
-    private volatile boolean shouldRun = true; // used for inter-thread communication
-
-    /**
-     * A flag used to determine if adding files to be monitored should be recursive.
-     */
-    private boolean recursive;
-
-    /**
-     * Set the delay between checks
-     */
-    private long delay = DEFAULT_DELAY;
-
-    /**
-     * Set the number of files to check until a delay will be inserted
-     */
-    private int checksPerRun = DEFAULT_MAX_FILES;
-
-    /**
-     * A listener object that if set, is notified on file creation and deletion.
-     */
-    private final FileListener listener;
-
-    public DefaultFileMonitor(final FileListener listener)
-    {
-        this.listener = listener;
-    }
-
-    /**
-     * Access method to get the recursive setting when adding files for monitoring.
-     * @return true if monitoring is enabled for children.
-     */
-    public boolean isRecursive()
-    {
-        return this.recursive;
-    }
-
-    /**
-     * Access method to set the recursive setting when adding files for monitoring.
-     * @param newRecursive true if monitoring should be enabled for children.
-     */
-    public void setRecursive(final boolean newRecursive)
-    {
-        this.recursive = newRecursive;
-    }
-
-    /**
-     * Access method to get the current FileListener object notified when there
-     * are changes with the files added.
-     * @return The FileListener.
-     */
-    FileListener getFileListener()
-    {
-        return this.listener;
-    }
-
-    /**
-     * Adds a file to be monitored.
-     * @param file The FileObject to monitor.
-     */
-    @Override
-    public void addFile(final FileObject file)
-    {
-        doAddFile(file);
-        try
-        {
-            // add all direct children too
-            if (file.getType().hasChildren())
-            {
-                // Traverse the children
-                final FileObject[] children = file.getChildren();
-                for (final FileObject element : children)
-                {
-                    doAddFile(element);
-                }
-            }
-        }
-        catch (final FileSystemException fse)
-        {
-            LOG.error(fse.getLocalizedMessage(), fse);
-        }
-    }
-
-    /**
-     * Adds a file to be monitored.
-     * @param file The FileObject to add.
-     */
-    private void doAddFile(final FileObject file)
-    {
-        synchronized (this.monitorMap)
-        {
-            if (this.monitorMap.get(file.getName()) == null)
-            {
-                this.monitorMap.put(file.getName(), new FileMonitorAgent(this,
-                    file));
-
-                try
-                {
-                    if (this.listener != null)
-                    {
-                        file.getFileSystem().addListener(file, this.listener);
-                    }
-
-                    if (file.getType().hasChildren() && this.recursive)
-                    {
-                        // Traverse the children
-                        final FileObject[] children = file.getChildren();
-                        for (final FileObject element : children)
-                        {
-                            this.addFile(element); // Add depth first
-                        }
-                    }
-
-                }
-                catch (final FileSystemException fse)
-                {
-                    LOG.error(fse.getLocalizedMessage(), fse);
-                }
-
-            }
-        }
-    }
-
-    /**
-     * Removes a file from being monitored.
-     * @param file The FileObject to remove from monitoring.
-     */
-    @Override
-    public void removeFile(final FileObject file)
-    {
-        synchronized (this.monitorMap)
-        {
-            final FileName fn = file.getName();
-            if (this.monitorMap.get(fn) != null)
-            {
-                FileObject parent;
-                try
-                {
-                    parent = file.getParent();
-                }
-                catch (final FileSystemException fse)
-                {
-                    parent = null;
-                }
-
-                this.monitorMap.remove(fn);
-
-                if (parent != null)
-                { // Not the root
-                    final FileMonitorAgent parentAgent =
-                        this.monitorMap.get(parent.getName());
-                    if (parentAgent != null)
-                    {
-                        parentAgent.resetChildrenList();
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Queues a file for removal from being monitored.
-     * @param file The FileObject to be removed from being monitored.
-     */
-    protected void queueRemoveFile(final FileObject file)
-    {
-        this.deleteStack.push(file);
-    }
-
-    /**
-     * Get the delay between runs.
-     * @return The delay period.
-     */
-    public long getDelay()
-    {
-        return delay;
-    }
-
-    /**
-     * Set the delay between runs.
-     * @param delay The delay period.
-     */
-    public void setDelay(final long delay)
-    {
-        if (delay > 0)
-        {
-            this.delay = delay;
-        }
-        else
-        {
-            this.delay = DEFAULT_DELAY;
-        }
-    }
-
-    /**
-     * get the number of files to check per run.
-     * @return The number of files to check per iteration.
-     */
-    public int getChecksPerRun()
-    {
-        return checksPerRun;
-    }
-
-    /**
-     * set the number of files to check per run.
-     * a additional delay will be added if there are more files to check
-     *
-     * @param checksPerRun a value less than 1 will disable this feature
-     */
-    public void setChecksPerRun(final int checksPerRun)
-    {
-        this.checksPerRun = checksPerRun;
-    }
-
-    /**
-     * Queues a file for addition to be monitored.
-     * @param file The FileObject to add.
-     */
-    protected void queueAddFile(final FileObject file)
-    {
-        this.addStack.push(file);
-    }
-
-    /**
-     * Starts monitoring the files that have been added.
-     */
-    public void start()
-    {
-        if (this.monitorThread == null)
-        {
-            this.monitorThread = new Thread(this);
-            this.monitorThread.setDaemon(true);
-            this.monitorThread.setPriority(Thread.MIN_PRIORITY);
-        }
-        this.monitorThread.start();
-    }
-
-    /**
-     * Stops monitoring the files that have been added.
-     */
-    public void stop()
-    {
-        this.shouldRun = false;
-    }
-
-    /**
-     * Asks the agent for each file being monitored to check its file for changes.
-     */
-    @Override
-    public void run()
-    {
-        mainloop:
-        while (!monitorThread.isInterrupted() && this.shouldRun)
-        {
-            // For each entry in the map
-            Object[] fileNames;
-            synchronized (this.monitorMap)
-            {
-                fileNames = this.monitorMap.keySet().toArray();
-            }
-            for (int iterFileNames = 0; iterFileNames < fileNames.length;
-                 iterFileNames++)
-            {
-                final FileName fileName = (FileName) fileNames[iterFileNames];
-                FileMonitorAgent agent;
-                synchronized (this.monitorMap)
-                {
-                    agent = this.monitorMap.get(fileName);
-                }
-                if (agent != null)
-                {
-                    agent.check();
-                }
-
-                if (getChecksPerRun() > 0 && (iterFileNames + 1) % getChecksPerRun() == 0)
-                {
-                    try
-                    {
-                        Thread.sleep(getDelay());
-                    }
-                    catch (final InterruptedException e)
-                    {
-                        // Woke up.
-                    }
-                }
-
-                if (monitorThread.isInterrupted() || !this.shouldRun)
-                {
-                    continue mainloop;
-                }
-            }
-
-            while (!this.addStack.empty())
-            {
-                this.addFile(this.addStack.pop());
-            }
-
-            while (!this.deleteStack.empty())
-            {
-                this.removeFile(this.deleteStack.pop());
-            }
-
-            try
-            {
-                Thread.sleep(getDelay());
-            }
-            catch (final InterruptedException e)
-            {
-                continue;
-            }
-        }
-
-        this.shouldRun = true;
-    }
-
-    /**
-     * File monitor agent.
-     */
-    private static final class FileMonitorAgent
-    {
-        private final FileObject file;
-        private final DefaultFileMonitor fm;
-
-        private boolean exists;
-        private long timestamp;
-        private Map<FileName, Object> children;
-
-        private FileMonitorAgent(final DefaultFileMonitor fm, final FileObject file)
-        {
-            this.fm = fm;
-            this.file = file;
-
-            this.refresh();
-            this.resetChildrenList();
-
-            try
-            {
-                this.exists = this.file.exists();
-            }
-            catch (final FileSystemException fse)
-            {
-                this.exists = false;
-                this.timestamp = -1;
-            }
-
-            if (this.exists)
-            {
-                try
-                {
-                    this.timestamp = this.file.getContent().getLastModifiedTime();
-                }
-                catch (final FileSystemException fse)
-                {
-                    this.timestamp = -1;
-                }
-            }
-        }
-
-        private void resetChildrenList()
-        {
-            try
-            {
-                if (this.file.getType().hasChildren())
-                {
-                    this.children = new HashMap<FileName, Object>();
-                    final FileObject[] childrenList = this.file.getChildren();
-                    for (final FileObject element : childrenList)
-                    {
-                        this.children.put(element.getName(), new
-                            Object()); // null?
-                    }
-                }
-            }
-            catch (final FileSystemException fse)
-            {
-                this.children = null;
-            }
-        }
-
-
-        /**
-         * Clear the cache and re-request the file object
-         */
-        private void refresh()
-        {
-            try
-            {
-                this.file.refresh();
-            }
-            catch (final FileSystemException fse)
-            {
-                LOG.error(fse.getLocalizedMessage(), fse);
-            }
-        }
-
-
-        /**
-         * Recursively fires create events for all children if recursive descent is
-         * enabled. Otherwise the create event is only fired for the initial
-         * FileObject.
-         * @param child The child to add.
-         */
-        private void fireAllCreate(final FileObject child)
-        {
-            // Add listener so that it can be triggered
-            if (this.fm.getFileListener() != null)
-            {
-                child.getFileSystem().addListener(child, this.fm.getFileListener());
-            }
-
-            ((AbstractFileSystem) child.getFileSystem()).fireFileCreated(child);
-
-            // Remove it because a listener is added in the queueAddFile
-            if (this.fm.getFileListener() != null)
-            {
-                child.getFileSystem().removeListener(child,
-                    this.fm.getFileListener());
-            }
-
-            this.fm.queueAddFile(child); // Add
-
-            try
-            {
-                if (this.fm.isRecursive() && child.getType().hasChildren())
-                {
-                    final FileObject[] newChildren = child.getChildren();
-                    for (final FileObject element : newChildren)
-                    {
-                        fireAllCreate(element);
-                    }
-                }
-            }
-            catch (final FileSystemException fse)
-            {
-                LOG.error(fse.getLocalizedMessage(), fse);
-            }
-        }
-
-        /**
-         * Only checks for new children. If children are removed, they'll
-         * eventually be checked.
-         */
-        private void checkForNewChildren()
-        {
-            try
-            {
-                if (this.file.getType().hasChildren())
-                {
-                    final FileObject[] newChildren = this.file.getChildren();
-                    if (this.children != null)
-                    {
-                        // See which new children are not listed in the current children map.
-                        final Map<FileName, Object> newChildrenMap = new HashMap<FileName, Object>();
-                        final Stack<FileObject> missingChildren = new Stack<FileObject>();
-
-                        for (int i = 0; i < newChildren.length; i++)
-                        {
-                            newChildrenMap.put(newChildren[i].getName(), new
-                                Object()); // null ?
-                            // If the child's not there
-                            if
-                                (!this.children.containsKey(newChildren[i].getName()))
-                            {
-                                missingChildren.push(newChildren[i]);
-                            }
-                        }
-
-                        this.children = newChildrenMap;
-
-                        // If there were missing children
-                        if (!missingChildren.empty())
-                        {
-
-                            while (!missingChildren.empty())
-                            {
-                                final FileObject child = missingChildren.pop();
-                                this.fireAllCreate(child);
-                            }
-                        }
-
-                    }
-                    else
-                    {
-                        // First set of children - Break out the cigars
-                        if (newChildren.length > 0)
-                        {
-                            this.children = new HashMap<FileName, Object>();
-                        }
-                        for (final FileObject element : newChildren)
-                        {
-                            this.children.put(element.getName(), new
-                                Object()); // null?
-                            this.fireAllCreate(element);
-                        }
-                    }
-                }
-            }
-            catch (final FileSystemException fse)
-            {
-                LOG.error(fse.getLocalizedMessage(), fse);
-            }
-        }
-
-        private void check()
-        {
-            this.refresh();
-
-            try
-            {
-                // If the file existed and now doesn't
-                if (this.exists && !this.file.exists())
-                {
-                    this.exists = this.file.exists();
-                    this.timestamp = -1;
-
-                    // Fire delete event
-
-                    ((AbstractFileSystem)
-                        this.file.getFileSystem()).fireFileDeleted(this.file);
-
-                    // Remove listener in case file is re-created. Don't want to fire twice.
-                    if (this.fm.getFileListener() != null)
-                    {
-                        this.file.getFileSystem().removeListener(this.file,
-                            this.fm.getFileListener());
-                    }
-
-                    // Remove from map
-                    this.fm.queueRemoveFile(this.file);
-                }
-                else if (this.exists && this.file.exists())
-                {
-
-                    // Check the timestamp to see if it has been modified
-                    if (this.timestamp != this.file.getContent().getLastModifiedTime())
-                    {
-                        this.timestamp = this.file.getContent().getLastModifiedTime();
-                        // Fire change event
-
-                        // Don't fire if it's a folder because new file children
-                        // and deleted files in a folder have their own event triggered.
-                        if (!this.file.getType().hasChildren())
-                        {
-                            ((AbstractFileSystem)
-                                this.file.getFileSystem()).fireFileChanged(this.file);
-                        }
-                    }
-
-                }
-                else if (!this.exists && this.file.exists())
-                {
-                    this.exists = this.file.exists();
-                    this.timestamp = this.file.getContent().getLastModifiedTime();
-                    // Don't fire if it's a folder because new file children
-                    // and deleted files in a folder have their own event triggered.
-                    if (!this.file.getType().hasChildren())
-                    {
-                        ((AbstractFileSystem)
-                                this.file.getFileSystem()).fireFileCreated(this.file);
-                    }
-                }
-
-                this.checkForNewChildren();
-
-            }
-            catch (final FileSystemException fse)
-            {
-                LOG.error(fse.getLocalizedMessage(), fse);
-            }
-        }
-
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileReplicator.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileReplicator.java
deleted file mode 100644
index 819981b..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileReplicator.java
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Random;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSelector;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.VfsLog;
-import org.apache.commons.vfs2.provider.AbstractVfsComponent;
-import org.apache.commons.vfs2.provider.FileReplicator;
-import org.apache.commons.vfs2.provider.TemporaryFileStore;
-import org.apache.commons.vfs2.provider.UriParser;
-import org.apache.commons.vfs2.util.Messages;
-
-/**
- * A simple file replicator and temporary file store.
- */
-public class DefaultFileReplicator
-    extends AbstractVfsComponent
-    implements FileReplicator, TemporaryFileStore
-{
-    private static final Log log = LogFactory.getLog(DefaultFileReplicator.class);
-    private static final int MASK = 0xffff;
-
-    private static final Random random = new Random();
-
-    private static final char[] TMP_RESERVED_CHARS = new char[]
-        {
-            '?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'
-        };
-
-    private final ArrayList<Object> copies = new ArrayList<Object>();
-    private long filecount;
-    private File tempDir;
-    private boolean tempDirMessageLogged;
-
-    public DefaultFileReplicator()
-    {
-    }
-
-    /**
-     * Constructor to set the location of the temporary directory.
-     *
-     * @param tempDir The temporary directory.
-     */
-    public DefaultFileReplicator(final File tempDir)
-    {
-        this.tempDir = tempDir;
-    }
-
-    protected void addFile(final Object file)
-    {
-        synchronized (copies)
-        {
-            copies.add(file);
-        }
-    }
-
-    /**
-     * Allocates a new temporary file.
-     *
-     * @param baseName the base file name.
-     * @return The created File.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public File allocateFile(final String baseName) throws FileSystemException
-    {
-        // Create a unique-ish file name
-        final String basename = createFilename(baseName);
-        synchronized (this)
-        {
-            filecount++;
-        }
-
-        return createAndAddFile(tempDir, basename);
-    }
-
-    /**
-     * Closes the replicator, deleting all temporary files.
-     */
-    @Override
-    public void close()
-    {
-        // Delete the temporary files
-        synchronized (copies)
-        {
-            while (copies.size() > 0)
-            {
-                final File file = (File) removeFile();
-                deleteFile(file);
-            }
-        }
-
-        // Clean up the temp directory, if it is empty
-        if (tempDir != null && tempDir.exists() && tempDir.list().length == 0)
-        {
-            tempDir.delete();
-            tempDir = null;
-        }
-    }
-
-    protected File createAndAddFile(final File parent, final String basename) throws FileSystemException
-    {
-        final File file = createFile(tempDir, basename);
-
-        // Keep track to delete later
-        addFile(file);
-
-        return file;
-    }
-
-    /**
-     * Create the temporary file.
-     *
-     * @param parent The file to use as the parent of the file being created.
-     * @param name The name of the file to create.
-     * @return The File that was created.
-     * @throws FileSystemException if an error occurs creating the file.
-     */
-    protected File createFile(final File parent, final String name) throws FileSystemException
-    {
-        return new File(parent, UriParser.decode(name));
-    }
-
-    /**
-     * Create the temporary file name.
-     *
-     * @param baseName The base to prepend to the file name being created.
-     * @return the name of the File.
-     */
-    protected String createFilename(final String baseName)
-    {
-        // BUG29007
-        // return baseName + "_" + getFilecount() + ".tmp";
-
-        // imario@apache.org: BUG34976 get rid of maybe reserved and dangerous characters
-        // e.g. to allow replication of http://hostname.org/fileservlet?file=abc.txt
-        final String safeBasename = UriParser.encode(baseName, TMP_RESERVED_CHARS).replace('%', '_');
-        return "tmp_" + getFilecount() + "_" + safeBasename;
-    }
-
-    /**
-     * Physically deletes the file from the filesystem.
-     *
-     * @param file The File to delete.
-     */
-    protected void deleteFile(final File file)
-    {
-        try
-        {
-            final FileObject fileObject = getContext().toFileObject(file);
-            fileObject.deleteAll();
-        }
-        catch (final FileSystemException e)
-        {
-            final String message = Messages.getString("vfs.impl/delete-temp.warn", file.getName());
-            VfsLog.warn(getLogger(), log, message, e);
-        }
-    }
-
-    protected long getFilecount()
-    {
-        return filecount;
-    }
-
-    /**
-     * Initializes this component.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public void init() throws FileSystemException
-    {
-        if (tempDir == null)
-        {
-            final String baseTmpDir = System.getProperty("java.io.tmpdir");
-
-            tempDir = new File(baseTmpDir, "vfs_cache").getAbsoluteFile();
-        }
-
-        filecount = random.nextInt() & MASK;
-
-        if (!tempDirMessageLogged)
-        {
-            final String message = Messages.getString("vfs.impl/temp-dir.info", tempDir);
-            VfsLog.info(getLogger(), log, message);
-
-            tempDirMessageLogged = true;
-        }
-    }
-
-    /**
-     * Removes a file from the copies list. Will be used for cleanup.
-     * <p>
-     * Notice: The system awaits that the returning object can be cast to a {@link java.io.File}.
-     *
-     * @return the File that was removed.
-     */
-    protected Object removeFile()
-    {
-        synchronized (copies)
-        {
-            return copies.remove(0);
-        }
-    }
-
-    /**
-     * Removes a instance from the list of copies.
-     *
-     * @param file The File to remove.
-     */
-    protected void removeFile(final Object file)
-    {
-        synchronized (copies)
-        {
-            copies.remove(file);
-        }
-    }
-
-    /**
-     * Creates a local copy of the file, and all its descendants.
-     *
-     * @param srcFile The file to copy.
-     * @param selector The FileSelector.
-     * @return the created File.
-     * @throws FileSystemException if an error occurs copying the file.
-     */
-    @Override
-    public File replicateFile(final FileObject srcFile,
-                              final FileSelector selector)
-        throws FileSystemException
-    {
-        final String basename = srcFile.getName().getBaseName();
-        final File file = allocateFile(basename);
-
-        // Copy from the source file
-        final FileObject destFile = getContext().toFileObject(file);
-        destFile.copyFrom(srcFile, selector);
-
-        return file;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileSystemConfigBuilder.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileSystemConfigBuilder.java
deleted file mode 100644
index 0ee7950..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileSystemConfigBuilder.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import org.apache.commons.vfs2.FileSystem;
-import org.apache.commons.vfs2.FileSystemConfigBuilder;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemOptions;
-import org.apache.commons.vfs2.UserAuthenticator;
-
-/**
- * Default options usable for all file systems.
- */
-public class DefaultFileSystemConfigBuilder extends FileSystemConfigBuilder
-{
-    /** The default FileSystemConfigBuilder */
-    private static final DefaultFileSystemConfigBuilder BUILDER = new DefaultFileSystemConfigBuilder();
-
-    /**
-     * Gets the singleton builder.
-     *
-     * @return the singleton builder.
-     */
-    public static DefaultFileSystemConfigBuilder getInstance()
-    {
-        return BUILDER;
-    }
-
-    /**
-     * Sets the user authenticator to get authentication informations.
-     * @param opts The FileSystemOptions.
-     * @param userAuthenticator The UserAuthenticator.
-     * @throws FileSystemException if an error occurs setting the UserAuthenticator.
-     */
-    public void setUserAuthenticator(final FileSystemOptions opts, final UserAuthenticator userAuthenticator)
-            throws FileSystemException
-    {
-        setParam(opts, "userAuthenticator", userAuthenticator);
-    }
-
-    /**
-     * @see #setUserAuthenticator
-     * @param opts The FileSystemOptions.
-     * @return The UserAuthenticator.
-     */
-    public UserAuthenticator getUserAuthenticator(final FileSystemOptions opts)
-    {
-        return (UserAuthenticator) getParam(opts, "userAuthenticator");
-    }
-
-    /**
-     * Dummy class that implements FileSystem.
-     */
-    abstract static class DefaultFileSystem implements FileSystem
-    {
-    }
-
-    @Override
-    protected Class<? extends FileSystem> getConfigClass()
-    {
-        return DefaultFileSystem.class;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileSystemManager.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileSystemManager.java
deleted file mode 100644
index 220a4ec..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultFileSystemManager.java
+++ /dev/null
@@ -1,1341 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.File;
-import java.lang.reflect.Constructor;
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.net.URLStreamHandler;
-import java.net.URLStreamHandlerFactory;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.commons.vfs2.CacheStrategy;
-import org.apache.commons.vfs2.Capability;
-import org.apache.commons.vfs2.FileContentInfoFactory;
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystem;
-import org.apache.commons.vfs2.FileSystemConfigBuilder;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemManager;
-import org.apache.commons.vfs2.FileSystemOptions;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.FilesCache;
-import org.apache.commons.vfs2.NameScope;
-import org.apache.commons.vfs2.VFS;
-import org.apache.commons.vfs2.cache.SoftRefFilesCache;
-import org.apache.commons.vfs2.operations.FileOperationProvider;
-import org.apache.commons.vfs2.provider.AbstractFileName;
-import org.apache.commons.vfs2.provider.AbstractFileProvider;
-import org.apache.commons.vfs2.provider.DefaultURLStreamHandler;
-import org.apache.commons.vfs2.provider.FileProvider;
-import org.apache.commons.vfs2.provider.FileReplicator;
-import org.apache.commons.vfs2.provider.LocalFileProvider;
-import org.apache.commons.vfs2.provider.TemporaryFileStore;
-import org.apache.commons.vfs2.provider.UriParser;
-import org.apache.commons.vfs2.provider.VfsComponent;
-
-/**
- * The default file system manager implementation.
- */
-public class DefaultFileSystemManager implements FileSystemManager
-{
-    /**
-     * Mapping from URI scheme to FileProvider.
-     */
-    private final Map<String, FileProvider> providers = new HashMap<String, FileProvider>();
-
-    /**
-     * All components used by this manager.
-     */
-    private final ArrayList<Object> components = new ArrayList<Object>();
-
-    /**
-     * The context to pass to providers.
-     */
-    private final DefaultVfsComponentContext context = new DefaultVfsComponentContext(this);
-
-    /**
-     * Operations providers added to this manager.
-     */
-    private final Map<String, List<FileOperationProvider>> operationProviders =
-            new HashMap<String, List<FileOperationProvider>>();
-
-    /**
-     * Mappings of file types.
-     */
-    private final FileTypeMap typeMap = new FileTypeMap();
-
-
-    /**
-     * The provider for local files.
-     */
-    private LocalFileProvider localFileProvider;
-
-    /**
-     * The default provider.
-     */
-    private FileProvider defaultProvider;
-
-    /**
-     * The file replicator to use.
-     */
-    private FileReplicator fileReplicator;
-
-    /**
-     * The base file to use for relative URI.
-     */
-    private FileObject baseFile;
-
-    /**
-     * The files cache
-     */
-    private FilesCache filesCache;
-
-    /**
-     * The cache strategy
-     */
-    private CacheStrategy fileCacheStrategy;
-
-    /**
-     * Class which decorates all returned fileObjects
-     */
-    private Class<?> fileObjectDecorator;
-    /**
-     * Reflection constructor extracted from {@link #fileObjectDecorator}
-     */
-    private Constructor<?> fileObjectDecoratorConst;
-
-    /**
-     * The class to use to determine the content-type (mime-type)
-     */
-    private FileContentInfoFactory fileContentInfoFactory;
-
-    /**
-     * The logger to use. Default implementation.
-     */
-    private Log log = LogFactory.getLog(getClass());
-
-    /**
-     * The temporary file store to use.
-     */
-    private TemporaryFileStore tempFileStore;
-
-    /**
-     * The virtual file provider.
-     */
-    private VirtualFileProvider vfsProvider;
-
-    /**
-     * Flag, if manager is initialized (after init() and before close()).
-     */
-    private boolean init;
-
-
-    /**
-     * Returns the logger used by this manager.
-     * @return the Logger.
-     */
-    protected Log getLogger()
-    {
-        return log;
-    }
-
-    /**
-     * Registers a file system provider.
-     * <p>
-     * The manager takes care of all lifecycle management.
-     * A provider may be registered multiple times.
-     * The first {@link LocalFileProvider} added will be
-     * remembered for {@link #getLocalFileProvider()}.
-     *
-     * @param urlScheme
-     *            The scheme the provider will handle.
-     * @param provider
-     *            The provider.
-     * @throws FileSystemException if an error occurs adding the provider.
-     */
-    public void addProvider(final String urlScheme, final FileProvider provider)
-            throws FileSystemException
-    {
-        addProvider(new String[] {urlScheme}, provider);
-    }
-
-    /**
-     * Registers a file system provider.
-     * <p>
-     * The manager takes care of all lifecycle management.
-     * A provider may be registered multiple times.
-     * The first {@link LocalFileProvider} added will be
-     * remembered for {@link #getLocalFileProvider()}.
-     *
-     * @param urlSchemes
-     *            The schemes the provider will handle.
-     * @param provider
-     *            The provider.
-     * @throws FileSystemException if an error occurs adding the provider.
-     */
-    public void addProvider(final String[] urlSchemes,
-            final FileProvider provider) throws FileSystemException
-    {
-        // fail duplicate schemes
-        for (final String scheme : urlSchemes)
-        {
-            if (providers.containsKey(scheme))
-            {
-                throw new FileSystemException(
-                        "vfs.impl/multiple-providers-for-scheme.error", scheme);
-            }
-        }
-
-        // Contextualise the component (if not already)
-        setupComponent(provider);
-
-        // Add to map
-        for (final String scheme : urlSchemes)
-        {
-            providers.put(scheme, provider);
-        }
-
-        if (provider instanceof LocalFileProvider && localFileProvider == null)
-        {
-            localFileProvider = (LocalFileProvider) provider;
-        }
-    }
-
-    /**
-     * Returns true if this manager has a provider for a particular scheme.
-     *
-     * @param scheme The scheme to check.
-     * @return true if a provider is configured for this scheme, false otherwise.
-     */
-    @Override
-    public boolean hasProvider(final String scheme)
-    {
-        return providers.containsKey(scheme);
-    }
-
-    /**
-     * Adds an filename extension mapping.
-     *
-     * @param extension The file name extension.
-     * @param scheme The scheme to use for files with this extension.
-     */
-    public void addExtensionMap(final String extension, final String scheme)
-    {
-        typeMap.addExtension(extension, scheme);
-    }
-
-    /**
-     * Adds a mime type mapping.
-     *
-     * @param mimeType The mime type.
-     * @param scheme The scheme to use for files with this mime type.
-     */
-    public void addMimeTypeMap(final String mimeType, final String scheme)
-    {
-        typeMap.addMimeType(mimeType, scheme);
-    }
-
-    /**
-     * Sets the default provider. This is the provider that will handle URI with
-     * unknown schemes. The manager takes care of all lifecycle management.
-     * @param provider The FileProvider.
-     * @throws FileSystemException if an error occurs setting the provider.
-     */
-    public void setDefaultProvider(final FileProvider provider)
-            throws FileSystemException
-    {
-        setupComponent(provider);
-        defaultProvider = provider;
-    }
-
-    /**
-     * Returns the filesCache implementation used to cache files.
-     * @return The FilesCache.
-     */
-    @Override
-    public FilesCache getFilesCache()
-    {
-        return filesCache;
-    }
-
-    /**
-     * Sets the filesCache implementation used to cache files.
-     * <p>
-     * Can only be set before the FileSystemManager is initialized.
-     * <p>
-     * The manager takes care of the lifecycle. If none is set, a default is picked
-     * in {@link #init()}.
-     *
-     * @param filesCache The FilesCache.
-     * @throws FileSystemException if an error occurs setting the cache..
-     */
-    public void setFilesCache(final FilesCache filesCache)
-            throws FileSystemException
-    {
-        if (init)
-        {
-            throw new FileSystemException("vfs.impl/already-inited.error");
-        }
-
-        this.filesCache = filesCache;
-    }
-
-    /**
-     * Set the cache strategy to use when dealing with file object data.
-     * <p>
-     * Can only be set before the FileSystemManager is initialized.
-     * <p>
-     * The default is {@link CacheStrategy#ON_RESOLVE}
-     *
-     * @param fileCacheStrategy The CacheStrategy to use.
-     * @throws FileSystemException
-     *             if this is not possible. e.g. it is already set.
-     */
-    public void setCacheStrategy(final CacheStrategy fileCacheStrategy)
-            throws FileSystemException
-    {
-        if (init)
-        {
-            throw new FileSystemException("vfs.impl/already-inited.error");
-        }
-
-        this.fileCacheStrategy = fileCacheStrategy;
-    }
-
-    /**
-     * Get the cache strategy used.
-     * @return The CacheStrategy.
-     */
-    @Override
-    public CacheStrategy getCacheStrategy()
-    {
-        return fileCacheStrategy;
-    }
-
-    /**
-     * Get the file object decorator used.
-     * @return The decorator.
-     */
-    @Override
-    public Class<?> getFileObjectDecorator()
-    {
-        return fileObjectDecorator;
-    }
-
-    /**
-     * The constructor associated to the fileObjectDecorator.
-     * We cache it here for performance reasons.
-     * @return The decorator's Constructor.
-     */
-    @Override
-    public Constructor<?> getFileObjectDecoratorConst()
-    {
-        return fileObjectDecoratorConst;
-    }
-
-    /**
-     * Set a fileObject decorator to be used for ALL returned file objects.
-     * <p>
-     * Can only be set before the FileSystemManager is initialized.
-     *
-     * @param fileObjectDecorator must be inherted from {@link DecoratedFileObject} a has to provide a
-     * constructor with a single {@link FileObject} as argument
-     * @throws FileSystemException if an error occurs setting the decorator.
-     */
-    public void setFileObjectDecorator(final Class<?> fileObjectDecorator) throws FileSystemException
-    {
-        if (init)
-        {
-            throw new FileSystemException("vfs.impl/already-inited.error");
-        }
-        if (!DecoratedFileObject.class.isAssignableFrom(fileObjectDecorator))
-        {
-            throw new FileSystemException("vfs.impl/invalid-decorator.error", fileObjectDecorator.getName());
-        }
-
-        try
-        {
-            fileObjectDecoratorConst = fileObjectDecorator.getConstructor(new Class[]{FileObject.class});
-        }
-        catch (final NoSuchMethodException e)
-        {
-            throw new FileSystemException("vfs.impl/invalid-decorator.error", fileObjectDecorator.getName(), e);
-        }
-
-        this.fileObjectDecorator = fileObjectDecorator;
-    }
-
-    /**
-     * get the fileContentInfoFactory used to determine the infos of a file
-     * content.
-     * @return The FileContentInfoFactory.
-     */
-    @Override
-    public FileContentInfoFactory getFileContentInfoFactory()
-    {
-        return fileContentInfoFactory;
-    }
-
-    /**
-     * set the fileContentInfoFactory used to determine the infos of a file
-     * content.
-     * <p>
-     * Can only be set before the FileSystemManager is initialized.
-     *
-     * @param fileContentInfoFactory The FileContentInfoFactory.
-     * @throws FileSystemException if an error occurs setting the FileContentInfoFactory.
-     */
-    public void setFileContentInfoFactory(final FileContentInfoFactory fileContentInfoFactory)
-            throws FileSystemException
-    {
-        if (init)
-        {
-            throw new FileSystemException("vfs.impl/already-inited.error");
-        }
-
-        this.fileContentInfoFactory = fileContentInfoFactory;
-    }
-
-    /**
-     * Sets the file replicator to use.
-     * <p>
-     * The manager takes care of all lifecycle management.
-     *
-     * @param replicator The FileReplicator.
-     * @throws FileSystemException if an error occurs setting the replicator.
-     */
-    public void setReplicator(final FileReplicator replicator)
-            throws FileSystemException
-    {
-        setupComponent(replicator);
-        fileReplicator = replicator;
-    }
-
-    /**
-     * Sets the temporary file store to use.
-     * <p>
-     * The manager takes care of all lifecycle management.
-     *
-     * @param tempFileStore The temporary FileStore.
-     * @throws FileSystemException if an error occurs adding the file store.
-     */
-    public void setTemporaryFileStore(final TemporaryFileStore tempFileStore)
-            throws FileSystemException
-    {
-        setupComponent(tempFileStore);
-        this.tempFileStore = tempFileStore;
-    }
-
-    /**
-     * Sets the logger to use.
-     * <p>
-     * This overwrites the default logger for this manager and is not reset in {@link #close()}.
-     *
-     * @param log The Logger to use.
-     */
-    @Override
-    public void setLogger(final Log log)
-    {
-        this.log = log;
-    }
-
-    /**
-     * Initializes a component, if it has not already been initialised.
-     *
-     * @param component The component to setup.
-     * @throws FileSystemException if an error occurs.
-     */
-    private void setupComponent(final Object component)
-            throws FileSystemException
-    {
-        if (!components.contains(component))
-        {
-            if (component instanceof VfsComponent)
-            {
-                final VfsComponent vfsComponent = (VfsComponent) component;
-                vfsComponent.setLogger(getLogger());
-                vfsComponent.setContext(context);
-                vfsComponent.init();
-            }
-            components.add(component);
-        }
-    }
-
-    /**
-     * Closes a component, if it has not already been closed.
-     *
-     * @param component The component to close.
-     */
-    private void closeComponent(final Object component)
-    {
-        if (component != null && components.contains(component))
-        {
-            if (component instanceof VfsComponent)
-            {
-                final VfsComponent vfsComponent = (VfsComponent) component;
-                vfsComponent.close();
-            }
-            components.remove(component);
-        }
-    }
-
-    /**
-     * Returns the file replicator.
-     *
-     * @return The file replicator. Never returns null.
-     * @throws FileSystemException if there is no FileReplicator.
-     */
-    public FileReplicator getReplicator() throws FileSystemException
-    {
-        if (fileReplicator == null)
-        {
-            throw new FileSystemException("vfs.impl/no-replicator.error");
-        }
-        return fileReplicator;
-    }
-
-    /**
-     * Returns the temporary file store.
-     *
-     * @return The file store. Never returns null.
-     * @throws FileSystemException if there is no TemporaryFileStore.
-     */
-    public TemporaryFileStore getTemporaryFileStore()
-            throws FileSystemException
-    {
-        if (tempFileStore == null)
-        {
-            throw new FileSystemException("vfs.impl/no-temp-file-store.error");
-        }
-        return tempFileStore;
-    }
-
-    /**
-     * Initializes this manager.
-     * <p>
-     * If no value for the following properties was specified, it will
-     * use the following defaults:
-     * <ul>
-     * <li>fileContentInfoFactory = new FileContentInfoFilenameFactory()</li>
-     * <li>filesCache = new SoftRefFilesCache()</li>
-     * <li>fileCacheStrategy = CacheStrategy.ON_RESOLVE</li>
-     * </ul>
-     *
-     * @throws FileSystemException if an error occurs during initialization.
-     */
-    public void init() throws FileSystemException
-    {
-        if (fileContentInfoFactory == null)
-        {
-            fileContentInfoFactory = new FileContentInfoFilenameFactory();
-        }
-
-        if (filesCache == null)
-        {
-            // filesCache = new DefaultFilesCache();
-            filesCache = new SoftRefFilesCache();
-        }
-        if (fileCacheStrategy == null)
-        {
-            fileCacheStrategy = CacheStrategy.ON_RESOLVE;
-        }
-        setupComponent(filesCache);
-
-        vfsProvider = new VirtualFileProvider();
-        setupComponent(vfsProvider);
-
-        init = true;
-    }
-
-    /**
-     * Closes the manager.
-     * <p>
-     * This will close all providers (all files), it will also close
-     * all managed components including temporary files, replicator,
-     * file cache and file operations.
-     * <p>
-     * The manager is in uninitialized state after this method.
-     */
-    public void close()
-    {
-        if (!init)
-        {
-            return;
-        }
-
-        // make sure all discovered components in
-        // org.apache.commons.vfs2.impl.StandardFileSystemManager.configure(Element)
-        // are closed here
-
-        // Close the file system providers.
-        for (final FileProvider provider : providers.values())
-        {
-            closeComponent(provider);
-        }
-        // unregister all
-        providers.clear();
-
-        // Close the other components
-        closeComponent(vfsProvider);
-        closeComponent(fileReplicator);
-        closeComponent(tempFileStore);
-        closeComponent(filesCache);
-        closeComponent(defaultProvider);
-
-        // FileOperations are components, too
-        for (final List<FileOperationProvider> opproviders : operationProviders.values())
-        {
-            for (final FileOperationProvider p : opproviders)
-            {
-                closeComponent(p);
-            }
-        }
-        // unregister all
-        operationProviders.clear();
-
-        // collections with add()
-        typeMap.clear();
-
-        // should not happen, but make debugging easier:
-        if (!components.isEmpty())
-        {
-            log.warn("DefaultFilesystemManager.close: not all components are closed: " + components.toString());
-        }
-        components.clear();
-
-        // managed components
-        vfsProvider = null;
-
-        // setters and derived state
-        defaultProvider = null;
-        baseFile = null;
-        fileObjectDecorator = null;
-        fileObjectDecoratorConst = null;
-        localFileProvider = null;
-        fileReplicator = null;
-        tempFileStore = null;
-        // setters with init() defaults
-        filesCache = null;
-        fileCacheStrategy = null;
-        fileContentInfoFactory = null;
-
-        init = false;
-    }
-
-    /**
-     * Free all resources used by unused filesystems created by this manager.
-     */
-    public void freeUnusedResources()
-    {
-        if (!init)
-        {
-            return;
-        }
-
-        // Close the providers.
-        for (final FileProvider fileProvider : providers.values())
-        {
-            final AbstractFileProvider provider = (AbstractFileProvider) fileProvider;
-            provider.freeUnusedResources();
-        }
-        // vfsProvider does not need to free resources
-    }
-
-    /**
-     * Sets the base file to use when resolving relative URI.
-     * @param baseFile The new base FileObject.
-     * @throws FileSystemException if an error occurs.
-     */
-    public void setBaseFile(final FileObject baseFile)
-            throws FileSystemException
-    {
-        this.baseFile = baseFile;
-    }
-
-    /**
-     * Sets the base file to use when resolving relative URI.
-     * @param baseFile The new base FileObject.
-     * @throws FileSystemException if an error occurs.
-     */
-    public void setBaseFile(final File baseFile) throws FileSystemException
-    {
-        this.baseFile = getLocalFileProvider().findLocalFile(baseFile);
-    }
-
-    /**
-     * Returns the base file used to resolve relative URI.
-     * @return The FileObject that represents the base file.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileObject getBaseFile() throws FileSystemException
-    {
-        return baseFile;
-    }
-
-    /**
-     * Locates a file by URI.
-     * @param uri The URI of the file to locate.
-     * @return The FileObject for the located file.
-     * @throws FileSystemException if the file cannot be located or an error occurs.
-     */
-    @Override
-    public FileObject resolveFile(final String uri) throws FileSystemException
-    {
-        return resolveFile(getBaseFile(), uri);
-    }
-
-    /**
-     * Locate a file by URI, use the FileSystemOptions for file-system creation.
-     * @param uri The URI of the file to locate.
-     * @param fileSystemOptions The options for the FileSystem.
-     * @return The FileObject for the located file.
-     * @throws FileSystemException if the file cannot be located or an error occurs.
-     */
-
-    @Override
-    public FileObject resolveFile(final String uri,
-            final FileSystemOptions fileSystemOptions)
-            throws FileSystemException
-    {
-        // return resolveFile(baseFile, uri, fileSystemOptions);
-        return resolveFile(getBaseFile(), uri, fileSystemOptions);
-    }
-
-    /**
-     * Resolves a URI, relative to base file.
-     * <p>
-     * Uses the {@linkplain #getLocalFileProvider() local file provider} to
-     * locate the system file.
-     *
-     * @param baseFile The base File to use to locate the file.
-     * @param uri The URI of the file to locate.
-     * @return The FileObject for the located file.
-     * @throws FileSystemException if the file cannot be located or an error occurs.
-     */
-    @Override
-    public FileObject resolveFile(final File baseFile, final String uri)
-            throws FileSystemException
-    {
-        final FileObject baseFileObj = getLocalFileProvider().findLocalFile(
-                baseFile);
-        return resolveFile(baseFileObj, uri);
-    }
-
-    /**
-     * Resolves a URI, relative to a base file.
-     * @param baseFile The base FileOjbect to use to locate the file.
-     * @param uri The URI of the file to locate.
-     * @return The FileObject for the located file.
-     * @throws FileSystemException if the file cannot be located or an error occurs.
-     */
-    @Override
-    public FileObject resolveFile(final FileObject baseFile, final String uri)
-            throws FileSystemException
-    {
-        return resolveFile(baseFile, uri, baseFile == null ? null : baseFile
-                .getFileSystem().getFileSystemOptions());
-    }
-
-    /**
-     * Resolves a URI, relative to a base file with specified FileSystem
-     * configuration.
-     * @param baseFile The base file.
-     * @param uri The file name. May be a fully qualified or relative path or a url.
-     * @param fileSystemOptions Options to pass to the file system.
-     * @return A FileObject representing the target file.
-     * @throws FileSystemException if an error occurs accessing the file.
-     */
-    public FileObject resolveFile(final FileObject baseFile, final String uri,
-            final FileSystemOptions fileSystemOptions)
-            throws FileSystemException
-    {
-        final FileObject realBaseFile;
-        if (baseFile != null && VFS.isUriStyle()
-                && baseFile.getName().isFile())
-        {
-            realBaseFile = baseFile.getParent();
-        }
-        else
-        {
-            realBaseFile = baseFile;
-        }
-        // TODO: use resolveName and use this name to resolve the fileObject
-
-        UriParser.checkUriEncoding(uri);
-
-        if (uri == null)
-        {
-            throw new IllegalArgumentException();
-        }
-
-        // Extract the scheme
-        final String scheme = UriParser.extractScheme(uri);
-        if (scheme != null)
-        {
-            // An absolute URI - locate the provider
-            final FileProvider provider = providers.get(scheme);
-            if (provider != null)
-            {
-                return provider.findFile(realBaseFile, uri, fileSystemOptions);
-            }
-            // Otherwise, assume a local file
-        }
-
-        // Handle absolute file names
-        if (localFileProvider != null
-                && localFileProvider.isAbsoluteLocalName(uri))
-        {
-            return localFileProvider.findLocalFile(uri);
-        }
-
-        if (scheme != null)
-        {
-            // An unknown scheme - hand it to the default provider
-            if (defaultProvider == null)
-            {
-                throw new FileSystemException("vfs.impl/unknown-scheme.error", scheme, uri);
-            }
-            return defaultProvider.findFile(realBaseFile, uri, fileSystemOptions);
-        }
-
-        // Assume a relative name - use the supplied base file
-        if (realBaseFile == null)
-        {
-            throw new FileSystemException("vfs.impl/find-rel-file.error", uri);
-        }
-
-        return realBaseFile.resolveFile(uri);
-    }
-
-    /**
-     * Resolves a name, relative to the file. If the supplied name is an
-     * absolute path, then it is resolved relative to the root of the file
-     * system that the file belongs to. If a relative name is supplied, then it
-     * is resolved relative to this file name.
-     * @param root The base FileName.
-     * @param path The path to the file relative to the base FileName or an absolute path.
-     * @return The constructed FileName.
-     * @throws FileSystemException if an error occurs constructing the FileName.
-     */
-    @Override
-    public FileName resolveName(final FileName root, final String path)
-            throws FileSystemException
-    {
-        return resolveName(root, path, NameScope.FILE_SYSTEM);
-    }
-
-    /**
-     * Resolves a name, relative to the root.
-     *
-     * @param base the base filename
-     * @param name the name
-     * @param scope the {@link NameScope}
-     * @return The FileName of the file.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileName resolveName(final FileName base, final String name,
-            final NameScope scope) throws FileSystemException
-    {
-        final FileName realBase;
-        if (base != null && VFS.isUriStyle() && base.isFile())
-        {
-            realBase = base.getParent();
-        }
-        else
-        {
-            realBase = base;
-        }
-
-        final StringBuilder buffer = new StringBuilder(name);
-
-        // Adjust separators
-        UriParser.fixSeparators(buffer);
-        String scheme = UriParser.extractScheme(buffer.toString());
-
-        // Determine whether to prepend the base path
-        if (name.length() == 0 || (scheme == null && buffer.charAt(0) != FileName.SEPARATOR_CHAR))
-        {
-            // Supplied path is not absolute
-            if (!VFS.isUriStyle())
-            {
-                // when using uris the parent already do have the trailing "/"
-                buffer.insert(0, FileName.SEPARATOR_CHAR);
-            }
-            buffer.insert(0, realBase.getPath());
-        }
-
-        // Normalise the path
-        final FileType fileType = UriParser.normalisePath(buffer);
-
-        // Check the name is ok
-        final String resolvedPath = buffer.toString();
-        if (!AbstractFileName
-                .checkName(realBase.getPath(), resolvedPath, scope))
-        {
-            throw new FileSystemException(
-                    "vfs.provider/invalid-descendent-name.error", name);
-        }
-
-        String fullPath;
-        if (scheme != null)
-        {
-            fullPath = resolvedPath;
-        }
-        else
-        {
-            scheme = realBase.getScheme();
-            fullPath = realBase.getRootURI() + resolvedPath;
-        }
-        final FileProvider provider = providers.get(scheme);
-        if (provider != null)
-        {
-            // TODO: extend the filename parser to be able to parse
-            // only a pathname and take the missing informations from
-            // the base. Then we can get rid of the string operation.
-            // // String fullPath = base.getRootURI() +
-            // resolvedPath.substring(1);
-
-            return provider.parseUri(realBase, fullPath);
-        }
-
-        // An unknown scheme - hand it to the default provider - if possible
-        if (scheme != null && defaultProvider != null)
-        {
-            return defaultProvider.parseUri(realBase, fullPath);
-        }
-
-        // TODO: avoid fallback to this point
-        // this happens if we have a virtual filesystem (no provider for scheme)
-        return ((AbstractFileName) realBase).createName(resolvedPath, fileType);
-    }
-
-    /**
-     * Resolve the uri to a filename.
-     * @param uri The URI to resolve.
-     * @return The FileName of the file.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileName resolveURI(final String uri) throws FileSystemException
-    {
-        UriParser.checkUriEncoding(uri);
-
-        if (uri == null)
-        {
-            throw new IllegalArgumentException();
-        }
-
-        // Extract the scheme
-        final String scheme = UriParser.extractScheme(uri);
-        if (scheme != null)
-        {
-            // An absolute URI - locate the provider
-            final FileProvider provider = providers.get(scheme);
-            if (provider != null)
-            {
-                return provider.parseUri(null, uri);
-            }
-
-            // Otherwise, assume a local file
-        }
-
-        // Handle absolute file names
-        if (localFileProvider != null
-                && localFileProvider.isAbsoluteLocalName(uri))
-        {
-            return localFileProvider.parseUri(null, uri);
-        }
-
-        if (scheme != null)
-        {
-            // An unknown scheme - hand it to the default provider
-            if (defaultProvider == null)
-            {
-                throw new FileSystemException("vfs.impl/unknown-scheme.error", scheme, uri);
-            }
-            return defaultProvider.parseUri(null, uri);
-        }
-
-        // Assume a relative name - use the supplied base file
-        if (baseFile == null)
-        {
-            throw new FileSystemException("vfs.impl/find-rel-file.error", uri);
-        }
-
-        return resolveName(baseFile.getName(), uri, NameScope.FILE_SYSTEM);
-    }
-
-    /**
-     * Converts a local file into a {@link FileObject}.
-     * @param file The input File.
-     * @return the create FileObject
-     * @throws FileSystemException if an error occurs creating the file.
-     */
-    @Override
-    public FileObject toFileObject(final File file) throws FileSystemException
-    {
-        return getLocalFileProvider().findLocalFile(file);
-    }
-
-    /**
-     * Creates a layered file system.
-     * @param scheme The scheme to use.
-     * @param file The FileObject.
-     * @return The layered FileObject.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileObject createFileSystem(final String scheme,
-            final FileObject file) throws FileSystemException
-    {
-        final FileProvider provider = providers.get(scheme);
-        if (provider == null)
-        {
-            throw new FileSystemException("vfs.impl/unknown-provider.error", scheme, file);
-        }
-        return provider.createFileSystem(scheme, file, file.getFileSystem().getFileSystemOptions());
-    }
-
-    /**
-     * Creates a layered file system.
-     * @param file The FileObject to use.
-     * @return The layered FileObject.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileObject createFileSystem(final FileObject file)
-            throws FileSystemException
-    {
-        final String scheme = typeMap.getScheme(file);
-        if (scheme == null)
-        {
-            throw new FileSystemException(
-                    "vfs.impl/no-provider-for-file.error", file);
-        }
-
-        return createFileSystem(scheme, file);
-    }
-
-    /**
-     * Determines if a layered file system can be created for a given file.
-     *
-     * @param file The file to check for.
-     * @return true if the FileSystem can be created.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public boolean canCreateFileSystem(final FileObject file)
-            throws FileSystemException
-    {
-        return typeMap.getScheme(file) != null;
-    }
-
-    /**
-     * Creates a virtual file system.
-     * @param rootFile The FileObject to use.
-     * @return The FileObject in the VirtualFileSystem.
-     * @throws FileSystemException if an error occurs creating the file.
-     */
-    @Override
-    public FileObject createVirtualFileSystem(final FileObject rootFile)
-            throws FileSystemException
-    {
-        return vfsProvider.createFileSystem(rootFile);
-    }
-
-    /**
-     * Creates an empty virtual file system.
-     * @param rootUri The URI to use as the root of the FileSystem.
-     * @return A FileObject in the virtual FileSystem.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileObject createVirtualFileSystem(final String rootUri)
-            throws FileSystemException
-    {
-        return vfsProvider.createFileSystem(rootUri);
-    }
-
-    /**
-     * Locates the local file provider.
-     * <p>
-     * The local file provider is the first
-     * {@linkplain #addProvider(String[], FileProvider) provider added}
-     * implementing {@link LocalFileProvider}.
-     *
-     * @return The LocalFileProvider.
-     * @throws FileSystemException if no local file provider was set.
-     */
-    private LocalFileProvider getLocalFileProvider() throws FileSystemException
-    {
-        if (localFileProvider == null)
-        {
-            throw new FileSystemException(
-                    "vfs.impl/no-local-file-provider.error");
-        }
-        return localFileProvider;
-    }
-
-    /**
-     * Get the URLStreamHandlerFactory.
-     * @return The URLStreamHandlerFactory.
-     */
-    @Override
-    public URLStreamHandlerFactory getURLStreamHandlerFactory()
-    {
-        return new VfsStreamHandlerFactory();
-    }
-
-    /**
-     * Closes the given filesystem.
-     * <p>
-     * If you use VFS as singleton it is VERY dangerous to call this method.
-     *
-     * @param filesystem The FileSystem to close.
-     */
-    @Override
-    public void closeFileSystem(final FileSystem filesystem)
-    {
-        // inform the cache ...
-        getFilesCache().clear(filesystem);
-
-        // just in case the cache didnt call _closeFileSystem
-        _closeFileSystem(filesystem);
-    }
-
-    /**
-     * Closes the given file system.
-     * <p>
-     * If you use VFS as singleton it is VERY dangerous to call this method
-     * </p>
-     *
-     * @param filesystem The FileSystem to close.
-     */
-    public void _closeFileSystem(final FileSystem filesystem)
-    {
-        final FileProvider provider = providers.get(filesystem.getRootName().getScheme());
-        if (provider != null)
-        {
-            ((AbstractFileProvider) provider).closeFileSystem(filesystem);
-        }
-        else if (filesystem instanceof VirtualFileSystem)
-        {
-            // vfsProvider does not implement AbstractFileProvider
-            vfsProvider.closeFileSystem(filesystem);
-        }
-    }
-
-    /**
-     * This is an internal class because it needs access to the private member
-     * providers.
-     */
-    final class VfsStreamHandlerFactory implements URLStreamHandlerFactory
-    {
-        @Override
-        public URLStreamHandler createURLStreamHandler(final String protocol)
-        {
-            final FileProvider provider = providers.get(protocol);
-            if (provider != null)
-            {
-                return new DefaultURLStreamHandler(context);
-            }
-
-            // Route all other calls to the default URLStreamHandlerFactory
-            return new URLStreamHandlerProxy();
-        }
-    }
-
-    /**
-     * Get the schemes currently available.
-     * @return The array of scheme names.
-     */
-    @Override
-    public String[] getSchemes()
-    {
-        final String[] schemes = new String[providers.size()];
-        providers.keySet().toArray(schemes);
-        return schemes;
-    }
-
-    /**
-     * Get the capabilities for a given scheme.
-     *
-     * @param scheme The scheme to located.
-     * @return A Collection of capabilities.
-     * @throws FileSystemException if the given scheme is not konwn
-     */
-    @Override
-    public Collection<Capability> getProviderCapabilities(final String scheme)
-            throws FileSystemException
-    {
-        final FileProvider provider = providers.get(scheme);
-        if (provider == null)
-        {
-            throw new FileSystemException("vfs.impl/unknown-scheme.error", scheme);
-        }
-
-        return provider.getCapabilities();
-    }
-
-    /**
-     * Get the configuration builder for the given scheme.
-     * @param scheme The scheme to locate.
-     * @return The FileSystemConfigBuilder for the scheme.
-     * @throws FileSystemException if the given scheme is not konwn
-     */
-    @Override
-    public FileSystemConfigBuilder getFileSystemConfigBuilder(final String scheme)
-            throws FileSystemException
-    {
-        final FileProvider provider = providers.get(scheme);
-        if (provider == null)
-        {
-            throw new FileSystemException("vfs.impl/unknown-scheme.error", scheme);
-        }
-
-        return provider.getConfigBuilder();
-    }
-
-    // -- OPERATIONS --
-
-    /**
-     * Adds the specified FileOperationProvider for the specified scheme.
-     * Several FileOperationProvider's might be registered for the same scheme.
-     * For example, for "file" scheme we can register SvnWsOperationProvider and
-     * CvsOperationProvider.
-     *
-     * @param scheme The scheme the provider should be registered for.
-     * @param operationProvider The FileOperationProvider.
-     * @throws FileSystemException if an error occurs adding the provider.
-     */
-    @Override
-    public void addOperationProvider(final String scheme,
-            final FileOperationProvider operationProvider)
-            throws FileSystemException
-    {
-        addOperationProvider(new String[] {scheme}, operationProvider);
-    }
-
-    /**
-     * @see FileSystemManager#addOperationProvider(String,
-     *      org.apache.commons.vfs2.operations.FileOperationProvider)
-     *
-     * @param schemes The array of schemes the provider should apply to.
-     * @param operationProvider The FileOperationProvider.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public void addOperationProvider(final String[] schemes,
-            final FileOperationProvider operationProvider)
-            throws FileSystemException
-    {
-        for (final String scheme : schemes)
-        {
-            if (!operationProviders.containsKey(scheme))
-            {
-                final List<FileOperationProvider> providers = new ArrayList<FileOperationProvider>();
-                operationProviders.put(scheme, providers);
-            }
-
-            final List<FileOperationProvider> providers = operationProviders.get(scheme);
-
-            if (providers.contains(operationProvider))
-            {
-                throw new FileSystemException(
-                        "vfs.operation/operation-provider-already-added.error", scheme);
-            }
-
-            setupComponent(operationProvider);
-
-            providers.add(operationProvider);
-        }
-    }
-
-    /**
-     * @param scheme
-     *            the scheme for wich we want to get the list af registered
-     *            providers.
-     *
-     * @return the registered FileOperationProviders for the specified scheme.
-     *         If there were no providers registered for the scheme, it returns
-     *         null.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileOperationProvider[] getOperationProviders(final String scheme)
-            throws FileSystemException
-    {
-
-        final List<?> providers = operationProviders.get(scheme);
-        if (providers == null || providers.size() == 0)
-        {
-            return null;
-        }
-        return providers.toArray(new FileOperationProvider[] {});
-    }
-
-    /**
-     * Converts a URI into a {@link FileObject}.
-     *
-     * @param uri The URI to convert.
-     * @return The {@link FileObject} that represents the URI.  Never
-     *         returns null.
-     * @throws FileSystemException On error converting the URI.
-     * @since 2.1
-     */
-    @Override
-    public FileObject resolveFile(final URI uri) throws FileSystemException
-    {
-        // TODO Push the URI deeper into VFS
-        return resolveFile(baseFile, uri.toString(), null);
-    }
-
-    /**
-     * Converts a URL into a {@link FileObject}.
-     *
-     * @param url The URL to convert.
-     * @return The {@link FileObject} that represents the URL.  Never
-     *         returns null.
-     * @throws FileSystemException On error converting the URL.
-     * @since 2.1
-     */
-    @Override
-    public FileObject resolveFile(final URL url) throws FileSystemException
-    {
-        try
-        {
-            return this.resolveFile(url.toURI());
-        }
-        catch (final URISyntaxException e)
-        {
-            throw new FileSystemException(e);
-        }
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultProviderConfiguration.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultProviderConfiguration.java
deleted file mode 100644
index 068b8a2..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultProviderConfiguration.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-
-/**
- * Same as {@link ProviderConfiguration} but for the default provider.
- */
-public class DefaultProviderConfiguration extends ProviderConfiguration
-{
-    @Override
-    public boolean isDefault()
-    {
-        return true;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultVfsComponentContext.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultVfsComponentContext.java
deleted file mode 100644
index 9aed70c..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/DefaultVfsComponentContext.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.File;
-
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemManager;
-import org.apache.commons.vfs2.FileSystemOptions;
-import org.apache.commons.vfs2.provider.FileReplicator;
-import org.apache.commons.vfs2.provider.TemporaryFileStore;
-import org.apache.commons.vfs2.provider.VfsComponentContext;
-
-
-/**
- * The default context implementation.
- */
-final class DefaultVfsComponentContext
-    implements VfsComponentContext
-{
-    private final DefaultFileSystemManager manager;
-
-    public DefaultVfsComponentContext(final DefaultFileSystemManager manager)
-    {
-        this.manager = manager;
-    }
-
-    /**
-     * Locate a file by name.
-     */
-    @Override
-    public FileObject resolveFile(final FileObject baseFile, final String name,
-                                  final FileSystemOptions fileSystemOptions)
-        throws FileSystemException
-    {
-        return manager.resolveFile(baseFile, name, fileSystemOptions);
-    }
-
-    /**
-     * Locate a file by name.
-     */
-    @Override
-    public FileObject resolveFile(final String name, final FileSystemOptions fileSystemOptions)
-        throws FileSystemException
-    {
-        return manager.resolveFile(name, fileSystemOptions);
-    }
-
-    @Override
-    public FileName parseURI(final String uri) throws FileSystemException
-    {
-        return manager.resolveURI(uri);
-    }
-
-    /**
-     * Returns a {@link FileObject} for a local file.
-     */
-    @Override
-    public FileObject toFileObject(final File file)
-        throws FileSystemException
-    {
-        return manager.toFileObject(file);
-    }
-
-    /**
-     * Locates a file replicator for the provider to use.
-     */
-    @Override
-    public FileReplicator getReplicator() throws FileSystemException
-    {
-        return manager.getReplicator();
-    }
-
-    /**
-     * Locates a temporary file store for the provider to use.
-     */
-    @Override
-    public TemporaryFileStore getTemporaryFileStore() throws FileSystemException
-    {
-        return manager.getTemporaryFileStore();
-    }
-
-    /**
-     * Returns the filesystem manager for the current context
-     *
-     * @return the filesystem manager
-     */
-    @Override
-    public FileSystemManager getFileSystemManager()
-    {
-        return manager;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/FileContentInfoFilenameFactory.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/FileContentInfoFilenameFactory.java
deleted file mode 100644
index 977a253..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/FileContentInfoFilenameFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.net.FileNameMap;
-import java.net.URLConnection;
-
-import org.apache.commons.vfs2.FileContent;
-import org.apache.commons.vfs2.FileContentInfo;
-import org.apache.commons.vfs2.FileContentInfoFactory;
-
-/**
- * The FileContentInfoFilenameFactory.
- * <p>
- * Uses the filename extension to determine the content-type.
- * The content-encoding is not resolved.
- */
-public class FileContentInfoFilenameFactory implements FileContentInfoFactory
-{
-    @Override
-    public FileContentInfo create(final FileContent fileContent)
-    {
-        String contentType = null;
-
-        final String name = fileContent.getFile().getName().getBaseName();
-        if (name != null)
-        {
-            final FileNameMap fileNameMap = URLConnection.getFileNameMap();
-            contentType = fileNameMap.getContentTypeFor(name);
-        }
-
-        return new DefaultFileContentInfo(contentType, null);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/FileTypeMap.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/FileTypeMap.java
deleted file mode 100644
index eefda12..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/FileTypeMap.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.vfs2.FileContent;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-
-/**
- * A helper class that determines the provider to use for a file.
- */
-class FileTypeMap
-{
-    private final Map<String, String> mimeTypeMap = new HashMap<String, String>();
-    private final Map<String, String> extensionMap = new HashMap<String, String>();
-
-    /**
-     * Adds a MIME type mapping.
-     */
-    public void addMimeType(final String mimeType, final String scheme)
-    {
-        mimeTypeMap.put(mimeType, scheme);
-    }
-
-    /**
-     * Adds a filename extension mapping.
-     */
-    public void addExtension(final String extension, final String scheme)
-    {
-        extensionMap.put(extension, scheme);
-    }
-
-    /**
-     * Find the scheme for the provider of a layered file system.
-     * <p>
-     * This will check the FileContentInfo or file extension.
-     * @return Scheme supporting the file type or null (if unknonw).
-     */
-    public String getScheme(final FileObject file) throws FileSystemException
-    {
-        // Check the file's mime type for a match
-        final FileContent content = file.getContent();
-        final String mimeType = content.getContentInfo().getContentType();
-        if (mimeType != null)
-        {
-            return mimeTypeMap.get(mimeType);
-        }
-
-        // no specific mime-type - if it is a file also check the extension
-        if (!file.isFile())
-        {
-            return null; // VFS-490 folders don't use extensions for mime-type
-        }
-        final String extension = file.getName().getExtension();
-        return extensionMap.get(extension);
-    }
-
-    /**
-     * Removes all extensions and scheme mappings.
-     */
-    public void clear()
-    {
-        mimeTypeMap.clear();
-        extensionMap.clear();
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/PrivilegedFileReplicator.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/PrivilegedFileReplicator.java
deleted file mode 100644
index d47cd86..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/PrivilegedFileReplicator.java
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.File;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSelector;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.provider.FileReplicator;
-import org.apache.commons.vfs2.provider.VfsComponent;
-import org.apache.commons.vfs2.provider.VfsComponentContext;
-
-/**
- * A file replicator that wraps another file replicator, performing
- * the replication as a privileged action.
- */
-public class PrivilegedFileReplicator
-    implements FileReplicator, VfsComponent
-{
-    private final FileReplicator replicator;
-    private final VfsComponent replicatorComponent;
-
-    public PrivilegedFileReplicator(final FileReplicator replicator)
-    {
-        this.replicator = replicator;
-        if (replicator instanceof VfsComponent)
-        {
-            replicatorComponent = (VfsComponent) replicator;
-        }
-        else
-        {
-            replicatorComponent = null;
-        }
-    }
-
-    /**
-     * Sets the Logger to use for the component.
-     *
-     * @param logger The logger.
-     */
-    @Override
-    public void setLogger(final Log logger)
-    {
-        if (replicatorComponent != null)
-        {
-            replicatorComponent.setLogger(logger);
-        }
-    }
-
-    /**
-     * Sets the context for the replicator.
-     *
-     * @param context The component context.
-     */
-    @Override
-    public void setContext(final VfsComponentContext context)
-    {
-        if (replicatorComponent != null)
-        {
-            replicatorComponent.setContext(context);
-        }
-    }
-
-    /**
-     * Initializes the component.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public void init() throws FileSystemException
-    {
-        if (replicatorComponent != null)
-        {
-            try
-            {
-                AccessController.doPrivileged(new InitAction());
-            }
-            catch (final PrivilegedActionException e)
-            {
-                throw new FileSystemException("vfs.impl/init-replicator.error", e);
-            }
-        }
-    }
-
-    /**
-     * Closes the replicator.
-     */
-    @Override
-    public void close()
-    {
-        if (replicatorComponent != null)
-        {
-            AccessController.doPrivileged(new CloseAction());
-        }
-    }
-
-    /**
-     * Creates a local copy of the file, and all its descendants.
-     *
-     * @param srcFile The source FileObject.
-     * @param selector The file selector.
-     * @return The replicated file.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public File replicateFile(final FileObject srcFile, final FileSelector selector)
-        throws FileSystemException
-    {
-        try
-        {
-            final ReplicateAction action = new ReplicateAction(srcFile, selector);
-            return AccessController.doPrivileged(action);
-        }
-        catch (final PrivilegedActionException e)
-        {
-            throw new FileSystemException("vfs.impl/replicate-file.error", e, srcFile.getName());
-        }
-    }
-
-    /**
-     * An action that initialises the wrapped replicator.
-     */
-    private class InitAction implements PrivilegedExceptionAction<Object>
-    {
-        /**
-         * Performs the action.
-         */
-        @Override
-        public Object run() throws Exception
-        {
-            replicatorComponent.init();
-            return null;
-        }
-    }
-
-    /**
-     * An action that replicates a file using the wrapped replicator.
-     */
-    private class ReplicateAction implements PrivilegedExceptionAction<File>
-    {
-        private final FileObject srcFile;
-        private final FileSelector selector;
-
-        public ReplicateAction(final FileObject srcFile,
-                               final FileSelector selector)
-        {
-            this.srcFile = srcFile;
-            this.selector = selector;
-        }
-
-        /**
-         * Performs the action.
-         * @throws Exception if an error occurs.
-         */
-        @Override
-        public File run() throws Exception
-        {
-            // TODO - Do not pass the selector through.  It is untrusted
-            // TODO - Need to determine which files can be read
-            return replicator.replicateFile(srcFile, selector);
-        }
-    }
-
-    /**
-     * An action that closes the wrapped replicator.
-     */
-    private class CloseAction implements PrivilegedAction<Object>
-    {
-        /**
-         * Performs the action.
-         */
-        @Override
-        public Object run()
-        {
-            replicatorComponent.close();
-            return null;
-        }
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/ProviderConfiguration.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/ProviderConfiguration.java
deleted file mode 100644
index 69ded20..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/ProviderConfiguration.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * This class describes the configuration for a provider.
- * <p>
- * Used by digester in StandardFileSystemManager
- */
-public class ProviderConfiguration
-{
-    private String className;
-    private final List<String> schemes = new ArrayList<String>(10);
-    private final List<String> dependenies = new ArrayList<String>(10);
-
-    public ProviderConfiguration()
-    {
-    }
-
-    public String getClassName()
-    {
-        return className;
-    }
-
-    public void setClassName(final String className)
-    {
-        this.className = className;
-    }
-
-    public void setScheme(final String scheme)
-    {
-        schemes.add(scheme);
-    }
-
-    public List<String> getSchemes()
-    {
-        return schemes;
-    }
-
-    public void setDependency(final String dependency)
-    {
-        dependenies.add(dependency);
-    }
-
-    public List<String> getDependencies()
-    {
-        return dependenies;
-    }
-
-    public boolean isDefault()
-    {
-        return false;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/Resource.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/Resource.java
deleted file mode 100644
index 6e3ea16..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/Resource.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.IOException;
-import java.net.URL;
-import java.util.jar.Attributes;
-
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileUtil;
-
-/**
- * Helper class for VFSClassLoader.
- * This represents a resource loaded with the classloader.
- *
- * @see VFSClassLoader
- */
-class Resource
-{
-    private final FileObject root;
-    private final FileObject resource;
-    private final FileObject packageFolder;
-    private final String packageName;
-
-    /**
-     * Creates a new instance.
-     *
-     * @param root     The code source FileObject.
-     * @param resource The resource of the FileObject.
-     */
-    public Resource(final String name,
-                    final FileObject root,
-                    final FileObject resource)
-        throws FileSystemException
-    {
-        this.root = root;
-        this.resource = resource;
-        packageFolder = resource.getParent();
-        final int pos = name.lastIndexOf('/');
-        if (pos == -1)
-        {
-            packageName = null;
-        }
-        else
-        {
-            packageName = name.substring(0, pos).replace('/', '.');
-        }
-    }
-
-    /**
-     * Returns the URL of the resource.
-     */
-    public URL getURL() throws FileSystemException
-    {
-        return resource.getURL();
-    }
-
-    /**
-     * Returns the name of the package containing the resource.
-     */
-    public String getPackageName()
-    {
-        return packageName;
-    }
-
-    /**
-     * Returns an attribute of the package containing the resource.
-     */
-    public String getPackageAttribute(final Attributes.Name attrName) throws FileSystemException
-    {
-        return (String) packageFolder.getContent().getAttribute(attrName.toString());
-    }
-
-    /**
-     * Returns the folder for the package containing the resource.
-     */
-    public FileObject getPackageFolder()
-    {
-        return packageFolder;
-    }
-
-    /**
-     * Returns the FileObject of the resource.
-     */
-    public FileObject getFileObject()
-    {
-        return resource;
-    }
-
-    /**
-     * Returns the code source as an URL.
-     */
-    public URL getCodeSourceURL() throws FileSystemException
-    {
-        return root.getURL();
-    }
-
-    /**
-     * Returns the data for this resource as a byte array.
-     */
-    public byte[] getBytes() throws IOException
-    {
-        return FileUtil.getContent(resource);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
deleted file mode 100644
index b7f04c1..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.VfsLog;
-import org.apache.commons.vfs2.operations.FileOperationProvider;
-import org.apache.commons.vfs2.provider.FileProvider;
-import org.apache.commons.vfs2.util.Messages;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-/**
- * A {@link org.apache.commons.vfs2.FileSystemManager} that configures itself
- * from an XML (Default: providers.xml) configuration file.
- * <p>
- * Certain providers are only loaded and available if the dependent library is in your
- * classpath. You have to configure your debugging facility to log "debug" messages to see
- * if a provider was skipped due to "unresolved externals".
- */
-public class StandardFileSystemManager
-    extends DefaultFileSystemManager
-{
-    private static final String CONFIG_RESOURCE = "providers.xml";
-    private static final String PLUGIN_CONFIG_RESOURCE = "META-INF/vfs-providers.xml";
-
-    private URL configUri;
-    private ClassLoader classLoader;
-
-    /**
-     * Sets the configuration file for this manager.
-     *
-     * @param configUri The URI for this manager.
-     */
-    public void setConfiguration(final String configUri)
-    {
-        try
-        {
-            setConfiguration(new URL(configUri));
-        }
-        catch (final MalformedURLException e)
-        {
-            getLogger().warn(e.getLocalizedMessage(), e);
-        }
-    }
-
-    /**
-     * Sets the configuration file for this manager.
-     *
-     * @param configUri The URI forthis manager.
-     */
-    public void setConfiguration(final URL configUri)
-    {
-        this.configUri = configUri;
-    }
-
-    /**
-     * Sets the ClassLoader to use to load the providers.
-     * Default is to use the ClassLoader that loaded this class.
-     *
-     * @param classLoader The ClassLoader.
-     */
-    public void setClassLoader(final ClassLoader classLoader)
-    {
-        this.classLoader = classLoader;
-    }
-
-    /**
-     * Initializes this manager. Adds the providers and replicator.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public void init() throws FileSystemException
-    {
-        // Set the replicator and temporary file store (use the same component)
-        final DefaultFileReplicator replicator = createDefaultFileReplicator();
-        setReplicator(new PrivilegedFileReplicator(replicator));
-        setTemporaryFileStore(replicator);
-
-        if (configUri == null)
-        {
-            // Use default config
-            final URL url = getClass().getResource(CONFIG_RESOURCE);
-            if (url == null)
-            {
-                throw new FileSystemException("vfs.impl/find-config-file.error", CONFIG_RESOURCE);
-            }
-            configUri = url;
-        }
-
-        configure(configUri);
-        configurePlugins();
-
-        // Initialise super-class
-        super.init();
-    }
-
-    /**
-     * Scans the classpath to find any droped plugin.
-     * <p>
-     * The plugin-description has to be in {@code /META-INF/vfs-providers.xml}.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    protected void configurePlugins() throws FileSystemException
-    {
-        Enumeration<URL> enumResources;
-        try
-        {
-            enumResources = loadResources(PLUGIN_CONFIG_RESOURCE);
-        }
-        catch (final IOException e)
-        {
-            throw new FileSystemException(e);
-        }
-
-        while (enumResources.hasMoreElements())
-        {
-            final URL url = enumResources.nextElement();
-            configure(url);
-        }
-    }
-
-    private ClassLoader findClassLoader()
-    {
-        if (classLoader != null)
-        {
-            return classLoader;
-        }
-
-        ClassLoader cl = Thread.currentThread().getContextClassLoader();
-        if (cl == null)
-        {
-            cl = getClass().getClassLoader();
-        }
-
-        return cl;
-    }
-
-    protected DefaultFileReplicator createDefaultFileReplicator()
-    {
-        return new DefaultFileReplicator();
-    }
-
-    /**
-     * Configures this manager from an XML configuration file.
-     *
-     * @param configUri The URI of the configuration.
-     * @throws FileSystemException if an error occus.
-     */
-    private void configure(final URL configUri) throws FileSystemException
-    {
-        InputStream configStream = null;
-        try
-        {
-            // Load up the config
-            // TODO - validate
-            final DocumentBuilder builder = createDocumentBuilder();
-            configStream = configUri.openStream();
-            final Element config = builder.parse(configStream).getDocumentElement();
-
-            configure(config);
-        }
-        catch (final Exception e)
-        {
-            throw new FileSystemException("vfs.impl/load-config.error", configUri.toString(), e);
-        }
-        finally
-        {
-            if (configStream != null)
-            {
-                try
-                {
-                    configStream.close();
-                }
-                catch (final IOException e)
-                {
-                    getLogger().warn(e.getLocalizedMessage(), e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Configures this manager from an XML configuration file.
-     *
-     * @param configUri The URI of the configuration.
-     * @param configStream An InputStream containing the configuration.
-     * @throws FileSystemException if an error occurs.
-     */
-    @SuppressWarnings("unused")
-    private void configure(final String configUri, final InputStream configStream)
-            throws FileSystemException
-    {
-        try
-        {
-            // Load up the config
-            // TODO - validate
-            final DocumentBuilder builder = createDocumentBuilder();
-            final Element config = builder.parse(configStream).getDocumentElement();
-
-            configure(config);
-
-        }
-        catch (final Exception e)
-        {
-            throw new FileSystemException("vfs.impl/load-config.error", configUri, e);
-        }
-    }
-
-    /**
-     * Configure and create a DocumentBuilder
-     *
-     * @return A DocumentBuilder for the configuration.
-     * @throws ParserConfigurationException if an error occurs.
-     */
-    private DocumentBuilder createDocumentBuilder() throws ParserConfigurationException
-    {
-        final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
-        factory.setIgnoringElementContentWhitespace(true);
-        factory.setIgnoringComments(true);
-        factory.setExpandEntityReferences(true);
-        return  factory.newDocumentBuilder();
-    }
-
-    /**
-     * Configures this manager from an parsed XML configuration file
-     *
-     * @param config The configuration Element.
-     * @throws FileSystemException if an error occurs.
-     */
-    private void configure(final Element config) throws FileSystemException
-    {
-        // Add the providers
-        final NodeList providers = config.getElementsByTagName("provider");
-        final int count = providers.getLength();
-        for (int i = 0; i < count; i++)
-        {
-            final Element provider = (Element) providers.item(i);
-            addProvider(provider, false);
-        }
-
-        // Add the operation providers
-        final NodeList operationProviders = config.getElementsByTagName("operationProvider");
-        for (int i = 0; i < operationProviders.getLength(); i++)
-        {
-            final Element operationProvider = (Element) operationProviders.item(i);
-            addOperationProvider(operationProvider);
-        }
-
-        // Add the default provider
-        final NodeList defProviders = config.getElementsByTagName("default-provider");
-        if (defProviders.getLength() > 0)
-        {
-            final Element provider = (Element) defProviders.item(0);
-            addProvider(provider, true);
-        }
-
-        // Add the mime-type maps
-        final NodeList mimeTypes = config.getElementsByTagName("mime-type-map");
-        for (int i = 0; i < mimeTypes.getLength(); i++)
-        {
-            final Element map = (Element) mimeTypes.item(i);
-            addMimeTypeMap(map);
-        }
-
-        // Add the extension maps
-        final NodeList extensions = config.getElementsByTagName("extension-map");
-        for (int i = 0; i < extensions.getLength(); i++)
-        {
-            final Element map = (Element) extensions.item(i);
-            addExtensionMap(map);
-        }
-    }
-
-    /**
-     * Adds an extension map.
-     *
-     * @param map containing the Elements.
-     */
-    private void addExtensionMap(final Element map)
-    {
-        final String extension = map.getAttribute("extension");
-        final String scheme = map.getAttribute("scheme");
-        if (scheme != null && scheme.length() > 0)
-        {
-            addExtensionMap(extension, scheme);
-        }
-    }
-
-    /**
-     * Adds a mime-type map.
-     *
-     * @param map containing the Elements.
-     */
-    private void addMimeTypeMap(final Element map)
-    {
-        final String mimeType = map.getAttribute("mime-type");
-        final String scheme = map.getAttribute("scheme");
-        addMimeTypeMap(mimeType, scheme);
-    }
-
-    /**
-     * Adds a provider from a provider definition.
-     *
-     * @param providerDef the provider definition
-     * @param isDefault true if the default should be used.
-     * @throws FileSystemException if an error occurs.
-     */
-    private void addProvider(final Element providerDef, final boolean isDefault)
-        throws FileSystemException
-    {
-        final String classname = providerDef.getAttribute("class-name");
-
-        // Make sure all required schemes are available
-        final String[] requiredSchemes = getRequiredSchemes(providerDef);
-        for (final String requiredScheme : requiredSchemes)
-        {
-            if (!hasProvider(requiredScheme))
-            {
-                final String msg = Messages.getString("vfs.impl/skipping-provider-scheme.debug",
-                    classname, requiredScheme);
-                VfsLog.debug(getLogger(), getLogger(), msg);
-                return;
-            }
-        }
-
-        // Make sure all required classes are in classpath
-        final String[] requiredClasses = getRequiredClasses(providerDef);
-        for (final String requiredClass : requiredClasses)
-        {
-            if (!findClass(requiredClass))
-            {
-                final String msg = Messages.getString("vfs.impl/skipping-provider.debug",
-                    classname, requiredClass);
-                VfsLog.debug(getLogger(), getLogger(), msg);
-                return;
-            }
-        }
-
-        // Create and register the provider
-        final FileProvider provider = (FileProvider) createInstance(classname);
-        final String[] schemas = getSchemas(providerDef);
-        if (schemas.length > 0)
-        {
-            addProvider(schemas, provider);
-        }
-
-        // Set as default, if required
-        if (isDefault)
-        {
-            setDefaultProvider(provider);
-        }
-    }
-
-    /**
-     * Adds a operationProvider from a operationProvider definition.
-     */
-    private void addOperationProvider(final Element providerDef) throws FileSystemException
-    {
-        final String classname = providerDef.getAttribute("class-name");
-
-        // Attach only to available schemas
-        final String[] schemas = getSchemas(providerDef);
-        for (final String schema : schemas)
-        {
-            if (hasProvider(schema))
-            {
-                final FileOperationProvider operationProvider = (FileOperationProvider) createInstance(classname);
-                addOperationProvider(schema, operationProvider);
-            }
-        }
-    }
-
-    /**
-     * Tests if a class is available.
-     */
-    private boolean findClass(final String className)
-    {
-        try
-        {
-            loadClass(className);
-            return true;
-        }
-        catch (final ClassNotFoundException e)
-        {
-            return false;
-        }
-    }
-
-    /**
-     * Extracts the required classes from a provider definition.
-     */
-    private String[] getRequiredClasses(final Element providerDef)
-    {
-        final ArrayList<String> classes = new ArrayList<String>();
-        final NodeList deps = providerDef.getElementsByTagName("if-available");
-        final int count = deps.getLength();
-        for (int i = 0; i < count; i++)
-        {
-            final Element dep = (Element) deps.item(i);
-            final String className = dep.getAttribute("class-name");
-            if (className != null && className.length() > 0)
-            {
-                classes.add(className);
-            }
-        }
-        return classes.toArray(new String[classes.size()]);
-    }
-
-    /**
-     * Extracts the required schemes from a provider definition.
-     */
-    private String[] getRequiredSchemes(final Element providerDef)
-    {
-        final ArrayList<String> schemes = new ArrayList<String>();
-        final NodeList deps = providerDef.getElementsByTagName("if-available");
-        final int count = deps.getLength();
-        for (int i = 0; i < count; i++)
-        {
-            final Element dep = (Element) deps.item(i);
-            final String scheme = dep.getAttribute("scheme");
-            if (scheme != null && scheme.length() > 0)
-            {
-                schemes.add(scheme);
-            }
-        }
-        return schemes.toArray(new String[schemes.size()]);
-    }
-
-    /**
-     * Extracts the schema names from a provider definition.
-     */
-    private String[] getSchemas(final Element provider)
-    {
-        final ArrayList<String> schemas = new ArrayList<String>();
-        final NodeList schemaElements = provider.getElementsByTagName("scheme");
-        final int count = schemaElements.getLength();
-        for (int i = 0; i < count; i++)
-        {
-            final Element scheme = (Element) schemaElements.item(i);
-            schemas.add(scheme.getAttribute("name"));
-        }
-        return schemas.toArray(new String[schemas.size()]);
-    }
-
-    /**
-     * Creates a provider.
-     */
-    private Object createInstance(final String className)
-        throws FileSystemException
-    {
-        try
-        {
-            Class<?> clazz = loadClass(className);
-            return clazz.newInstance();
-        }
-        catch (final Exception e)
-        {
-            throw new FileSystemException("vfs.impl/create-provider.error", className, e);
-        }
-    }
-
-    /**
-     * Load a class from different class loaders.
-     * @throws ClassNotFoundException if last {@code loadClass} failed.
-     * @see #findClassLoader()
-     */
-    private Class< ? > loadClass(String className) throws ClassNotFoundException
-    {
-        try
-        {
-            return findClassLoader().loadClass(className);
-        }
-        catch (final ClassNotFoundException e)
-        {
-            return getClass().getClassLoader().loadClass(className);
-        }
-    }
-
-    /**
-     * Resolve resources from different class loaders.
-     * @throws IOException if {@code getResource} failed.
-     * @see #findClassLoader()
-     */
-    private Enumeration<URL> loadResources(String name) throws IOException
-    {
-        Enumeration<URL> res = findClassLoader().getResources(name);
-        if (res == null || !res.hasMoreElements())
-        {
-            res = getClass().getClassLoader().getResources(name);
-        }
-        return res;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/SynchronizedFileObject.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/SynchronizedFileObject.java
deleted file mode 100644
index a65023f..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/SynchronizedFileObject.java
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.util.List;
-
-import org.apache.commons.vfs2.FileContent;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSelector;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.NameScope;
-
-/**
- * This decorator synchronize all access to the FileObject.
- */
-public class SynchronizedFileObject extends DecoratedFileObject
-{
-    public SynchronizedFileObject(final FileObject fileObject)
-    {
-        super(fileObject);
-    }
-
-    @Override
-    public void close() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            super.close();
-        }
-    }
-
-    @Override
-    public void copyFrom(final FileObject srcFile, final FileSelector selector) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            super.copyFrom(srcFile, selector);
-        }
-    }
-
-    @Override
-    public void createFile() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            super.createFile();
-        }
-    }
-
-    @Override
-    public void createFolder() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            super.createFolder();
-        }
-    }
-
-    @Override
-    public boolean delete() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.delete();
-        }
-    }
-
-    @Override
-    public int delete(final FileSelector selector) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.delete(selector);
-        }
-    }
-
-    @Override
-    public boolean exists() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.exists();
-        }
-    }
-
-    @Override
-    public void findFiles(final FileSelector selector, final boolean depthwise, final List<FileObject> selected)
-            throws FileSystemException
-    {
-        synchronized (this)
-        {
-            super.findFiles(selector, depthwise, selected);
-        }
-    }
-
-    @Override
-    public FileObject[] findFiles(final FileSelector selector) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.findFiles(selector);
-        }
-    }
-
-    @Override
-    public FileObject getChild(final String name) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.getChild(name);
-        }
-    }
-
-    @Override
-    public FileObject[] getChildren() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.getChildren();
-        }
-    }
-
-    @Override
-    public FileContent getContent() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.getContent();
-        }
-    }
-
-    @Override
-    public FileType getType() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.getType();
-        }
-    }
-
-    @Override
-    public boolean isHidden() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.isHidden();
-        }
-    }
-
-    @Override
-    public boolean isReadable() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.isReadable();
-        }
-    }
-
-    @Override
-    public boolean isWriteable() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.isWriteable();
-        }
-    }
-
-    @Override
-    public boolean isExecutable() throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.isExecutable();
-        }
-    }
-
-    @Override
-    public boolean setReadable(final boolean readable, final boolean ownerOnly) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.setReadable(readable, ownerOnly);
-        }
-    }
-
-    @Override
-    public boolean setWritable(final boolean writable, final boolean ownerOnly) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.setWritable(writable, ownerOnly);
-        }
-    }
-
-    @Override
-    public boolean setExecutable(final boolean executable, final boolean ownerOnly) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.setExecutable(executable, ownerOnly);
-        }
-    }
-
-    @Override
-    public void moveTo(final FileObject destFile) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            super.moveTo(destFile);
-        }
-    }
-
-    @Override
-    public FileObject resolveFile(final String name, final NameScope scope) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.resolveFile(name, scope);
-        }
-    }
-
-    @Override
-    public FileObject resolveFile(final String path) throws FileSystemException
-    {
-        synchronized (this)
-        {
-            return super.resolveFile(path);
-        }
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/URLStreamHandlerProxy.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/URLStreamHandlerProxy.java
deleted file mode 100644
index ded84b4..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/URLStreamHandlerProxy.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.net.URLStreamHandler;
-
-/**
- * A proxy for URLs that are supported by the standard stream handler factory.
- */
-class URLStreamHandlerProxy
-    extends URLStreamHandler
-{
-    @Override
-    protected URLConnection openConnection(final URL url)
-        throws IOException
-    {
-        final URL proxyURL = new URL(url.toExternalForm());
-        return proxyURL.openConnection();
-    }
-
-    @Override
-    protected void parseURL(final URL u,
-                            final String spec,
-                            final int start,
-                            final int limit)
-    {
-        try
-        {
-            final URL url = new URL(u, spec);
-            setURL(u, url.getProtocol(), url.getHost(),
-                url.getPort(), url.getAuthority(), url.getUserInfo(),
-                url.getFile(), url.getQuery(), url.getRef());
-        }
-        catch (final MalformedURLException mue)
-        {
-            //We retrow this as a simple runtime exception.
-            //It is retrown in URL as a MalformedURLException anyway.
-            throw new RuntimeException(mue.getMessage());
-        }
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java
deleted file mode 100644
index e5e07dc..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VFSClassLoader.java
+++ /dev/null
@@ -1,419 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.io.IOException;
-import java.net.URL;
-import java.security.CodeSource;
-import java.security.Permission;
-import java.security.PermissionCollection;
-import java.security.Permissions;
-import java.security.SecureClassLoader;
-import java.security.cert.Certificate;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.jar.Attributes;
-import java.util.jar.Attributes.Name;
-
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemManager;
-import org.apache.commons.vfs2.NameScope;
-
-
-/**
- * A class loader that can load classes and resources from a search path.
- * <p>
- * The search path can consist of VFS FileObjects referring both to folders
- * and JAR files. Any FileObject of type FileType.FILE is assumed to be a JAR and
- * is opened by creating a layered file system with the "jar" scheme.
- * <p>
- * TODO - Test this with signed Jars and a SecurityManager.
- *
- * @see FileSystemManager#createFileSystem
- */
-public class VFSClassLoader extends SecureClassLoader
-{
-    private final ArrayList<FileObject> resources = new ArrayList<FileObject>();
-
-    /**
-     * Constructors a new VFSClassLoader for the given file.
-     *
-     * @param file    the file to load the classes and resources from.
-     * @param manager the FileManager to use when trying create a layered Jar file
-     *                system.
-     * @throws FileSystemException if an error occurs.
-     */
-    public VFSClassLoader(final FileObject file,
-                          final FileSystemManager manager)
-        throws FileSystemException
-    {
-        this(new FileObject[]{file}, manager, null);
-    }
-
-    /**
-     * Constructors a new VFSClassLoader for the given file.
-     *
-     * @param file    the file to load the classes and resources from.
-     * @param manager the FileManager to use when trying create a layered Jar file
-     *                system.
-     * @param parent  the parent class loader for delegation.
-     * @throws FileSystemException if an error occurs.
-     */
-    public VFSClassLoader(final FileObject file,
-                          final FileSystemManager manager,
-                          final ClassLoader parent)
-        throws FileSystemException
-    {
-        this(new FileObject[]{file}, manager, parent);
-    }
-
-    /**
-     * Constructors a new VFSClassLoader for the given files.  The files will
-     * be searched in the order specified.
-     *
-     * @param files   the files to load the classes and resources from.
-     * @param manager the FileManager to use when trying create a layered Jar file
-     *                system.
-     * @throws FileSystemException if an error occurs.
-     */
-    public VFSClassLoader(final FileObject[] files,
-                          final FileSystemManager manager)
-        throws FileSystemException
-    {
-        this(files, manager, null);
-    }
-
-    /**
-     * Constructors a new VFSClassLoader for the given FileObjects.
-     * The FileObjects will be searched in the order specified.
-     *
-     * @param files   the FileObjects to load the classes and resources from.
-     * @param manager the FileManager to use when trying create a layered Jar file
-     *                system.
-     * @param parent  the parent class loader for delegation.
-     * @throws FileSystemException if an error occurs.
-     */
-    public VFSClassLoader(final FileObject[] files,
-                          final FileSystemManager manager,
-                          final ClassLoader parent) throws FileSystemException
-    {
-        super(parent);
-        addFileObjects(manager, files);
-    }
-
-    /**
-     * Provide access to the file objects this class loader represents.
-     *
-     * @return An array of FileObjects.
-     * @since 2.0
-     */
-    public FileObject[] getFileObjects()
-    {
-        return resources.toArray(new FileObject[resources.size()]);
-    }
-
-    /**
-     * Appends the specified FileObjects to the list of FileObjects to search
-     * for classes and resources.
-     *
-     * @param manager The FileSystemManager.
-     * @param files the FileObjects to append to the search path.
-     * @throws FileSystemException if an error occurs.
-     */
-    private void addFileObjects(final FileSystemManager manager,
-                                final FileObject[] files) throws FileSystemException
-    {
-        for (FileObject file : files)
-        {
-            if (!file.exists())
-            {
-                // Does not exist - skip
-                continue;
-            }
-
-            // TODO - use federation instead
-            if (manager.canCreateFileSystem(file))
-            {
-                // Use contents of the file
-                file = manager.createFileSystem(file);
-            }
-
-            resources.add(file);
-        }
-    }
-
-    /**
-     * Finds and loads the class with the specified name from the search
-     * path.
-     *
-     * @throws ClassNotFoundException if the class is not found.
-     */
-    @Override
-    protected Class<?> findClass(final String name) throws ClassNotFoundException
-    {
-        try
-        {
-            final String path = name.replace('.', '/').concat(".class");
-            final Resource res = loadResource(path);
-            if (res == null)
-            {
-                throw new ClassNotFoundException(name);
-            }
-            return defineClass(name, res);
-        }
-        catch (final IOException ioe)
-        {
-            throw new ClassNotFoundException(name, ioe);
-        }
-    }
-
-    /**
-     * Loads and verifies the class with name and located with res.
-     */
-    private Class<?> defineClass(final String name, final Resource res)
-        throws IOException
-    {
-        final URL url = res.getCodeSourceURL();
-        final String pkgName = res.getPackageName();
-        if (pkgName != null)
-        {
-            final Package pkg = getPackage(pkgName);
-            if (pkg != null)
-            {
-                if (pkg.isSealed())
-                {
-                    if (!pkg.isSealed(url))
-                    {
-                        throw new FileSystemException("vfs.impl/pkg-sealed-other-url", pkgName);
-                    }
-                }
-                else
-                {
-                    if (isSealed(res))
-                    {
-                        throw new FileSystemException("vfs.impl/pkg-sealing-unsealed", pkgName);
-                    }
-                }
-            }
-            else
-            {
-                definePackage(pkgName, res);
-            }
-        }
-
-        final byte[] bytes = res.getBytes();
-        final Certificate[] certs =
-            res.getFileObject().getContent().getCertificates();
-        final CodeSource cs = new CodeSource(url, certs);
-        return defineClass(name, bytes, 0, bytes.length, cs);
-    }
-
-    /**
-     * Returns true if the we should seal the package where res resides.
-     */
-    private boolean isSealed(final Resource res)
-        throws FileSystemException
-    {
-        final String sealed = res.getPackageAttribute(Attributes.Name.SEALED);
-        return "true".equalsIgnoreCase(sealed);
-    }
-
-    /**
-     * Reads attributes for the package and defines it.
-     */
-    private Package definePackage(final String name,
-                                  final Resource res)
-        throws FileSystemException
-    {
-        // TODO - check for MANIFEST_ATTRIBUTES capability first
-        final String specTitle = res.getPackageAttribute(Name.SPECIFICATION_TITLE);
-        final String specVendor = res.getPackageAttribute(Attributes.Name.SPECIFICATION_VENDOR);
-        final String specVersion = res.getPackageAttribute(Name.SPECIFICATION_VERSION);
-        final String implTitle = res.getPackageAttribute(Name.IMPLEMENTATION_TITLE);
-        final String implVendor = res.getPackageAttribute(Name.IMPLEMENTATION_VENDOR);
-        final String implVersion = res.getPackageAttribute(Name.IMPLEMENTATION_VERSION);
-
-        final URL sealBase;
-        if (isSealed(res))
-        {
-            sealBase = res.getCodeSourceURL();
-        }
-        else
-        {
-            sealBase = null;
-        }
-
-        return definePackage(name, specTitle, specVersion, specVendor,
-            implTitle, implVersion, implVendor, sealBase);
-    }
-
-    /**
-     * Calls super.getPermissions both for the code source and also
-     * adds the permissions granted to the parent layers.
-     * @param cs the CodeSource.
-     * @return The PermissionCollections.
-     */
-    @Override
-    protected PermissionCollection getPermissions(final CodeSource cs)
-    {
-        try
-        {
-            final String url = cs.getLocation().toString();
-            final FileObject file = lookupFileObject(url);
-            if (file == null)
-            {
-                return super.getPermissions(cs);
-            }
-
-            final FileObject parentLayer = file.getFileSystem().getParentLayer();
-            if (parentLayer == null)
-            {
-                return super.getPermissions(cs);
-            }
-
-            final Permissions combi = new Permissions();
-            PermissionCollection permCollect = super.getPermissions(cs);
-            copyPermissions(permCollect, combi);
-
-            for (FileObject parent = parentLayer;
-                 parent != null;
-                 parent = parent.getFileSystem().getParentLayer())
-            {
-                final CodeSource parentcs =
-                    new CodeSource(parent.getURL(),
-                        parent.getContent().getCertificates());
-                permCollect = super.getPermissions(parentcs);
-                copyPermissions(permCollect, combi);
-            }
-
-            return combi;
-        }
-        catch (final FileSystemException fse)
-        {
-            throw new SecurityException(fse.getMessage());
-        }
-    }
-
-    /**
-     * Copies the permissions from src to dest.
-     * @param src The source PermissionCollection.
-     * @param dest The destination PermissionCollection.
-     */
-    protected void copyPermissions(final PermissionCollection src,
-                                   final PermissionCollection dest)
-    {
-        for (final Enumeration<Permission> elem = src.elements(); elem.hasMoreElements();)
-        {
-            final Permission permission = elem.nextElement();
-            dest.add(permission);
-        }
-    }
-
-    /**
-     * Does a reverse lookup to find the FileObject when we only have the
-     * URL.
-     */
-    private FileObject lookupFileObject(final String name)
-    {
-        final Iterator<FileObject> it = resources.iterator();
-        while (it.hasNext())
-        {
-            final FileObject object = it.next();
-            if (name.equals(object.getName().getURI()))
-            {
-                return object;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Finds the resource with the specified name from the search path.
-     * This returns null if the resource is not found.
-     * @param name The resource name.
-     * @return The URL that matches the resource.
-     */
-    @Override
-    protected URL findResource(final String name)
-    {
-        try
-        {
-            final Resource res = loadResource(name);
-            if (res != null)
-            {
-                return res.getURL();
-            }
-            return null;
-        }
-        catch (final Exception ignored)
-        {
-            return null; // TODO: report?
-        }
-    }
-
-    /**
-     * Returns an Enumeration of all the resources in the search path
-     * with the specified name.
-     * <p>
-     * Gets called from {@link ClassLoader#getResources(String)} after
-     * parent class loader was questioned.
-     *
-     * @param name The resources to find.
-     * @return An Enumeration of the resources associated with the name.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    protected Enumeration<URL> findResources(final String name) throws IOException
-    {
-        final List<URL> result = new ArrayList<URL>(2);
-
-        for (FileObject baseFile : resources)
-        {
-            final FileObject file = baseFile.resolveFile(name, NameScope.DESCENDENT_OR_SELF);
-            if (file.exists())
-            {
-                result.add(new Resource(name, baseFile, file).getURL());
-            }
-        }
-
-        return Collections.enumeration(result);
-    }
-
-    /**
-     * Searches through the search path of for the first class or resource
-     * with specified name.
-     * @param name The resource to load.
-     * @return The Resource.
-     * @throws FileSystemException if an error occurs.
-     */
-    private Resource loadResource(final String name) throws FileSystemException
-    {
-        for (final FileObject baseFile : resources)
-        {
-            final FileObject file = baseFile.resolveFile(name, NameScope.DESCENDENT_OR_SELF);
-            if (file.exists())
-            {
-                return new Resource(name, baseFile, file);
-            }
-        }
-        return null;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileName.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileName.java
deleted file mode 100644
index c3defbf..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileName.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.provider.AbstractFileName;
-
-/**
- * A simple Filename to hold the scheme for to be created virtual filesytsem.
- */
-public class VirtualFileName extends AbstractFileName
-{
-    public VirtualFileName(final String scheme, final String absPath, final FileType type)
-    {
-        super(scheme, absPath, type);
-    }
-
-    @Override
-    public FileName createName(final String absPath, final FileType type)
-    {
-        return new VirtualFileName(getScheme(), absPath, type);
-    }
-
-    @Override
-    protected void appendRootUri(final StringBuilder buffer, final boolean addPassword)
-    {
-        buffer.append(getScheme());
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileProvider.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileProvider.java
deleted file mode 100644
index 3556b63..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileProvider.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystem;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.provider.AbstractFileName;
-import org.apache.commons.vfs2.provider.AbstractFileSystem;
-import org.apache.commons.vfs2.provider.AbstractVfsContainer;
-
-
-/**
- * A virtual filesystem provider.
- */
-public class VirtualFileProvider extends AbstractVfsContainer
-{
-    /**
-     * Creates a virtual file system, with the supplied file as its root.
-     *
-     * @param rootFile The root of the file system.
-     * @return A FileObject in the FileSystem.
-     * @throws FileSystemException if an error occurs.
-     */
-    public FileObject createFileSystem(final FileObject rootFile) throws FileSystemException
-    {
-        final AbstractFileName rootName = (AbstractFileName)
-            getContext().getFileSystemManager().resolveName(rootFile.getName(), FileName.ROOT_PATH);
-        final VirtualFileSystem fs = new VirtualFileSystem(rootName, rootFile.getFileSystem().getFileSystemOptions());
-        addComponent(fs);
-        fs.addJunction(FileName.ROOT_PATH, rootFile);
-        return fs.getRoot();
-    }
-
-    /**
-     * Creates an empty virtual file system.
-     *
-     * @param rootUri The root of the file system.
-     * @return A FileObject in the FileSystem.
-     * @throws FileSystemException if an error occurs.
-     */
-    public FileObject createFileSystem(final String rootUri) throws FileSystemException
-    {
-        final AbstractFileName rootName =
-            new VirtualFileName(rootUri, FileName.ROOT_PATH, FileType.FOLDER);
-        final VirtualFileSystem fs = new VirtualFileSystem(rootName, null);
-        addComponent(fs);
-        return fs.getRoot();
-    }
-
-    /**
-     * Close a VirtualFileSystem by removing it from the
-     * {@code #components} list of this provider.
-     * <p>
-     * This gets called from DefaultFileManager#_closeFileSystem.
-     *
-     * @param filesystem the file system remembered by this provider.
-     */
-    void closeFileSystem(final FileSystem filesystem)
-    {
-        final AbstractFileSystem fs = (AbstractFileSystem) filesystem;
-
-        removeComponent(fs);
-        fs.close();
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileSystem.java b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileSystem.java
deleted file mode 100644
index 22cc39a..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/VirtualFileSystem.java
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * 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.vfs2.impl;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.commons.vfs2.Capability;
-import org.apache.commons.vfs2.FileName;
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemOptions;
-import org.apache.commons.vfs2.FileType;
-import org.apache.commons.vfs2.NameScope;
-import org.apache.commons.vfs2.provider.AbstractFileName;
-import org.apache.commons.vfs2.provider.AbstractFileSystem;
-import org.apache.commons.vfs2.provider.DelegateFileObject;
-
-/**
- * A logical file system, made up of set of junctions, or links, to files from
- * other file systems.
- * <p>
- * TODO - Handle nested junctions.
- */
-public class VirtualFileSystem extends AbstractFileSystem
-{
-    private final Map<FileName, FileObject> junctions = new HashMap<FileName, FileObject>();
-
-    public VirtualFileSystem(final AbstractFileName rootName, final FileSystemOptions fileSystemOptions)
-    {
-        super(rootName, null, fileSystemOptions);
-    }
-
-    /**
-     * Adds the capabilities of this file system.
-     */
-    @Override
-    protected void addCapabilities(final Collection<Capability> caps)
-    {
-        // TODO - this isn't really true
-        caps.add(Capability.ATTRIBUTES);
-        caps.add(Capability.CREATE);
-        caps.add(Capability.DELETE);
-        caps.add(Capability.GET_TYPE);
-        caps.add(Capability.JUNCTIONS);
-        caps.add(Capability.GET_LAST_MODIFIED);
-        caps.add(Capability.SET_LAST_MODIFIED_FILE);
-        caps.add(Capability.SET_LAST_MODIFIED_FOLDER);
-        caps.add(Capability.LIST_CHILDREN);
-        caps.add(Capability.READ_CONTENT);
-        caps.add(Capability.SIGNING);
-        caps.add(Capability.WRITE_CONTENT);
-        caps.add(Capability.APPEND_CONTENT);
-    }
-
-    /**
-     * Creates a file object.  This method is called only if the requested
-     * file is not cached.
-     */
-    @Override
-    protected FileObject createFile(final AbstractFileName name) throws Exception
-    {
-        // Find the file that the name points to
-        final FileName junctionPoint = getJunctionForFile(name);
-        final FileObject file;
-        if (junctionPoint != null)
-        {
-            // Resolve the real file
-            final FileObject junctionFile = junctions.get(junctionPoint);
-            final String relName = junctionPoint.getRelativeName(name);
-            file = junctionFile.resolveFile(relName, NameScope.DESCENDENT_OR_SELF);
-        }
-        else
-        {
-            file = null;
-        }
-
-        // Return a wrapper around the file
-        return new DelegateFileObject(name, this, file);
-    }
-
-    /**
-     * Adds a junction to this file system.
-     * @param junctionPoint The location of the junction.
-     * @param targetFile The target file to base the junction on.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public void addJunction(final String junctionPoint,
-                            final FileObject targetFile)
-        throws FileSystemException
-    {
-        final FileName junctionName = getFileSystemManager().resolveName(getRootName(), junctionPoint);
-
-        // Check for nested junction - these are not supported yet
-        if (getJunctionForFile(junctionName) != null)
-        {
-            throw new FileSystemException("vfs.impl/nested-junction.error", junctionName);
-        }
-
-        try
-        {
-            // Add to junction table
-            junctions.put(junctionName, targetFile);
-
-            // Attach to file
-            final DelegateFileObject junctionFile = (DelegateFileObject) getFileFromCache(junctionName);
-            if (junctionFile != null)
-            {
-                junctionFile.setFile(targetFile);
-            }
-
-            // Create ancestors of junction point
-            FileName childName = junctionName;
-            boolean done = false;
-            for (AbstractFileName parentName = (AbstractFileName) childName.getParent();
-                 !done && parentName != null;
-                 childName = parentName, parentName = (AbstractFileName) parentName.getParent())
-            {
-                DelegateFileObject file = (DelegateFileObject) getFileFromCache(parentName);
-                if (file == null)
-                {
-                    file = new DelegateFileObject(parentName, this, null);
-                    putFileToCache(file);
-                }
-                else
-                {
-                    done = file.exists();
-                }
-
-                // As this is the parent of our junction it has to be a folder
-                file.attachChild(childName, FileType.FOLDER);
-            }
-
-            // TODO - attach all cached children of the junction point to their real file
-        }
-        catch (final Exception e)
-        {
-            throw new FileSystemException("vfs.impl/create-junction.error", junctionName, e);
-        }
-    }
-
-    /**
-     * Removes a junction from this file system.
-     * @param junctionPoint The junction to remove.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public void removeJunction(final String junctionPoint)
-        throws FileSystemException
-    {
-        final FileName junctionName = getFileSystemManager().resolveName(getRootName(), junctionPoint);
-        junctions.remove(junctionName);
-
-        // TODO - remove from parents of junction point
-        // TODO - detach all cached children of the junction point from their real file
-    }
-
-    /**
-     * Locates the junction point for the junction containing the given file.
-     * @param name The FileName.
-     * @return the FileName where the junction occurs.
-     */
-    private FileName getJunctionForFile(final FileName name)
-    {
-        if (junctions.containsKey(name))
-        {
-            // The name points to the junction point directly
-            return name;
-        }
-
-        // Find matching junction
-        for (final FileName junctionPoint : junctions.keySet())
-        {
-            if (junctionPoint.isDescendent(name))
-            {
-                return junctionPoint;
-            }
-        }
-
-        // None
-        return null;
-    }
-
-    @Override
-    public void close()
-    {
-        super.close();
-        junctions.clear();
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/package.html b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/package.html
deleted file mode 100644
index 5fd7b1a..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-    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.
--->
-<body>
-<p>The standard VFS implementation.</p>
-</body>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/providers.xml b/trunk/core/src/main/java/org/apache/commons/vfs2/impl/providers.xml
deleted file mode 100644
index f8d571c..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/impl/providers.xml
+++ /dev/null
@@ -1,144 +0,0 @@
-<!--
-    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.
--->
-<providers>
-    <default-provider class-name="org.apache.commons.vfs2.provider.url.UrlFileProvider">
-    </default-provider>
-    <provider class-name="org.apache.commons.vfs2.provider.local.DefaultLocalFileProvider">
-        <scheme name="file"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.zip.ZipFileProvider">
-        <scheme name="zip"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.tar.TarFileProvider">
-        <scheme name="tar"/>
-        <if-available class-name="org.apache.commons.compress.archivers.tar.TarArchiveOutputStream"/>
-    </provider>
-
-    <provider class-name="org.apache.commons.vfs2.provider.bzip2.Bzip2FileProvider">
-        <scheme name="bz2"/>
-        <if-available class-name="org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.gzip.GzipFileProvider">
-        <scheme name="gz"/>
-    </provider>
-
-    <provider class-name="org.apache.commons.vfs2.provider.jar.JarFileProvider">
-        <scheme name="jar"/>
-        <scheme name="sar"/>
-        <scheme name="ear"/>
-        <scheme name="par"/>
-        <scheme name="ejb3"/>
-        <scheme name="war"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.temp.TemporaryFileProvider">
-        <scheme name="tmp"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.ftp.FtpFileProvider">
-        <scheme name="ftp"/>
-        <if-available class-name="org.apache.commons.net.ftp.FTPFile"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.ftps.FtpsFileProvider">
-        <scheme name="ftps"/>
-        <if-available class-name="org.apache.commons.net.ftp.FTPFile"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.http.HttpFileProvider">
-        <scheme name="http"/>
-        <if-available class-name="org.apache.commons.httpclient.HttpClient"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.https.HttpsFileProvider">
-        <scheme name="https"/>
-        <if-available class-name="org.apache.commons.httpclient.HttpClient"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.sftp.SftpFileProvider">
-        <scheme name="sftp"/>
-        <if-available class-name="javax.crypto.Cipher"/>
-        <if-available class-name="com.jcraft.jsch.JSch"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.res.ResourceFileProvider">
-        <scheme name="res"/>
-    </provider>
-        <provider class-name="org.apache.commons.vfs2.provider.webdav.WebdavFileProvider">
-        <scheme name="webdav"/>
-        <if-available class-name="org.apache.commons.httpclient.HttpClient"/>
-        <if-available class-name="org.apache.jackrabbit.webdav.client.methods.DavMethod"/>
-    </provider>
-    <!--
-    <provider class-name="org.apache.commons.vfs2.provider.svn.SvnFileProvider">
-        <scheme name="svnhttps"/>
-    </provider>
-    -->
-    <!--
-        <provider class-name="org.apache.commons.vfs2.provider.tar.TgzFileProvider">
-            <scheme name="tgz"/>
-            <if-available scheme="gz"/>
-            <if-available scheme="tar"/>
-        </provider>
-        <provider class-name="org.apache.commons.vfs2.provider.tar.Tbz2FileProvider">
-            <scheme name="tbz2"/>
-            <if-available scheme="bz2"/>
-            <if-available scheme="tar"/>
-        </provider>
-    -->
-    <provider class-name="org.apache.commons.vfs2.provider.tar.TarFileProvider">
-        <scheme name="tgz"/>
-        <if-available scheme="gz"/>
-        <if-available scheme="tar"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.tar.TarFileProvider">
-        <scheme name="tbz2"/>
-        <if-available scheme="bz2"/>
-        <if-available scheme="tar"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.ram.RamFileProvider">
-        <scheme name="ram"/>
-    </provider>
-    <provider class-name="org.apache.commons.vfs2.provider.hdfs.HdfsFileProvider">
-        <scheme name="hdfs"/>
-        <if-available class-name="org.apache.hadoop.fs.FileSystem"/>
-    </provider>
-
-    <extension-map extension="zip" scheme="zip"/>
-    <extension-map extension="tar" scheme="tar"/>
-    <mime-type-map mime-type="application/zip" scheme="zip"/>
-    <mime-type-map mime-type="application/x-tar" scheme="tar"/>
-    <mime-type-map mime-type="application/x-gzip" scheme="gz"/>
-    <!--
-    <mime-type-map mime-type="application/x-tgz" scheme="tgz"/>
-    -->
-    <extension-map extension="jar" scheme="jar"/>
-    <extension-map extension="bz2" scheme="bz2"/>
-    <extension-map extension="gz" scheme="gz"/>
-    <!--
-    <extension-map extension="tgz" scheme="tgz"/>
-    <extension-map extension="tbz2" scheme="tbz2"/>
-    -->
-    <extension-map extension="tgz" scheme="tar"/>
-    <extension-map extension="tbz2" scheme="tar"/>
-
-    <!--
-    <filter-map class-name="org.apache.commons.vfs2.content.bzip2.Bzip2Compress">
-        <extension name="bz2"/>
-        <extension name="tbz2"/>
-        <if-available class-name="org.apache.commons.compress.bzip2.CBZip2InputStream"/>
-    </filter-map>
-    <filter-map class-name="org.apache.commons.vfs2.content.gzip.GzipCompress">
-        <extension name="gz"/>
-        <extension name="tgz"/>
-        <mime-type name="application/x-tgz" />
-    </filter-map>
-    -->
-</providers>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperation.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperation.java
deleted file mode 100644
index 41c3c04..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperation.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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.vfs2.operations;
-
-import org.apache.commons.vfs2.FileObject;
-
-/**
- *
- * @since 0.1
- */
-public abstract class AbstractFileOperation implements FileOperation
-{
-    /**
-     * FileObject which the FileOperation is operate on.
-     */
-    private final FileObject fileObject;
-
-    /**
-     * @param file The FileObject.
-     */
-    public AbstractFileOperation(final FileObject file)
-    {
-        fileObject = file;
-    }
-
-    /**
-     * @return an instance of FileObject which this FileOperation is operate on.
-     */
-    protected FileObject getFileObject()
-    {
-        return fileObject;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java
deleted file mode 100644
index 5707fa4..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/AbstractFileOperationProvider.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * 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.vfs2.operations;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-
-
-/**
- *
- * @since 0.1
- */
-public abstract class AbstractFileOperationProvider implements FileOperationProvider
-{
-
-    /**
-     * Available operations. Operations could be registered for different schemes.
-     * Some operations can work only for "file" scheme, other - for "svnhttp(s)",
-     * "svn", "svnssh", but not for "file", etc. The Map has scheme as a key and
-     * Collection of operations that are available for that scheme.
-     */
-    private final Collection<Class<? extends FileOperation>> operations =
-        new ArrayList<Class<? extends FileOperation>>();
-
-    /**
-     * Gather available operations for the specified FileObject and put them into
-     * specified operationsList.
-     *
-     * @param operationsList
-     *            the list of available operations for the specified FileObject.
-     *            The operationList contains classes of available operations, e.g.
-     *            Class objects.
-     * @param file
-     *            the FileObject for which we want to get the list of available
-     *            operations.
-     * @throws FileSystemException if list of operations cannot be retrieved.
-     */
-    @Override
-    public final void collectOperations(final Collection<Class<? extends FileOperation>> operationsList,
-            final FileObject file) throws FileSystemException
-    {
-        doCollectOperations(operations, operationsList, file);
-    }
-
-    /**
-     * Gather available operations for the specified FileObject and put them into
-     * specified operationsList.
-     *
-     * @param availableOperations
-     *            the list of available operations for the specified FileObject.
-     * @param resultList
-     *            List to be filled with applicable operations.
-     * @param file
-     *            the FileObject for which we want to get the list of available
-     *            operations.
-     * @throws FileSystemException if list of operations cannot be retrieved.
-     * @see #collectOperations(Collection operationsList, FileObject file)
-     */
-    protected abstract void doCollectOperations(
-            final Collection<Class<? extends FileOperation>> availableOperations,
-            final Collection<Class<? extends FileOperation>> resultList,
-            final FileObject file) throws FileSystemException;
-
-    /**
-     * @param file
-     *            the FileObject for which we need a operation.
-     * @param operationClass
-     *            the Class which instance we are needed.
-     * @return the required operation instance.
-     * @throws FileSystemException if operation cannot be retrieved.
-     */
-    @Override
-    public final FileOperation getOperation(final FileObject file, final Class<? extends FileOperation> operationClass)
-            throws FileSystemException
-    {
-        final Class<? extends FileOperation> implementation = lookupOperation(operationClass);
-
-        final FileOperation operationInstance = instantiateOperation(file, implementation);
-
-        return operationInstance;
-    }
-
-    /**
-     * Get operation instance for specified FileOperation subclass.
-     *
-     * @param file the file this operation should act on.
-     * @param operationClass the class of an file operation interface to instantiate.
-     * @return a new file operation
-     * @throws FileSystemException if operation cannot be instantiated.
-     */
-    protected abstract FileOperation instantiateOperation(final FileObject file,
-            final Class<? extends FileOperation> operationClass) throws FileSystemException;
-
-    /**
-     * Find class implementing a specific operation interface.
-     *
-     * @param operationClass the interface which is requested.
-     * @return never returns null
-     * @throws FileSystemException if operationClass is not a known FileOperation interface.
-     */
-    protected final Class<? extends FileOperation> lookupOperation(final Class<? extends FileOperation> operationClass)
-            throws FileSystemException
-    {
-        // check validity of passed class
-        if (!FileOperation.class.isAssignableFrom(operationClass))
-        {
-            throw new FileSystemException("vfs.operation/wrong-type.error", operationClass);
-        }
-
-        // find appropriate class
-        Class<? extends FileOperation> foundClass = null;
-        final Iterator<Class<? extends FileOperation>> iterator = operations.iterator();
-        while (iterator.hasNext())
-        {
-            final Class<? extends FileOperation> operation = iterator.next();
-            if (operationClass.isAssignableFrom(operation))
-            {
-                foundClass = operation;
-                break;
-            }
-        }
-
-        if (foundClass == null)
-        {
-            throw new FileSystemException("vfs.operation/not-found.error", operationClass);
-        }
-
-        return foundClass;
-    }
-
-    /**
-     * Add new FileOperation to list of known operations.
-     *
-     * @param operationClass a class implementing FileOperation.
-     * @throws FileSystemException if instances of the class cannot be assigned to FileOperation.
-     */
-    protected final void addOperation(final Class<? extends FileOperation> operationClass)
-            throws FileSystemException
-    {
-        // check validity of passed class
-        if (!FileOperation.class.isAssignableFrom(operationClass))
-        {
-            throw new FileSystemException("vfs.operation/cant-register.error", operationClass);
-        }
-
-        // ok, lets add it to the list
-        operations.add(operationClass);
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/DefaultFileOperations.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/DefaultFileOperations.java
deleted file mode 100644
index c92c1c8..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/DefaultFileOperations.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * 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.vfs2.operations;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-import org.apache.commons.vfs2.FileSystemManager;
-
-/**
- *
- * @since 0.1
- */
-public class DefaultFileOperations implements FileOperations
-{
-    /**
-     */
-    private final FileSystemManager fsmanager;
-
-    /**
-     */
-    private final FileObject fileObject;
-
-    /**
-     *
-     * @param file The file.
-     */
-    public DefaultFileOperations(final FileObject file)
-    {
-        fileObject = file;
-
-        fsmanager = file.getFileSystem().getFileSystemManager();
-    }
-
-    /**
-     * @return The operation classes.
-     * @throws FileSystemException If an error occurs.
-     */
-    @Override
-    public Class<? extends FileOperation>[] getOperations() throws FileSystemException
-    {
-
-        final String scheme = fileObject.getURL().getProtocol();
-        final FileOperationProvider[] providers = fsmanager
-                .getOperationProviders(scheme);
-
-        if (providers == null)
-        {
-            return null;
-        }
-
-        final List<Class<? extends FileOperation>> operations = new ArrayList<Class<? extends FileOperation>>();
-
-        for (final FileOperationProvider provider : providers)
-        {
-            provider.collectOperations(operations, fileObject);
-        }
-
-        @SuppressWarnings("unchecked")
-        final
-        Class<? extends FileOperation>[] array =
-            (Class<? extends FileOperation>[]) operations.toArray(new Class<?>[] {});
-        return array;
-    }
-
-    /**
-     * @param operationClass The Class that performs the operation.
-     * @return The FileOperation.
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public FileOperation getOperation(final Class<? extends FileOperation> operationClass)
-            throws FileSystemException
-    {
-
-        final String scheme = fileObject.getURL().getProtocol();
-        final FileOperationProvider[] providers = fsmanager
-                .getOperationProviders(scheme);
-
-        if (providers == null)
-        {
-            throw new FileSystemException(
-                    "vfs.operation/operation-not-supported.error", operationClass);
-        }
-
-        FileOperation resultOperation = null;
-
-        for (final FileOperationProvider provider : providers)
-        {
-            resultOperation = provider.getOperation(fileObject, operationClass);
-
-            if (resultOperation != null)
-            {
-                break;
-            }
-        }
-
-        if (resultOperation == null)
-        {
-            throw new FileSystemException(
-                    "vfs.operation/operation-not-supported.error", operationClass);
-        }
-
-        return resultOperation;
-    }
-
-    /**
-     * @param operationClass the operation's class.
-     * @return true if the operation of specified class is supported for current
-     *         FileObject and false otherwise.
-     *
-     * @throws FileSystemException if an error occurs.
-     */
-    @Override
-    public boolean hasOperation(final Class<? extends FileOperation> operationClass) throws FileSystemException
-    {
-        final Class<? extends FileOperation>[] operations = getOperations();
-        if (operations == null)
-        {
-            return false;
-        }
-
-        for (final Class<? extends FileOperation> operation : operations)
-        {
-            if (operationClass.isAssignableFrom(operation))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperation.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperation.java
deleted file mode 100644
index 2d4d883..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperation.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * 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.vfs2.operations;
-
-import org.apache.commons.vfs2.FileSystemException;
-
-/**
- * <p>
- * A FileOperation is an object that brings an extra function to a FileObject.
- * The VFS provides the basic functionality to deal with FileObject's. That is
- * create, delete, rename, copy, and so on functions. However, if you are working with
- * FileSystem and its files are, for example, under Version Control System (VCS)
- * you might want to get an access to the versioning framework and to be able to
- * manage your files regarding VCS (e.g. commit them, update, get logs, etc.).
- * Such type of extended functionality is provided by FileOperation.
- * </p>
- * <p>
- * The FileOperation interface is a genetic interface that should not be
- * implemented directly. It rather should be extended by other interfaces that
- * provide some concrete functions.
- * </p>
- * <p>
- * FileOperation is provided by
- *
- * @see FileOperationProvider Especially the FileOperationProvider is responsible
- *      for looking up and instantiating any concrete FileOperation.
- *      </p>
- *
- * @since 0.1
- */
-public interface FileOperation
-{
-
-    /**
-     * Performs necessary actions that are related to the concrete
-     * implementation of a FileOperation.
-     *
-     * @throws FileSystemException if an error occurs
-     */
-    void process() throws FileSystemException;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperationProvider.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperationProvider.java
deleted file mode 100644
index 70e1b97..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperationProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * 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.vfs2.operations;
-
-import java.util.Collection;
-
-import org.apache.commons.vfs2.FileObject;
-import org.apache.commons.vfs2.FileSystemException;
-
-/**
- * FileOperationProvider is responsible for dealing with FileOperation's.
- *
- * @since 0.1
- */
-public interface FileOperationProvider
-{
-
-    /**
-     * Gather available operations for the specified FileObject and put them into
-     * specified operationsList.
-     *
-     * @param operationsList
-     *            the list of available operations for the specified FileObject.
-     *            The operationList contains classes of available operations, e.g.
-     *            Class objects.
-     * @param file
-     *            the FileObject for which we want to get the list of available
-     *            operations.
-     *
-     * @throws FileSystemException
-     *             if list of operations cannot be retrieved.
-     */
-    void collectOperations(final Collection<Class<? extends FileOperation>> operationsList, final FileObject file)
-            throws FileSystemException;
-
-    /**
-     * Get implementation for a given FileObject and FileOperation interface.
-     *
-     * @param file
-     *            the FileObject for which we need a operation.
-     * @param operationClass
-     *            the Class which instance we are needed.
-     * @return the required operation instance.
-     *
-     * @throws FileSystemException
-     *             if operation cannot be retrieved.
-     */
-    FileOperation getOperation(final FileObject file, final Class<? extends FileOperation> operationClass)
-            throws FileSystemException;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperations.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperations.java
deleted file mode 100644
index b0360cc..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/FileOperations.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * 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.vfs2.operations;
-
-import org.apache.commons.vfs2.FileSystemException;
-
-/**
- * FileOperations interface provides API to work with operations.
- *
- * @see FileOperation on what a operation in the context of VFS is.
- *
- * @since 0.1
- */
-public interface FileOperations
-{
-    /**
-     * @return all operations associated with the fileObject
-     * @throws FileSystemException if an error occurs.
-     */
-    Class<? extends FileOperation>[] getOperations() throws FileSystemException;
-
-    /**
-     * @param operationClass the operation Class.
-     * @return a operation implementing the given {@code operationClass}
-     * @throws FileSystemException if an error occus.
-     */
-    FileOperation getOperation(Class<? extends FileOperation> operationClass) throws FileSystemException;
-
-    /**
-     * @param operationClass the operation Class.
-     * @return if a operation {@code operationClass} is available
-     * @throws FileSystemException if an error ocurs.
-     */
-    boolean hasOperation(Class<? extends FileOperation> operationClass) throws FileSystemException;
-}
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/package.html b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/package.html
deleted file mode 100644
index 242e71c..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/package.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!--
-    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.
--->
-<body>
-<p>VFS Operations handling.</p>
-</body>
diff --git a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/vcs/VcsAdd.java b/trunk/core/src/main/java/org/apache/commons/vfs2/operations/vcs/VcsAdd.java
deleted file mode 100644
index 0d67b79..0000000
--- a/trunk/core/src/main/java/org/apache/commons/vfs2/operations/vcs/VcsAdd.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * 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