home *** CD-ROM | disk | FTP | other *** search
- package sun.rmi.server;
-
- import java.net.MalformedURLException;
- import java.rmi.Remote;
- import java.rmi.RemoteException;
- import java.rmi.StubNotFoundException;
- import java.rmi.server.LogStream;
- import java.rmi.server.RemoteRef;
- import java.rmi.server.RemoteStub;
- import java.rmi.server.Skeleton;
- import java.rmi.server.SkeletonNotFoundException;
- import sun.rmi.transport.ObjectTable;
- import sun.rmi.transport.Target;
- import sun.rmi.transport.Utils;
-
- public final class RemoteProxy extends RemoteStub {
- static int logLevel = LogStream.parseLevel(Utils.getProperty("sun.rmi.server.logLevel"));
- private static Class classRemote = null;
-
- private RemoteProxy() {
- }
-
- public static RemoteStub getStub(Remote var0, RemoteRef var1) throws StubNotFoundException {
- Object var2 = null;
-
- try {
- Class var4 = getRemoteClass(var0);
- return getStub(var4.getName(), var4, var1);
- } catch (ClassNotFoundException var3) {
- throw new StubNotFoundException("Object does not implement an interface that extends java.rmi.Remote: " + var0.getClass().getName());
- }
- }
-
- public static RemoteStub getStub(String var0, RemoteRef var1) throws StubNotFoundException {
- return getStub(var0, (Class)null, var1);
- }
-
- public static RemoteStub getStub(String var0, Class var1, RemoteRef var2) throws StubNotFoundException {
- String var3 = var0 + "_Stub";
- Object var4 = null;
-
- try {
- RMIClassLoader var5 = RMIClassLoader.getLocalLoader();
- Class var6 = var5 == null ? loadClass(var3, var1) : var5.loadClass(var3);
- var12 = (RemoteStub)var6.newInstance();
- } catch (ClassNotFoundException var7) {
- throw new StubNotFoundException("Class not found: " + var3, var7);
- } catch (InstantiationException var8) {
- throw new StubNotFoundException("Can't create stub: " + var3, var8);
- } catch (IllegalAccessException var9) {
- throw new StubNotFoundException("No public constructor: " + var3, var9);
- } catch (MalformedURLException var10) {
- throw new StubNotFoundException("Malformed URL", var10);
- } catch (ClassCastException var11) {
- throw new StubNotFoundException("Stub not of correct class: " + var3, var11);
- }
-
- RemoteStub.setRef(var12, var2);
- return var12;
- }
-
- public static RemoteStub getProxy(Remote var0) throws RemoteException {
- RemoteStub var2;
- if (var0 instanceof RemoteStub) {
- var2 = (RemoteStub)var0;
- } else {
- Target var1;
- if ((var1 = ObjectTable.getTarget(var0)) == null) {
- throw new StubNotFoundException("Remote object not exported: " + var0.getClass().getName());
- }
-
- var2 = var1.getStub();
- }
-
- return var2;
- }
-
- public static Skeleton getSkeleton(Remote var0) throws SkeletonNotFoundException {
- Class var1;
- try {
- var1 = getRemoteClass(var0);
- } catch (ClassNotFoundException var10) {
- throw new SkeletonNotFoundException("Object does not implement an interface that extends java.rmi.Remote: " + var0.getClass().getName());
- }
-
- String var2 = var1.getName() + "_Skel";
-
- try {
- RMIClassLoader var3 = RMIClassLoader.getLocalLoader();
- Class var4 = var3 == null ? loadClass(var2, var1) : var3.loadClass(var2);
- return (Skeleton)var4.newInstance();
- } catch (ClassNotFoundException var5) {
- throw new SkeletonNotFoundException("Skeleton class not found: " + var2, var5);
- } catch (InstantiationException var6) {
- throw new SkeletonNotFoundException("Can't create skeleton: " + var2, var6);
- } catch (IllegalAccessException var7) {
- throw new SkeletonNotFoundException("No public constructor: " + var2, var7);
- } catch (MalformedURLException var8) {
- throw new SkeletonNotFoundException("Malformed URL", var8);
- } catch (ClassCastException var9) {
- throw new SkeletonNotFoundException("Skeleton not of correct class: " + var2, var9);
- }
- }
-
- private static Class loadClass(String var0, Class var1) throws ClassNotFoundException {
- Class var2;
- try {
- var2 = Class.forName(var0);
- } catch (ClassNotFoundException var5) {
- ClassLoader var4 = null;
- if (var1 != null) {
- var4 = var1.getClassLoader();
- }
-
- if (var4 == null) {
- throw var5;
- }
-
- var2 = var4.loadClass(var0);
- }
-
- return var2;
- }
-
- private static Class getRemoteClass(Remote var0) throws ClassNotFoundException {
- for(Class var1 = var0.getClass(); var1 != null; var1 = var1.getSuperclass()) {
- if (extendsRemote(var1.getInterfaces())) {
- return var1;
- }
- }
-
- throw new ClassNotFoundException("java.rmi.Remote");
- }
-
- private static boolean extendsRemote(Class[] var0) throws ClassNotFoundException {
- if (classRemote == null) {
- classRemote = Class.forName("java.rmi.Remote");
- }
-
- for(int var1 = var0.length - 1; var1 >= 0; --var1) {
- if (var0[var1].equals(classRemote)) {
- return true;
- }
-
- if (extendsRemote(var0[var1].getInterfaces())) {
- return true;
- }
- }
-
- return false;
- }
- }
-