home *** CD-ROM | disk | FTP | other *** search
/ S283 Planetary Science &n…he Search for Life DVD 2 / DVD-ROM.iso / install / jre1_3 / lib / rt.jar / sun / rmi / server / MarshalInputStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  3.5 KB  |  119 lines

  1. package sun.rmi.server;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.ObjectInputStream;
  6. import java.io.ObjectStreamClass;
  7. import java.io.StreamCorruptedException;
  8. import java.lang.reflect.Proxy;
  9. import java.security.AccessControlException;
  10. import java.security.AccessController;
  11. import java.security.Permission;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. import sun.security.action.GetBooleanAction;
  15.  
  16. public class MarshalInputStream extends ObjectInputStream {
  17.    private boolean skipDefaultResolveClass = false;
  18.    private static final boolean useCodebaseOnly = (Boolean)AccessController.doPrivileged(new GetBooleanAction("java.rmi.server.useCodebaseOnly"));
  19.    protected static Map permittedSunClasses = new HashMap(3);
  20.    // $FF: synthetic field
  21.    static Class class$sun$rmi$server$Activation$ActivationMonitorImpl;
  22.    // $FF: synthetic field
  23.    static Class class$sun$rmi$server$Activation$ActivationSystemImpl;
  24.    // $FF: synthetic field
  25.    static Class class$sun$rmi$registry$RegistryImpl;
  26.  
  27.    public MarshalInputStream(InputStream var1) throws IOException, StreamCorruptedException {
  28.       super(var1);
  29.    }
  30.  
  31.    protected Class resolveClass(ObjectStreamClass var1) throws IOException, ClassNotFoundException {
  32.       Object var2 = this.readLocation();
  33.       String var3 = var1.getName();
  34.       if (!this.skipDefaultResolveClass) {
  35.          try {
  36.             return super.resolveClass(var1);
  37.          } catch (AccessControlException var7) {
  38.             return this.checkSunClass(var3, var7);
  39.          } catch (ClassNotFoundException var8) {
  40.          }
  41.       }
  42.  
  43.       try {
  44.          if (!useCodebaseOnly && var2 != null && var2 instanceof String) {
  45.             String var4 = (String)var2;
  46.             return LoaderHandler.loadClass(var4, var3);
  47.          } else {
  48.             return LoaderHandler.loadClass(var3);
  49.          }
  50.       } catch (AccessControlException var6) {
  51.          return this.checkSunClass(var3, var6);
  52.       }
  53.    }
  54.  
  55.    protected Class resolveProxyClass(String[] var1) throws IOException, ClassNotFoundException {
  56.       Object var2 = this.readLocation();
  57.       ClassLoader var3;
  58.       if (!useCodebaseOnly && var2 != null && var2 instanceof String) {
  59.          String var4 = (String)var2;
  60.          var3 = LoaderHandler.getClassLoader(var4);
  61.       } else {
  62.          var3 = LoaderHandler.getClassLoader((String)null);
  63.       }
  64.  
  65.       Class[] var6 = new Class[var1.length];
  66.  
  67.       for(int var5 = 0; var5 < var1.length; ++var5) {
  68.          var6[var5] = Class.forName(var1[var5], false, var3);
  69.       }
  70.  
  71.       return Proxy.getProxyClass(var3, var6);
  72.    }
  73.  
  74.    private Class checkSunClass(String var1, AccessControlException var2) throws AccessControlException {
  75.       Permission var3 = var2.getPermission();
  76.       String var4 = null;
  77.       if (var3 != null) {
  78.          var4 = var3.getName();
  79.       }
  80.  
  81.       Class var5 = (Class)permittedSunClasses.get(var1);
  82.       if (var4 != null && var5 != null && (var4.equals("accessClassInPackage.sun.rmi.server") || var4.equals("accessClassInPackage.sun.rmi.registry"))) {
  83.          return var5;
  84.       } else {
  85.          throw var2;
  86.       }
  87.    }
  88.  
  89.    protected Object readLocation() throws IOException, ClassNotFoundException {
  90.       return ((ObjectInputStream)this).readObject();
  91.    }
  92.  
  93.    void skipDefaultResolveClass() {
  94.       this.skipDefaultResolveClass = true;
  95.    }
  96.  
  97.    // $FF: synthetic method
  98.    static Class class$(String var0) {
  99.       try {
  100.          return Class.forName(var0);
  101.       } catch (ClassNotFoundException var2) {
  102.          throw new NoClassDefFoundError(((Throwable)var2).getMessage());
  103.       }
  104.    }
  105.  
  106.    static {
  107.       try {
  108.          String var0 = (class$sun$rmi$server$Activation$ActivationMonitorImpl == null ? (class$sun$rmi$server$Activation$ActivationMonitorImpl = class$("sun.rmi.server.Activation$ActivationMonitorImpl")) : class$sun$rmi$server$Activation$ActivationMonitorImpl).getName() + "_Stub";
  109.          String var1 = (class$sun$rmi$server$Activation$ActivationSystemImpl == null ? (class$sun$rmi$server$Activation$ActivationSystemImpl = class$("sun.rmi.server.Activation$ActivationSystemImpl")) : class$sun$rmi$server$Activation$ActivationSystemImpl).getName() + "_Stub";
  110.          String var2 = (class$sun$rmi$registry$RegistryImpl == null ? (class$sun$rmi$registry$RegistryImpl = class$("sun.rmi.registry.RegistryImpl")) : class$sun$rmi$registry$RegistryImpl).getName() + "_Stub";
  111.          permittedSunClasses.put(var0, Class.forName(var0));
  112.          permittedSunClasses.put(var1, Class.forName(var1));
  113.          permittedSunClasses.put(var2, Class.forName(var2));
  114.       } catch (ClassNotFoundException var3) {
  115.          throw new NoClassDefFoundError("Missing system class: " + ((Throwable)var3).getMessage());
  116.       }
  117.    }
  118. }
  119.