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