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