home *** CD-ROM | disk | FTP | other *** search
/ Symantec Visual Cafe for Java 2.5 / symantec-visual-cafe-2.5-database-dev-edition.iso / VPage / Java.bin / CLASSES.ZIP / sun / rmi / server / RemoteProxy.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-07-08  |  4.5 KB  |  153 lines

  1. package sun.rmi.server;
  2.  
  3. import java.net.MalformedURLException;
  4. import java.rmi.Remote;
  5. import java.rmi.RemoteException;
  6. import java.rmi.StubNotFoundException;
  7. import java.rmi.server.LogStream;
  8. import java.rmi.server.RemoteRef;
  9. import java.rmi.server.RemoteStub;
  10. import java.rmi.server.Skeleton;
  11. import java.rmi.server.SkeletonNotFoundException;
  12. import sun.rmi.transport.ObjectTable;
  13. import sun.rmi.transport.Target;
  14. import sun.rmi.transport.Utils;
  15.  
  16. public final class RemoteProxy extends RemoteStub {
  17.    static int logLevel = LogStream.parseLevel(Utils.getProperty("sun.rmi.server.logLevel"));
  18.    private static Class classRemote = null;
  19.  
  20.    private RemoteProxy() {
  21.    }
  22.  
  23.    public static RemoteStub getStub(Remote var0, RemoteRef var1) throws StubNotFoundException {
  24.       Object var2 = null;
  25.  
  26.       try {
  27.          Class var4 = getRemoteClass(var0);
  28.          return getStub(var4.getName(), var4, var1);
  29.       } catch (ClassNotFoundException var3) {
  30.          throw new StubNotFoundException("Object does not implement an interface that extends java.rmi.Remote: " + var0.getClass().getName());
  31.       }
  32.    }
  33.  
  34.    public static RemoteStub getStub(String var0, RemoteRef var1) throws StubNotFoundException {
  35.       return getStub(var0, (Class)null, var1);
  36.    }
  37.  
  38.    public static RemoteStub getStub(String var0, Class var1, RemoteRef var2) throws StubNotFoundException {
  39.       String var3 = var0 + "_Stub";
  40.       Object var4 = null;
  41.  
  42.       try {
  43.          RMIClassLoader var5 = RMIClassLoader.getLocalLoader();
  44.          Class var6 = var5 == null ? loadClass(var3, var1) : var5.loadClass(var3);
  45.          var12 = (RemoteStub)var6.newInstance();
  46.       } catch (ClassNotFoundException var7) {
  47.          throw new StubNotFoundException("Class not found: " + var3, var7);
  48.       } catch (InstantiationException var8) {
  49.          throw new StubNotFoundException("Can't create stub: " + var3, var8);
  50.       } catch (IllegalAccessException var9) {
  51.          throw new StubNotFoundException("No public constructor: " + var3, var9);
  52.       } catch (MalformedURLException var10) {
  53.          throw new StubNotFoundException("Malformed URL", var10);
  54.       } catch (ClassCastException var11) {
  55.          throw new StubNotFoundException("Stub not of correct class: " + var3, var11);
  56.       }
  57.  
  58.       RemoteStub.setRef(var12, var2);
  59.       return var12;
  60.    }
  61.  
  62.    public static RemoteStub getProxy(Remote var0) throws RemoteException {
  63.       RemoteStub var2;
  64.       if (var0 instanceof RemoteStub) {
  65.          var2 = (RemoteStub)var0;
  66.       } else {
  67.          Target var1;
  68.          if ((var1 = ObjectTable.getTarget(var0)) == null) {
  69.             throw new StubNotFoundException("Remote object not exported: " + var0.getClass().getName());
  70.          }
  71.  
  72.          var2 = var1.getStub();
  73.       }
  74.  
  75.       return var2;
  76.    }
  77.  
  78.    public static Skeleton getSkeleton(Remote var0) throws SkeletonNotFoundException {
  79.       Class var1;
  80.       try {
  81.          var1 = getRemoteClass(var0);
  82.       } catch (ClassNotFoundException var10) {
  83.          throw new SkeletonNotFoundException("Object does not implement an interface that extends java.rmi.Remote: " + var0.getClass().getName());
  84.       }
  85.  
  86.       String var2 = var1.getName() + "_Skel";
  87.  
  88.       try {
  89.          RMIClassLoader var3 = RMIClassLoader.getLocalLoader();
  90.          Class var4 = var3 == null ? loadClass(var2, var1) : var3.loadClass(var2);
  91.          return (Skeleton)var4.newInstance();
  92.       } catch (ClassNotFoundException var5) {
  93.          throw new SkeletonNotFoundException("Skeleton class not found: " + var2, var5);
  94.       } catch (InstantiationException var6) {
  95.          throw new SkeletonNotFoundException("Can't create skeleton: " + var2, var6);
  96.       } catch (IllegalAccessException var7) {
  97.          throw new SkeletonNotFoundException("No public constructor: " + var2, var7);
  98.       } catch (MalformedURLException var8) {
  99.          throw new SkeletonNotFoundException("Malformed URL", var8);
  100.       } catch (ClassCastException var9) {
  101.          throw new SkeletonNotFoundException("Skeleton not of correct class: " + var2, var9);
  102.       }
  103.    }
  104.  
  105.    private static Class loadClass(String var0, Class var1) throws ClassNotFoundException {
  106.       Class var2;
  107.       try {
  108.          var2 = Class.forName(var0);
  109.       } catch (ClassNotFoundException var5) {
  110.          ClassLoader var4 = null;
  111.          if (var1 != null) {
  112.             var4 = var1.getClassLoader();
  113.          }
  114.  
  115.          if (var4 == null) {
  116.             throw var5;
  117.          }
  118.  
  119.          var2 = var4.loadClass(var0);
  120.       }
  121.  
  122.       return var2;
  123.    }
  124.  
  125.    private static Class getRemoteClass(Remote var0) throws ClassNotFoundException {
  126.       for(Class var1 = var0.getClass(); var1 != null; var1 = var1.getSuperclass()) {
  127.          if (extendsRemote(var1.getInterfaces())) {
  128.             return var1;
  129.          }
  130.       }
  131.  
  132.       throw new ClassNotFoundException("java.rmi.Remote");
  133.    }
  134.  
  135.    private static boolean extendsRemote(Class[] var0) throws ClassNotFoundException {
  136.       if (classRemote == null) {
  137.          classRemote = Class.forName("java.rmi.Remote");
  138.       }
  139.  
  140.       for(int var1 = var0.length - 1; var1 >= 0; --var1) {
  141.          if (var0[var1].equals(classRemote)) {
  142.             return true;
  143.          }
  144.  
  145.          if (extendsRemote(var0[var1].getInterfaces())) {
  146.             return true;
  147.          }
  148.       }
  149.  
  150.       return false;
  151.    }
  152. }
  153.