[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/serialization ...
Tom Elrod
tom.elrod at jboss.com
Thu Jan 11 15:34:49 EST 2007
User: telrod
Date: 07/01/11 15:34:49
Modified: src/main/org/jboss/remoting/serialization Tag:
remoting_2_x SerializationStreamFactory.java
ClassLoaderUtility.java
Log:
JBREM-659 - updated classloading to use Class.forName() instead of ClassLoader.loadClass() because the later is broken in jdk 1.6.
Revision Changes Path
No revision
No revision
1.24.4.1 +3 -3 JBossRemoting/src/main/org/jboss/remoting/serialization/SerializationStreamFactory.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: SerializationStreamFactory.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/serialization/SerializationStreamFactory.java,v
retrieving revision 1.24
retrieving revision 1.24.4.1
diff -u -b -r1.24 -r1.24.4.1
--- SerializationStreamFactory.java 25 Aug 2006 21:12:05 -0000 1.24
+++ SerializationStreamFactory.java 11 Jan 2007 20:34:48 -0000 1.24.4.1
@@ -155,7 +155,7 @@
*/
private static void loadObjectManagerClass(String key, String managerClassName) throws ClassNotFoundException, IllegalAccessException, InstantiationException
{
- Class managerClass = ClassLoaderUtility.loadClass(managerClassName, SerializationStreamFactory.class);
+ Class managerClass = ClassLoaderUtility.loadClass(SerializationStreamFactory.class, managerClassName);
SerializationManager manager = (SerializationManager) managerClass.newInstance();
if(managers.get(key) != null)
1.4.10.1 +68 -12 JBossRemoting/src/main/org/jboss/remoting/serialization/ClassLoaderUtility.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: ClassLoaderUtility.java
===================================================================
RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/serialization/ClassLoaderUtility.java,v
retrieving revision 1.4
retrieving revision 1.4.10.1
diff -u -b -r1.4 -r1.4.10.1
--- ClassLoaderUtility.java 30 Dec 2005 05:26:35 -0000 1.4
+++ ClassLoaderUtility.java 11 Jan 2007 20:34:49 -0000 1.4.10.1
@@ -42,40 +42,96 @@
try
{
+ loader = Thread.currentThread().getContextClassLoader();
+ if (loader != null)
+ {
+ return Class.forName(classname, false, loader);
+ }
+ }
+ catch (Throwable t)
+ {
+ }
+
+ if (clazz != null)
+ {
+ try
+ {
loader = clazz.getClassLoader();
- if(loader != null)
+ if (loader != null)
+ {
+ return Class.forName(classname, false, loader);
+ }
+ }
+ catch (Throwable t)
+ {
+ }
+ }
+
+ try
+ {
+ loader = ClassLoader.getSystemClassLoader();
+ if (loader != null)
{
- return loader.loadClass(classname);
+ return Class.forName(classname, false, loader);
}
}
- catch(Throwable t)
+ catch (Throwable t)
{
}
- if(clazz != null)
+ throw new ClassNotFoundException(classname);
+ }
+
+
+ /**
+ * Tries to load the class from the passed class' classloader, then current thread's context class loader.
+ *
+ * @param clazz Class object used to obtain a class loader
+ * if no context class loader is available.
+ * @param classname Desired class.
+ * @return Class, or null on failure.
+ */
+ public static Class loadClass(Class clazz, String classname) throws ClassNotFoundException
+ {
+ ClassLoader loader;
+
+ if (clazz != null)
{
try
{
- loader = Thread.currentThread().getContextClassLoader();
- if(loader != null)
+ loader = clazz.getClassLoader();
+ if (loader != null)
{
- return loader.loadClass(classname);
+ return Class.forName(classname, false, loader);
}
}
- catch(Throwable t)
+ catch (Throwable t)
{
}
}
try
{
+ loader = Thread.currentThread().getContextClassLoader();
+ if (loader != null)
+ {
+ return Class.forName(classname, false, loader);
+ }
+ }
+ catch (Throwable t)
+ {
+ }
+
+
+ try
+ {
loader = ClassLoader.getSystemClassLoader();
- if(loader != null)
+ if (loader != null)
{
- return loader.loadClass(classname);
+ return Class.forName(classname, false, loader);
}
}
- catch(Throwable t)
+ catch (Throwable t)
{
}
More information about the jboss-cvs-commits
mailing list