Hi,

I refactored ClassLoader.defaultGetSystemClassLoader() to allow
VMClassLoader to more easily reuse the different steps of creating the
system class loader hierarchy.

Regards,
Jeroen

2005-05-10  Jeroen Frijters  <[EMAIL PROTECTED]>

        * java/lang/ClassLoader.java
        (defaultGetSystemClassLoader): Refactored in three new methods.
        (createExtClassLoader, createSystemClassLoader,
        createAuxiliarySystemClassLoader): New methods.
Index: java/lang/ClassLoader.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/ClassLoader.java,v
retrieving revision 1.49
diff -u -r1.49 ClassLoader.java
--- java/lang/ClassLoader.java  29 Apr 2005 05:38:55 -0000      1.49
+++ java/lang/ClassLoader.java  10 May 2005 09:27:57 -0000
@@ -1053,15 +1053,23 @@
 
   static ClassLoader defaultGetSystemClassLoader()
   {
-    URL[] extURLs = getExtClassLoaderUrls();
-    ClassLoader extClassLoader;
-    if (extURLs.length > 0)
-      extClassLoader = new URLClassLoader(getExtClassLoaderUrls(), null);
+    return createAuxiliarySystemClassLoader(
+        createSystemClassLoader(getSystemClassLoaderUrls(),
+            createExtClassLoader(getExtClassLoaderUrls(), null)));
+  }
+
+  static ClassLoader createExtClassLoader(URL[] urls, ClassLoader parent)
+  {
+    if (urls.length > 0)
+      return new URLClassLoader(urls, parent);
     else
-      extClassLoader = null;
+      return parent;
+  }
 
-    ClassLoader systemClassLoader =
-       new URLClassLoader(getSystemClassLoaderUrls(), extClassLoader)
+  static ClassLoader createSystemClassLoader(URL[] urls, ClassLoader parent)
+  {
+    return
+       new URLClassLoader(urls, parent)
        {
            protected synchronized Class loadClass(String name,
                boolean resolve)
@@ -1077,16 +1085,20 @@
                return super.loadClass(name, resolve);
            }
        };
+  }
+
+  static ClassLoader createAuxiliarySystemClassLoader(ClassLoader parent)
+  {
     String loader = SystemProperties.getProperty("java.system.class.loader", 
null);
     if (loader == null)
       {
-       return systemClassLoader;
+       return parent;
       }
     try
       {
-       Constructor c = Class.forName(loader, false, systemClassLoader)
+       Constructor c = Class.forName(loader, false, parent)
            .getConstructor(new Class[] { ClassLoader.class });
-       return (ClassLoader)c.newInstance(new Object[] { systemClassLoader });
+       return (ClassLoader)c.newInstance(new Object[] { parent });
       }
     catch (Exception e)
       {
_______________________________________________
Classpath-patches mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/classpath-patches

Reply via email to