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) {