8198810: URLClassLoader does not specify behavior when URL array contains null
Reviewed-by: alanb, darcy, dholmes
--- a/src/java.base/share/classes/java/net/URLClassLoader.java Thu Mar 01 13:08:06 2018 +0100
+++ b/src/java.base/share/classes/java/net/URLClassLoader.java Thu Mar 01 19:01:34 2018 -0800
@@ -105,7 +105,8 @@
* @exception SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
- * @exception NullPointerException if {@code urls} is {@code null}.
+ * @exception NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
* @see SecurityManager#checkCreateClassLoader
*/
public URLClassLoader(URL[] urls, ClassLoader parent) {
@@ -149,7 +150,8 @@
* @exception SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
- * @exception NullPointerException if {@code urls} is {@code null}.
+ * @exception NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
* @see SecurityManager#checkCreateClassLoader
*/
public URLClassLoader(URL[] urls) {
@@ -192,7 +194,8 @@
* @exception SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
* creation of a class loader.
- * @exception NullPointerException if {@code urls} is {@code null}.
+ * @exception NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
* @see SecurityManager#checkCreateClassLoader
*/
public URLClassLoader(URL[] urls, ClassLoader parent,
@@ -221,7 +224,8 @@
* @param parent the parent class loader for delegation
*
* @throws IllegalArgumentException if the given name is empty.
- * @throws NullPointerException if {@code urls} is {@code null}.
+ * @throws NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
*
* @throws SecurityException if a security manager exists and its
* {@link SecurityManager#checkCreateClassLoader()} method doesn't
@@ -256,7 +260,8 @@
* @param factory the URLStreamHandlerFactory to use when creating URLs
*
* @throws IllegalArgumentException if the given name is empty.
- * @throws NullPointerException if {@code urls} is {@code null}.
+ * @throws NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
*
* @throws SecurityException if a security manager exists and its
* {@code checkCreateClassLoader} method doesn't allow
@@ -805,7 +810,8 @@
*
* @param urls the URLs to search for classes and resources
* @param parent the parent class loader for delegation
- * @exception NullPointerException if {@code urls} is {@code null}.
+ * @exception NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
* @return the resulting class loader
*/
public static URLClassLoader newInstance(final URL[] urls,
@@ -831,7 +837,8 @@
* loading the class.
*
* @param urls the URLs to search for classes and resources
- * @exception NullPointerException if {@code urls} is {@code null}.
+ * @exception NullPointerException if {@code urls} or any of its
+ * elements is {@code null}.
* @return the resulting class loader
*/
public static URLClassLoader newInstance(final URL[] urls) {
--- a/test/jdk/java/net/URLClassLoader/NullURLTest.java Thu Mar 01 13:08:06 2018 +0100
+++ b/test/jdk/java/net/URLClassLoader/NullURLTest.java Thu Mar 01 19:01:34 2018 -0800
@@ -71,14 +71,14 @@
} catch (NullPointerException e) {
// expected
}
- // This section should be uncommented if 8026517 is fixed.
-// try {
-// loader = new URLClassLoader(invalidURLArray);
-// System.err.println("URLClassLoader(invalidURLArray) did not throw NPE");
-// failures++;
-// } catch (NullPointerException e) {
-// // expected
-// }
+
+ try {
+ loader = new URLClassLoader(invalidURLArray);
+ System.err.println("URLClassLoader(invalidURLArray) did not throw NPE");
+ failures++;
+ } catch (NullPointerException e) {
+ // expected
+ }
try {
loader = new URLClassLoader(validURLArray, null);
@@ -93,14 +93,14 @@
} catch (NullPointerException e) {
// expected
}
- // This section should be uncommented if 8026517 is fixed.
-// try {
-// loader = new URLClassLoader(invalidURLArray, null);
-// System.err.println("URLClassLoader(invalidURLArray, null) did not throw NPE");
-// failures++;
-// } catch (NullPointerException e) {
-// // expected
-// }
+
+ try {
+ loader = new URLClassLoader(invalidURLArray, null);
+ System.err.println("URLClassLoader(invalidURLArray, null) did not throw NPE");
+ failures++;
+ } catch (NullPointerException e) {
+ // expected
+ }
try {
loader = new URLClassLoader(validURLArray, null, null);
@@ -115,14 +115,14 @@
} catch (NullPointerException e) {
// expected
}
- // This section should be uncommented if 8026517 is fixed.
-// try {
-// loader = new URLClassLoader(invalidURLArray, null, null);
-// System.err.println("URLClassLoader(invalidURLArray, null, null) did not throw NPE");
-// failures++;
-// } catch (NullPointerException e) {
-// // expected
-// }
+
+ try {
+ loader = new URLClassLoader(invalidURLArray, null, null);
+ System.err.println("URLClassLoader(invalidURLArray, null, null) did not throw NPE");
+ failures++;
+ } catch (NullPointerException e) {
+ // expected
+ }
try {
loader = URLClassLoader.newInstance(validURLArray);
@@ -137,14 +137,14 @@
} catch (NullPointerException e) {
// expected
}
- // This section should be uncommented if 8026517 is fixed.
-// try {
-// loader = URLClassLoader.newInstance(invalidURLArray);
-// System.err.println("URLClassLoader.newInstance(invalidURLArray) did not throw NPE");
-// failures++;
-// } catch (NullPointerException e) {
-// // expected
-// }
+
+ try {
+ loader = URLClassLoader.newInstance(invalidURLArray);
+ System.err.println("URLClassLoader.newInstance(invalidURLArray) did not throw NPE");
+ failures++;
+ } catch (NullPointerException e) {
+ // expected
+ }
try {
loader = URLClassLoader.newInstance(validURLArray, null);
@@ -159,14 +159,14 @@
} catch (NullPointerException e) {
// expected
}
- // This section should be uncommented if 8026517 is fixed.
-// try {
-// loader = URLClassLoader.newInstance(invalidURLArray, null);
-// System.err.println("URLClassLoader.newInstance(invalidURLArray, null) did not throw NPE");
-// failures++;
-// } catch (NullPointerException e) {
-// // expected
-// }
+
+ try {
+ loader = URLClassLoader.newInstance(invalidURLArray, null);
+ System.err.println("URLClassLoader.newInstance(invalidURLArray, null) did not throw NPE");
+ failures++;
+ } catch (NullPointerException e) {
+ // expected
+ }
if (failures != 0) {
throw new Exception("URLClassLoader NullURLTest had "+failures+" failures!");