Fix #1368 - getResources should never return null

This commit is contained in:
henry 2015-02-11 13:33:40 +00:00
parent d9b76be874
commit 6545deacc8
1 changed files with 5 additions and 4 deletions

View File

@ -6,12 +6,13 @@ package classpath
import java.net.URL
import java.util.Enumeration
import java.util.Collections
/** A class loader that always fails to load classes and resources. */
final class NullLoader extends ClassLoader {
override final def loadClass(className: String, resolve: Boolean): Class[_] = throw new ClassNotFoundException("No classes can be loaded from the null loader")
override def getResource(name: String): URL = null
override def getResources(name: String): Enumeration[URL] = null
override def getResources(name: String): Enumeration[URL] = Collections.enumeration(Collections.emptyList())
override def toString = "NullLoader"
}
@ -77,9 +78,9 @@ class DualLoader(parentA: ClassLoader, aOnlyClasses: String => Boolean, aOnlyRes
else {
val urlsA = parentA.getResources(name)
val urlsB = parentB.getResources(name)
if (urlsA eq null)
if (!urlsA.hasMoreElements)
urlsB
else if (urlsB eq null)
else if (!urlsB.hasMoreElements)
urlsA
else
new DualEnumeration(urlsA, urlsB)
@ -101,4 +102,4 @@ final class DualEnumeration[T](a: Enumeration[T], b: Enumeration[T]) extends Enu
current = b
element
}
}
}