8050869: Convert runtime dependency to Applet to a static dependency in cosnaming
Reviewed-by: chegar, alanb
This commit is contained in:
parent
dc6a51546f
commit
16dfaa6554
@ -28,12 +28,11 @@ package com.sun.jndi.toolkit.corba;
|
||||
// Needed for RMI/IIOP
|
||||
import java.rmi.Remote;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.rmi.RemoteException;
|
||||
import java.util.Hashtable;
|
||||
import java.util.Properties;
|
||||
import java.util.Enumeration;
|
||||
import java.applet.Applet;
|
||||
|
||||
import org.omg.CORBA.ORB;
|
||||
|
||||
@ -167,47 +166,13 @@ public class CorbaUtils {
|
||||
|
||||
// Get Applet from environment
|
||||
if (env != null) {
|
||||
Object applet = env.get(Context.APPLET);
|
||||
Applet applet = (Applet) env.get(Context.APPLET);
|
||||
if (applet != null) {
|
||||
// Create ORBs for an applet
|
||||
return initAppletORB(applet, orbProp);
|
||||
// Create ORBs using applet and orbProp
|
||||
return ORB.init(applet, orbProp);
|
||||
}
|
||||
}
|
||||
|
||||
// Create ORBs using orbProp for a standalone application
|
||||
return ORB.init(new String[0], orbProp);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method returns a new ORB instance for the given applet
|
||||
* without creating a static dependency on java.applet.
|
||||
*/
|
||||
private static ORB initAppletORB(Object applet, Properties orbProp) {
|
||||
try {
|
||||
Class<?> appletClass = Class.forName("java.applet.Applet", true, null);
|
||||
if (!appletClass.isInstance(applet)) {
|
||||
throw new ClassCastException(applet.getClass().getName());
|
||||
}
|
||||
|
||||
// invoke the static method ORB.init(applet, orbProp);
|
||||
Method method = ORB.class.getMethod("init", appletClass, Properties.class);
|
||||
return (ORB) method.invoke(null, applet, orbProp);
|
||||
} catch (ClassNotFoundException e) {
|
||||
// java.applet.Applet doesn't exist and the applet parameter is
|
||||
// non-null; so throw CCE
|
||||
throw new ClassCastException(applet.getClass().getName());
|
||||
} catch (NoSuchMethodException e) {
|
||||
throw new AssertionError(e);
|
||||
} catch (InvocationTargetException e) {
|
||||
Throwable cause = e.getCause();
|
||||
if (cause instanceof RuntimeException) {
|
||||
throw (RuntimeException) cause;
|
||||
} else if (cause instanceof Error) {
|
||||
throw (Error) cause;
|
||||
}
|
||||
throw new AssertionError(e);
|
||||
} catch (IllegalAccessException iae) {
|
||||
throw new AssertionError(iae);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user