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 2018/07/23 15:56:33 UTC

svn commit: r1836502 - in /commons/proper/vfs/trunk: commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java src/changes/changes.xml

Author: ggregory
Date: Mon Jul 23 15:56:33 2018
New Revision: 1836502

URL: http://svn.apache.org/viewvc?rev=1836502&view=rev
Log:
[VFS-668] Throw a NPE with a better message when a class loader is null.

Modified:
    commons/proper/vfs/trunk/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
    commons/proper/vfs/trunk/src/changes/changes.xml

Modified: commons/proper/vfs/trunk/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java?rev=1836502&r1=1836501&r2=1836502&view=diff
==============================================================================
--- commons/proper/vfs/trunk/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java (original)
+++ commons/proper/vfs/trunk/commons-vfs2/src/main/java/org/apache/commons/vfs2/impl/StandardFileSystemManager.java Mon Jul 23 15:56:33 2018
@@ -22,6 +22,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.Objects;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
@@ -138,13 +139,11 @@ public class StandardFileSystemManager e
         if (classLoader != null) {
             return classLoader;
         }
-
         ClassLoader cl = Thread.currentThread().getContextClassLoader();
-        if (cl == null) {
-            cl = getClass().getClassLoader();
+        if (cl != null) {
+            return cl;
         }
-
-        return cl;
+        return getValidClassLoader(getClass());
     }
 
     protected DefaultFileReplicator createDefaultFileReplicator() {
@@ -404,6 +403,15 @@ public class StandardFileSystemManager e
         return schemas.toArray(new String[schemas.size()]);
     }
 
+    private ClassLoader getValidClassLoader(final Class<?> clazz) {
+        return validateClassLoader(clazz.getClassLoader(), clazz);
+    }
+
+    private ClassLoader validateClassLoader(final ClassLoader clazzLoader, final Class<?> clazz) {
+        return Objects.requireNonNull(clazzLoader, "The class loader for " + clazz
+                + " is null; some Java implementions use null for the bootstrap class loader.");
+    }
+
     /**
      * Creates a provider.
      */
@@ -426,7 +434,7 @@ public class StandardFileSystemManager e
         try {
             return findClassLoader().loadClass(className);
         } catch (final ClassNotFoundException e) {
-            return getClass().getClassLoader().loadClass(className);
+            return getValidClassLoader(getClass()).loadClass(className);
         }
     }
 
@@ -439,8 +447,9 @@ public class StandardFileSystemManager e
     private Enumeration<URL> loadResources(final String name) throws IOException {
         Enumeration<URL> res = findClassLoader().getResources(name);
         if (res == null || !res.hasMoreElements()) {
-            res = getClass().getClassLoader().getResources(name);
+            res = getValidClassLoader(getClass()).getResources(name);
         }
         return res;
     }
+    
 }

Modified: commons/proper/vfs/trunk/src/changes/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/src/changes/changes.xml?rev=1836502&r1=1836501&r2=1836502&view=diff
==============================================================================
--- commons/proper/vfs/trunk/src/changes/changes.xml (original)
+++ commons/proper/vfs/trunk/src/changes/changes.xml Mon Jul 23 15:56:33 2018
@@ -80,6 +80,9 @@ The <action> type attribute can be add,u
       <action issue="VFS-667" dev="ggregory" type="fix">
         org.apache.commons.vfs2.provider.res.ResourceFileProvider.findFile(FileObject, String, FileSystemOptions) should throw a org.apache.commons.vfs2.FileSystemException instead of a NPE when the class loader is null.
       </action>
+      <action issue="VFS-668" dev="ggregory" type="update">
+        Throw a NPE with a better message when a class loader is null.
+      </action>
     </release>
     <release version="2.2" date="2017-10-06" description="New features and bug fix release.">
       <action issue="VFS-642" dev="pschumacher" type="update" due-to="ilangoldfeld">