classpath-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[cp-patches] FYI: CORBA class loader fixes in


From: Meskauskas Audrius
Subject: [cp-patches] FYI: CORBA class loader fixes in
Date: Tue, 11 Oct 2005 00:20:55 +0200
User-agent: Mozilla Thunderbird 1.0.2 (Windows/20050317)

Class.forName(String) in the core does not load classes from the user application. I noticed that this is required in some CORBA classes. This patch replaces Class.forName(String) ino Class.forName(String, true, Thread.currentThread().getContextClassLoader().

2005-10-10  Audrius Meskauskas  <address@hidden>

* gnu/CORBA/Interceptor/Registrator.java,
gnu/CORBA/ObjectCreator.java,
gnu/CORBA/gnuValueHolder.java,
gnu/CORBA/stubFinder.java,
gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java,
gnu/javax/rmi/CORBA/StubDelegateImpl.java,
gnu/javax/rmi/CORBA/UtilDelegateImpl.java,
org/omg/CORBA/ORB.java: Use context class loader.
Index: gnu/CORBA/ObjectCreator.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/CORBA/ObjectCreator.java,v
retrieving revision 1.7
diff -u -r1.7 ObjectCreator.java
--- gnu/CORBA/ObjectCreator.java        2 Oct 2005 19:58:00 -0000       1.7
+++ gnu/CORBA/ObjectCreator.java        10 Oct 2005 20:51:50 -0000
@@ -139,14 +139,14 @@
               suffix = "";
             try
               {
-                known = Class.forName(toClassName(JAVA_PREFIX, idl) + suffix);
+                known = forName(toClassName(JAVA_PREFIX, idl) + suffix);
                 object = known.newInstance();
               }
             catch (Exception ex)
               {
                 try
                   {
-                    known = Class.forName(toClassName(CLASSPATH_PREFIX, idl)
+                    known = forName(toClassName(CLASSPATH_PREFIX, idl)
                       + suffix);
                     object = known.newInstance();
                   }
@@ -343,7 +343,7 @@
 
             try
               {
-                c = Class.forName(cn);
+                c = forName(cn);
                 m_classes.put(IDL, c);
                 return c;
               }
@@ -438,7 +438,7 @@
     try
       {
         String helperClassName = object.getClass().getName() + "Helper";
-        Class helperClass = Class.forName(helperClassName);
+        Class helperClass = forName(helperClassName);
 
         Method insert = helperClass.getMethod("insert", new Class[] {
           Any.class, object.getClass() });
@@ -534,7 +534,7 @@
         try
           {
             String helper = toHelperName(idl);
-            c = Class.forName(helper);
+            c = forName(helper);
 
             m_helpers.put(idl, c);
             return c;
@@ -544,6 +544,15 @@
             return null;
           }
       }
-
   }
+  
+  /**
+   * Load the class with the given name.
+   */
+  public static Class forName(String className)
+    throws ClassNotFoundException
+    {
+      return Class.forName(className, true, 
+        Thread.currentThread().getContextClassLoader());
+    }
 }
Index: gnu/CORBA/gnuValueHolder.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/CORBA/gnuValueHolder.java,v
retrieving revision 1.1
diff -u -r1.1 gnuValueHolder.java
--- gnu/CORBA/gnuValueHolder.java       7 Aug 2005 17:17:43 -0000       1.1
+++ gnu/CORBA/gnuValueHolder.java       10 Oct 2005 20:47:08 -0000
@@ -123,7 +123,8 @@
     try
       {
         Class helperClass =
-          Class.forName(ObjectCreator.toHelperName(type.id()));
+          Class.forName(ObjectCreator.toHelperName(type.id()),
+            true, Thread.currentThread().getContextClassLoader());
 
         helper = (BoxedValueHelper) helperClass.newInstance();
       }
Index: gnu/CORBA/stubFinder.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/CORBA/stubFinder.java,v
retrieving revision 1.2
diff -u -r1.2 stubFinder.java
--- gnu/CORBA/stubFinder.java   2 Jul 2005 20:32:09 -0000       1.2
+++ gnu/CORBA/stubFinder.java   10 Oct 2005 20:48:02 -0000
@@ -83,7 +83,8 @@
 
         String stub = "_" + s.substring(b + 1) + "Stub";
 
-        Class stubClass = Class.forName(path + stub);
+        Class stubClass = Class.forName(path + stub, true, 
+          Thread.currentThread().getContextClassLoader());
 
         return (ObjectImpl) stubClass.newInstance();
       }
Index: gnu/CORBA/Interceptor/Registrator.java
===================================================================
RCS file: /cvsroot/classpath/classpath/gnu/CORBA/Interceptor/Registrator.java,v
retrieving revision 1.3
diff -u -r1.3 Registrator.java
--- gnu/CORBA/Interceptor/Registrator.java      2 Oct 2005 19:58:00 -0000       
1.3
+++ gnu/CORBA/Interceptor/Registrator.java      10 Oct 2005 20:47:28 -0000
@@ -182,7 +182,8 @@
                 try
                   {
                     String cn = sk.substring(m_prefix.length());
-                    Class iClass = Class.forName(cn);
+                    Class iClass = Class.forName(cn, true,
+                      Thread.currentThread().getContextClassLoader());
                     ORBInitializer initializer =
                       (ORBInitializer) iClass.newInstance();
                     m_initializers.add(initializer);
Index: gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java,v
retrieving revision 1.4
diff -u -r1.4 PortableRemoteObjectDelegateImpl.java
--- gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java   2 Oct 2005 
19:58:01 -0000       1.4
+++ gnu/javax/rmi/CORBA/PortableRemoteObjectDelegateImpl.java   10 Oct 2005 
20:52:30 -0000
@@ -47,6 +47,7 @@
 import java.rmi.NoSuchObjectException;
 import java.rmi.Remote;
 import java.rmi.RemoteException;
+import java.rmi.server.RMIClassLoader;
 
 import javax.rmi.CORBA.PortableRemoteObjectDelegate;
 import javax.rmi.CORBA.Stub;
@@ -315,7 +316,7 @@
 
     try
       {
-        stubClass = Class.forName(sn);
+        stubClass = RMIClassLoader.loadClass(sn);
         o_stub = stubClass.newInstance();
       }
     catch (Exception e)
Index: gnu/javax/rmi/CORBA/StubDelegateImpl.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/gnu/javax/rmi/CORBA/StubDelegateImpl.java,v
retrieving revision 1.5
diff -u -r1.5 StubDelegateImpl.java
--- gnu/javax/rmi/CORBA/StubDelegateImpl.java   2 Oct 2005 19:58:01 -0000       
1.5
+++ gnu/javax/rmi/CORBA/StubDelegateImpl.java   10 Oct 2005 20:39:46 -0000
@@ -193,7 +193,8 @@
 
     try
       {
-        tieClass = Class.forName(tn);
+        tieClass = Class.forName(tn, true, 
+          Thread.currentThread().getContextClassLoader());
         t = (Tie) tieClass.newInstance();
         if (self instanceof Remote)
           Util.registerTarget(t, (Remote) self);
Index: gnu/javax/rmi/CORBA/UtilDelegateImpl.java
===================================================================
RCS file: 
/cvsroot/classpath/classpath/gnu/javax/rmi/CORBA/UtilDelegateImpl.java,v
retrieving revision 1.4
diff -u -r1.4 UtilDelegateImpl.java
--- gnu/javax/rmi/CORBA/UtilDelegateImpl.java   4 Oct 2005 17:58:15 -0000       
1.4
+++ gnu/javax/rmi/CORBA/UtilDelegateImpl.java   10 Oct 2005 20:41:14 -0000
@@ -373,17 +373,8 @@
     ClassLoader loader)
     throws ClassNotFoundException
   {
-    ClassLoader tt = Thread.currentThread().getContextClassLoader();
-
-    try
-      {
-        if (tt != null)
-          return tt.loadClass(className);
-      }
-    catch (Exception e)
-      {
-        // This failed but try others.
-      }
+    if (loader == null)
+      loader = Thread.currentThread().getContextClassLoader();
 
     String p_useCodebaseOnly = 
System.getProperty("java.rmi.server.useCodebaseOnly");
 
Index: org/omg/CORBA/ORB.java
===================================================================
RCS file: /cvsroot/classpath/classpath/org/omg/CORBA/ORB.java,v
retrieving revision 1.16
diff -u -r1.16 ORB.java
--- org/omg/CORBA/ORB.java      14 Sep 2005 07:45:04 -0000      1.16
+++ org/omg/CORBA/ORB.java      10 Oct 2005 20:38:48 -0000
@@ -1167,7 +1167,8 @@
 
     try
       {
-        orb = (ORB) Class.forName(orbClassName).newInstance();
+        orb = (ORB) Class.forName(orbClassName, true,
+          Thread.currentThread().getContextClassLoader()).newInstance();
       }
     catch (ClassNotFoundException ex)
       {

reply via email to

[Prev in Thread] Current Thread [Next in Thread]