8198810: URLClassLoader does not specify behavior when URL array contains null
authormartin
Thu, 01 Mar 2018 19:01:34 -0800
changeset 49117 0a93645a57f1
parent 49116 ef9ddc426975
child 49118 dbbbf6d7cf6e
8198810: URLClassLoader does not specify behavior when URL array contains null Reviewed-by: alanb, darcy, dholmes
src/java.base/share/classes/java/net/URLClassLoader.java
test/jdk/java/net/URLClassLoader/NullURLTest.java
--- 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!");