You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2019/08/27 17:45:37 UTC

[commons-vfs] branch master updated: VFS-727: Replaced usage of VFS.getManager() for locally available FileSystemManager. (#70)

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git


The following commit(s) were added to refs/heads/master by this push:
     new 5c93c3c  VFS-727: Replaced usage of VFS.getManager() for locally available FileSystemManager. (#70)
5c93c3c is described below

commit 5c93c3c02a52518420d0b00c7d06778564c2daaf
Author: Michiel Hendriks <el...@users.noreply.github.com>
AuthorDate: Tue Aug 27 19:45:32 2019 +0200

    VFS-727: Replaced usage of VFS.getManager() for locally available FileSystemManager. (#70)
    
    * Replaced usage of VFS.getManager() for locally available FileSystemManager.
    
    Test cases made calls to the HostFileNameParser with a null context. So when
    the context is null it will fallback to the original VFS.getManager() call.
    
    * Code consistency: made local variable final.
    
    * Undo accidental code reformat
    
    * updated changes.xml
---
 .../commons/vfs2/provider/smb/SmbFileNameParser.java       |  2 +-
 .../commons/vfs2/provider/GenericURLFileNameParser.java    |  2 +-
 .../apache/commons/vfs2/provider/HostFileNameParser.java   | 14 +++++++++++---
 .../apache/commons/vfs2/provider/URLFileNameParser.java    |  2 +-
 src/changes/changes.xml                                    |  3 +++
 5 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileNameParser.java b/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileNameParser.java
index 3623b1c..261a3e7 100644
--- a/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileNameParser.java
+++ b/commons-vfs2-sandbox/src/main/java/org/apache/commons/vfs2/provider/smb/SmbFileNameParser.java
@@ -45,7 +45,7 @@ public class SmbFileNameParser extends URLFileNameParser {
         final StringBuilder name = new StringBuilder();
 
         // Extract the scheme and authority parts
-        final Authority auth = extractToPath(filename, name);
+        final Authority auth = extractToPath(context, filename, name);
 
         // extract domain
         String username = auth.getUserName();
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/GenericURLFileNameParser.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/GenericURLFileNameParser.java
index 81bb451..63ade7e 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/GenericURLFileNameParser.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/GenericURLFileNameParser.java
@@ -44,7 +44,7 @@ public class GenericURLFileNameParser extends HostFileNameParser {
         final StringBuilder name = new StringBuilder();
 
         // Extract the scheme and authority parts
-        final Authority auth = extractToPath(fileName, name);
+        final Authority auth = extractToPath(context, fileName, name);
 
         // Extract the queryString
         final String queryString = UriParser.extractQueryString(name);
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/HostFileNameParser.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/HostFileNameParser.java
index 08ead99..4e7f193 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/HostFileNameParser.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/HostFileNameParser.java
@@ -18,6 +18,7 @@ package org.apache.commons.vfs2.provider;
 
 import org.apache.commons.vfs2.FileName;
 import org.apache.commons.vfs2.FileSystemException;
+import org.apache.commons.vfs2.FileSystemManager;
 import org.apache.commons.vfs2.FileType;
 import org.apache.commons.vfs2.VFS;
 import org.apache.commons.vfs2.util.Cryptor;
@@ -49,7 +50,7 @@ public class HostFileNameParser extends AbstractFileNameParser {
         final StringBuilder name = new StringBuilder();
 
         // Extract the scheme and authority parts
-        final Authority auth = extractToPath(fileName, name);
+        final Authority auth = extractToPath(context, fileName, name);
 
         // Decode and normalise the file name
         UriParser.canonicalizePath(name, 0, name.length(), this);
@@ -69,11 +70,18 @@ public class HostFileNameParser extends AbstractFileNameParser {
      * @return Authority extracted host authority, never null.
      * @throws FileSystemException if authority cannot be extracted.
      */
-    protected Authority extractToPath(final String uri, final StringBuilder name) throws FileSystemException {
+    protected Authority extractToPath(final VfsComponentContext context, final String uri, final StringBuilder name) throws FileSystemException {
         final Authority auth = new Authority();
 
+        final FileSystemManager fsm;
+        if (context != null) {
+        	fsm = context.getFileSystemManager();
+        } else {
+        	fsm = VFS.getManager();
+        }
+        
         // Extract the scheme
-        auth.scheme = UriParser.extractScheme(VFS.getManager().getSchemes(), uri, name);
+        auth.scheme = UriParser.extractScheme(fsm.getSchemes(), uri, name);
 
         // Expecting "//"
         if (name.length() < 2 || name.charAt(0) != '/' || name.charAt(1) != '/') {
diff --git a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/URLFileNameParser.java b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/URLFileNameParser.java
index 27853aa..a7cc833 100644
--- a/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/URLFileNameParser.java
+++ b/commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/URLFileNameParser.java
@@ -45,7 +45,7 @@ public class URLFileNameParser extends HostFileNameParser {
         final StringBuilder name = new StringBuilder();
 
         // Extract the scheme and authority parts
-        final Authority auth = extractToPath(fileName, name);
+        final Authority auth = extractToPath(context, fileName, name);
 
         // Extract the queryString
         final String queryString = UriParser.extractQueryString(name);
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 91d6614..3b770ae 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -56,6 +56,9 @@ The <action> type attribute can be add,update,fix,remove.
       <action issue="VFS-704" dev="ggregory" type="fix" due-to="Boris Petrov, Gary Gregory">
         Some providers wrap their input/output streams twice in a BufferedInputStream.
       </action>
+      <action issue="VFS-727" dev="ggregory" type="fix" due-to="Michiel Hendriks, Gary Gregory">
+        Prevented creation of singleton file system manager from providers.
+      </action>
     </release>
     <release version="2.4.1" date="2019-08-10" description="Bug fix release.">
       <action issue="VFS-725" dev="ggregory" type="fix" due-to="Gary Gregory">