You are viewing a plain text version of this content. The canonical link for it is here.
Posted to yoko-commits@incubator.apache.org by ri...@apache.org on 2006/06/02 13:00:51 UTC

svn commit: r411150 - in /incubator/yoko/trunk: core/src/main/java/org/apache/yoko/orb/CORBA/ core/src/main/java/org/apache/yoko/orb/OB/ core/src/main/java/org/apache/yoko/orb/OBCORBA/ core/src/main/java/org/apache/yoko/orb/OBMessaging/ core/src/main/j...

Author: rickmcguire
Date: Fri Jun  2 06:00:50 2006
New Revision: 411150

URL: http://svn.apache.org/viewvc?rev=411150&view=rev
Log:
YOKO-51 Yoko code should be using the context class loader, not Class.forName() to dynamically load plugin


Modified:
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/CORBA/ObjectImpl.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/PluginManager.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/Util.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/ValueWriter.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/ExceptionHolder_impl.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/UserExceptionRaiseProxy.java
    incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/csi/SecurityContext.java
    incubator/yoko/trunk/core/src/main/java/org/omg/CORBA/ORB.java
    incubator/yoko/trunk/core/src/test/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
    incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLCorbaFactory.java

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/CORBA/ObjectImpl.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/CORBA/ObjectImpl.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/CORBA/ObjectImpl.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/CORBA/ObjectImpl.java Fri Jun  2 06:00:50 2006
@@ -177,11 +177,17 @@
             // Get the appropriate helper class for the exception and
             // retrieve the write method from the helper
             //
-            Class c = Class.forName(className + "Helper");
+
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            if (loader == null) {
+                loader = this.getClass().getClassLoader();
+            }
+
+            Class c = loader.loadClass(className + "Helper");
             Class[] paramTypes = new Class[2];
-            paramTypes[0] = Class
-                    .forName("org.omg.CORBA.portable.OutputStream");
-            paramTypes[1] = Class.forName(className);
+            paramTypes[0] = loader.loadClass("org.omg.CORBA.portable.OutputStream");
+            paramTypes[1] = loader.loadClass(className);
             java.lang.reflect.Method m = c.getMethod("write", paramTypes);
 
             //
@@ -215,7 +221,7 @@
             //
             // REVISIT:
             // What to do in this case?
-            // 
+            //
             return null;
         }
 

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/PluginManager.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/PluginManager.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/PluginManager.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/PluginManager.java Fri Jun  2 06:00:50 2006
@@ -116,7 +116,13 @@
             //
             org.apache.yoko.orb.OCI.PluginInit pi = null;
             try {
-                Class c = Class.forName(className);
+                // get the appropriate class for the loading.
+                ClassLoader loader = Thread.currentThread().getContextClassLoader();
+                if (loader == null) {
+                    loader = this.getClass().getClassLoader();
+                }
+
+                Class c = loader.loadClass(className);
                 pi = (org.apache.yoko.orb.OCI.PluginInit) c.newInstance();
             } catch (org.omg.CORBA.SystemException ex) {
                 throw ex;

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/Util.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/Util.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/Util.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/Util.java Fri Jun  2 06:00:50 2006
@@ -299,7 +299,10 @@
             String className = exClass.getName();
             String id = null;
             try {
-                Class c = Class.forName(className + "Helper");
+                // get the appropriate class for the loading.
+                ClassLoader loader = exClass.getClassLoader();
+
+                Class c = loader.loadClass(className + "Helper");
                 java.lang.reflect.Method m = c.getMethod("id", new Class[0]);
                 id = (String) m.invoke(null, new Object[0]);
             } catch (ClassNotFoundException e) {
@@ -400,7 +403,9 @@
 
         if (className != null) {
             try {
-                result = Class.forName(className);
+                // get the appropriate class for the loading.
+                ClassLoader loader = Thread.currentThread().getContextClassLoader();
+                Class c = loader.loadClass(className);
             } catch (ClassNotFoundException ex) {
                 // ignore
             }
@@ -498,7 +503,9 @@
         try {
             Class exClass = ex.getClass();
             String helper = exClass.getName() + "Helper";
-            Class c = Class.forName(helper);
+            // get the appropriate class for the loading.
+            ClassLoader loader = exClass.getClassLoader();
+            Class c = loader.loadClass(helper);
             final Class[] paramTypes = { org.omg.CORBA.Any.class, exClass };
             java.lang.reflect.Method m = c.getMethod("insert", paramTypes);
             final java.lang.Object[] args = { any, ex };

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/ValueWriter.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/ValueWriter.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/ValueWriter.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OB/ValueWriter.java Fri Jun  2 06:00:50 2006
@@ -185,7 +185,9 @@
         //
         try {
             String name = value.getClass().getName() + "Helper";
-            Class c = Class.forName(name);
+            // get the appropriate class for the loading.
+            ClassLoader loader = value.getClass().getClassLoader();
+            Class c = loader.loadClass(name);
             if (BoxedValueHelper.class.isAssignableFrom(c))
                 helperClass = c;
         } catch (ClassNotFoundException ex) {
@@ -251,7 +253,7 @@
             // transmission of this repositoryId in order to
             // interoperate with servers such as WebSphere which don't
             // recognize the 0x7fffff00 value properly
-            // 
+            //
             boolean rmiCompatMode = false;
             if (id != null) {
                 String upperId = id.toUpperCase();
@@ -380,12 +382,12 @@
     			out_.write_long(0);
     			return;
     		}
-    		
+
     		// check if this value has already been written
     		if (checkIndirection(value)) {
     			return;
     		}
-    		
+
     		// special-case string
     		if (value instanceof java.lang.String) {
     			//out_._OB_align(4);
@@ -393,7 +395,7 @@
     			org.omg.CORBA.WStringValueHelper.write (out_, (String)value);
     	        instanceTable_.put (value, new Integer (pos));
     			return;
-    		}	
+    		}
 
     		// get hold of the value handler
     		if (valueHandler == null) {
@@ -403,7 +405,7 @@
         //
         // Needs writeReplace?
         //
-        java.io.Serializable repValue 
+        java.io.Serializable repValue
             = valueHandler.writeReplace (value);
 
         //
@@ -415,11 +417,11 @@
                 out_.write_long(0);
                 return;
             }
-            
+
             if (checkIndirection(repValue)) {
                 return;
             }
-            
+
             if (repValue instanceof java.lang.String) {
 	    			org.omg.CORBA.WStringValueHelper.write (out_, (String)value);
 	    			return;
@@ -433,7 +435,7 @@
         //
         Class clz = value.getClass ();
 
-        // 
+        //
         // 0x7fffff00 + SINGLE_ID
         //
         int tag = 0x7fffff02;
@@ -451,7 +453,7 @@
         //
         // Determine if chunked encoding is needed.
         // (we chunk all RMI objects)
-        // 
+        //
         boolean isChunked = true; // valueHandler.isCustomMarshaled (clz);
 
         int pos = beginValue (tag, ids, codebase, isChunked);

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBCORBA/ORB_impl.java Fri Jun  2 06:00:50 2006
@@ -588,7 +588,7 @@
             /*
              * TODO - Add the config keys for the new Message routing policies
              * here...
-             * 
+             *
              * else if(key.equals("yoko.orb.policy.max_hops")) {
              *  } else if(key.equals("yoko.orb.policy.queue_order")) {
              *  }
@@ -758,7 +758,13 @@
                 String initClass = key.substring(magic.length());
                 if (!orbInitializers_.containsKey(initClass)) {
                     try {
-                        Class c = Class.forName(initClass);
+                        // get the appropriate class for the loading.
+                        ClassLoader loader = Thread.currentThread().getContextClassLoader();
+                        if (loader == null) {
+                            loader = this.getClass().getClassLoader();
+                        }
+
+                        Class c = loader.loadClass(initClass);
                         org.omg.PortableInterceptor.ORBInitializer init = (org.omg.PortableInterceptor.ORBInitializer) c
                                 .newInstance();
                         orbInitializers_.put(initClass, init);
@@ -1462,7 +1468,9 @@
         ORB_impl orb;
 
         try {
-            orb = (ORB_impl) Class.forName(orbClassName).newInstance();
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            orb = (ORB_impl) loader.loadClass(orbClassName).newInstance();
         } catch (Throwable ex) {
             throw new org.omg.CORBA.INITIALIZE("Invalid ORB class: "
                     + orbClassName + '\n' + ex.getMessage());
@@ -1501,7 +1509,9 @@
         ORB_impl orb;
 
         try {
-            orb = (ORB_impl) Class.forName(orbClassName).newInstance();
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            orb = (ORB_impl) loader.loadClass(orbClassName).newInstance();
         } catch (Throwable ex) {
             throw new org.omg.CORBA.INITIALIZE("Invalid ORB class: "
                     + orbClassName + '\n' + ex.getMessage());
@@ -1742,7 +1752,7 @@
         args = oaOptionFilter_.filter(args);
         return args;
     }
-    
+
     synchronized public org.omg.CORBA.Policy create_policy(int type,
             org.omg.CORBA.Any any) throws org.omg.CORBA.PolicyError {
         if (destroy_)

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/ExceptionHolder_impl.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/ExceptionHolder_impl.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/ExceptionHolder_impl.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/ExceptionHolder_impl.java Fri Jun  2 06:00:50 2006
@@ -10,6 +10,7 @@
 // **********************************************************************
 
 package org.apache.yoko.orb.OBMessaging;
+import org.omg.CORBA.Any;
 
 public class ExceptionHolder_impl extends org.omg.Messaging._ExceptionHolder {
     //
@@ -201,10 +202,12 @@
                 // Get the helper class and the insert method with
                 // appropriate parameter types
                 //
-                Class c = Class.forName(className + "Helper");
+                // get the appropriate class for the loading.
+                ClassLoader loader = exClass.getClassLoader();
+                Class c = loader.loadClass(className + "Helper");
                 Class[] paramTypes = new Class[2];
-                paramTypes[0] = Class.forName("org.omg.CORBA.Any");
-                paramTypes[1] = Class.forName(className);
+                paramTypes[0] = org.omg.CORBA.Any.class;
+                paramTypes[1] = exClass;
                 java.lang.reflect.Method m = c.getMethod("insert", paramTypes);
 
                 //
@@ -312,9 +315,9 @@
         raiseProxy_ = proxy;
     }
 
-    // 
+    //
     // ExceptionHolder_impl constructors
-    // 
+    //
     public ExceptionHolder_impl() {
         byte_order = false;
         is_system_exception = false;

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/UserExceptionRaiseProxy.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/UserExceptionRaiseProxy.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/UserExceptionRaiseProxy.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/OBMessaging/UserExceptionRaiseProxy.java Fri Jun  2 06:00:50 2006
@@ -32,10 +32,12 @@
                 // Get the helper class and the insert method with
                 // appropriate parameter types
                 //
-                Class c = Class.forName(className + "Helper");
+                // get the appropriate class for the loading.
+                ClassLoader loader = exClass.getClassLoader();
+                Class c = loader.loadClass(className + "Helper");
                 Class[] paramTypes = new Class[2];
-                paramTypes[0] = Class.forName("org.omg.CORBA.Any");
-                paramTypes[1] = Class.forName(className);
+                paramTypes[0] = org.omg.CORBA.Any.class;
+                paramTypes[1] = exClass;
                 java.lang.reflect.Method m = c.getMethod("insert", paramTypes);
 
                 //
@@ -91,7 +93,7 @@
         /*
          * org.apache.yoko.orb.OBMessaging.ExceptionHolder_impl exImpl =
          * (org.apache.yoko.orb.OBMessaging.ExceptionHolder_impl)exceptHolder;
-         * 
+         *
          * exImpl._OB_register_raise_proxy(this);
          */
     }

Modified: incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/csi/SecurityContext.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/csi/SecurityContext.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/csi/SecurityContext.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/apache/yoko/orb/csi/SecurityContext.java Fri Jun  2 06:00:50 2006
@@ -43,7 +43,9 @@
                 "org.freeorb.csi.DefaultSecurityContextDelegate");
 
         try {
-            Class c = Class.forName(className);
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            Class c = loader.loadClass(className);
             return (SecurityContextDelegate) c.newInstance();
         }
         catch (Exception ex) {

Modified: incubator/yoko/trunk/core/src/main/java/org/omg/CORBA/ORB.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/main/java/org/omg/CORBA/ORB.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/main/java/org/omg/CORBA/ORB.java (original)
+++ incubator/yoko/trunk/core/src/main/java/org/omg/CORBA/ORB.java Fri Jun  2 06:00:50 2006
@@ -169,7 +169,9 @@
         ORB orb;
 
         try {
-            orb = (ORB) Class.forName(orbClassName).newInstance();
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            orb = (ORB) loader.loadClass(orbClassName).newInstance();
         } catch (Throwable ex) {
             throw new org.omg.CORBA.INITIALIZE("Invalid ORB class: "
                     + orbClassName);
@@ -201,7 +203,9 @@
         ORB orb;
 
         try {
-            orb = (ORB) Class.forName(orbClassName).newInstance();
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            orb = (ORB) loader.loadClass(orbClassName).newInstance();
         } catch (Throwable ex) {
             throw new org.omg.CORBA.INITIALIZE("Invalid ORB class: "
                     + orbClassName);
@@ -221,7 +225,9 @@
             ORB orb;
 
             try {
-                orb = (ORB) Class.forName(orbClassName).newInstance();
+                // get the appropriate class for the loading.
+                ClassLoader loader = Thread.currentThread().getContextClassLoader();
+                orb = (ORB) loader.loadClass(orbClassName).newInstance();
             } catch (Throwable ex) {
                 throw new org.omg.CORBA.INITIALIZE(
                         "Invalid ORB singleton class: " + orbClassName);

Modified: incubator/yoko/trunk/core/src/test/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/core/src/test/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/core/src/test/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java (original)
+++ incubator/yoko/trunk/core/src/test/java/org/apache/yoko/processmanager/internal/ProcessAgentImpl.java Fri Jun  2 06:00:50 2006
@@ -33,7 +33,7 @@
 	protected ProcessAgentImpl() throws RemoteException {
 		super();
 	}
-	
+
 	private CountDown shutdownCountDown = new CountDown(1);
 	private boolean agentExited = false;
 	private boolean exitedFromParent = false;
@@ -58,13 +58,14 @@
         String registryHost = args[1];
         int registryPort = Integer.parseInt(args[2]);
         String processManagerName = args[3];
-        
+
         Registry reg = LocateRegistry.getRegistry(registryHost, registryPort);
-        
+
         final ProcessAgentImpl agent = new ProcessAgentImpl();
+
         ProcessManagerRemoteIF manager = (ProcessManagerRemoteIF) reg.lookup(processManagerName);
         agent.init(agentName,manager);
-        
+
         agent.shutdownHook = new Thread(new Runnable() {
         	public void run() {
         		agent.shutdownCountDown.release();
@@ -83,18 +84,18 @@
         	System.exit(agent.exitCode);
         }
     }
-    
+
     public static void inProcessMain(String[] args) throws Exception {
         String agentName = args[0];
         String registryHost = args[1];
         int registryPort = Integer.parseInt(args[2]);
         String processManagerName = args[3];
-        
+
         Registry reg = LocateRegistry.getRegistry(registryHost, registryPort);
-        
+
         final ProcessAgentImpl agent = new ProcessAgentImpl();
         ProcessManagerRemoteIF manager = (ProcessManagerRemoteIF) reg.lookup(processManagerName);
-        agent.init(agentName,manager);    	
+        agent.init(agentName,manager);
     }
 
 	private void waitForShutdown() {
@@ -106,7 +107,7 @@
 				// Throws RemoteException if processManager is gone.
 				processManager.isAlive();
 			}
-		} 
+		}
 		catch(Exception e) {
 			// Parent process died.
 			Runtime.getRuntime().removeShutdownHook(shutdownHook);
@@ -124,24 +125,30 @@
 		catch(Exception e) {
 			e.printStackTrace();
 		}
-		
+
 	}
-	
+
 	public void exit(int exitCode) throws RemoteException {
 		this.exitedFromParent = true;
 		this.exitCode = exitCode;
 		shutdownCountDown.release();
 	}
-	
+
 	public Object invokeStatic(String className, String methodName, Object[] args) {
 		try {
 			Class[] parameters = new Class[args.length];
 			for(int i = 0; i < parameters.length; i++) {
 				parameters[i] = args[i].getClass();
 			}
-			Class cl = Class.forName(className);
+            // get the appropriate class for the loading.
+            ClassLoader loader = Thread.currentThread().getContextClassLoader();
+            if (loader == null) {
+                loader = this.getClass().getClassLoader();
+            }
+
+			Class cl = loader.loadClass(className);
 			Method method = cl.getMethod(methodName, parameters);
-			return method.invoke(null, args);			
+			return method.invoke(null, args);
 		}
 		catch(InvocationTargetException e) {
 			return e;

Modified: incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLCorbaFactory.java
URL: http://svn.apache.org/viewvc/incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLCorbaFactory.java?rev=411150&r1=411149&r2=411150&view=diff
==============================================================================
--- incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLCorbaFactory.java (original)
+++ incubator/yoko/trunk/tools/src/main/java/org/apache/yoko/tools/processors/wsdl/WSDLCorbaFactory.java Fri Jun  2 06:00:50 2006
@@ -14,7 +14,7 @@
 public abstract class WSDLCorbaFactory {
     private static final String PROPERTY_NAME = "javax.wsdl.factory.WSDLCorbaFactory";
     private static final String PROPERTY_FILE_NAME = "wsdl.properties";
-    private static final String DEFAULT_FACTORY_IMPL_NAME = 
+    private static final String DEFAULT_FACTORY_IMPL_NAME =
         "org.apache.yoko.tools.processors.wsdl.WSDLCorbaFactoryImpl";
 
     private static String fullPropertyFileName;
@@ -55,7 +55,9 @@
     public static WSDLCorbaFactory newInstance(String factoryImplName) throws WSDLException {
         if (factoryImplName != null) {
             try {
-                Class cl = Class.forName(factoryImplName);
+                // get the appropriate class for the loading.
+                ClassLoader loader = Thread.currentThread().getContextClassLoader();
+                Class cl = loader.loadClass(factoryImplName);
 
                 return (WSDLCorbaFactory)cl.newInstance();
             } catch (Exception e) {