home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 1999 March / maximum-cd-1999-03.iso / Feature / Lotus / ORGANIZE / COMPNENT / LTOUIN21.ZIP / sun / beanbox / ObjectInputStreamWithLoader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-03-12  |  2.1 KB  |  79 lines

  1. package sun.beanbox;
  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.Array;
  9.  
  10. public class ObjectInputStreamWithLoader extends ObjectInputStream {
  11.    private ClassLoader loader;
  12.  
  13.    public ObjectInputStreamWithLoader(InputStream var1, ClassLoader var2) throws IOException, StreamCorruptedException {
  14.       super(var1);
  15.       if (var2 != null && var1 != null) {
  16.          this.loader = var2;
  17.       } else {
  18.          throw new IllegalArgumentException("Illegal null argument to ObjectInputStreamWithLoader");
  19.       }
  20.    }
  21.  
  22.    public ClassLoader getClassLoader() {
  23.       return this.loader;
  24.    }
  25.  
  26.    private Class primitiveType(char var1) {
  27.       switch (var1) {
  28.          case 'B':
  29.             return Byte.TYPE;
  30.          case 'C':
  31.             return Character.TYPE;
  32.          case 'D':
  33.             return Double.TYPE;
  34.          case 'F':
  35.             return Float.TYPE;
  36.          case 'I':
  37.             return Integer.TYPE;
  38.          case 'J':
  39.             return Long.TYPE;
  40.          case 'S':
  41.             return Short.TYPE;
  42.          case 'Z':
  43.             return Boolean.TYPE;
  44.          default:
  45.             return null;
  46.       }
  47.    }
  48.  
  49.    protected Class resolveClass(ObjectStreamClass var1) throws IOException, ClassNotFoundException {
  50.       String var2 = var1.getName();
  51.       if (!var2.startsWith("[")) {
  52.          return this.loader.loadClass(var2);
  53.       } else {
  54.          int var4;
  55.          for(var4 = 1; var2.charAt(var4) == '['; ++var4) {
  56.          }
  57.  
  58.          Class var3;
  59.          if (var2.charAt(var4) == 'L') {
  60.             var3 = this.loader.loadClass(var2.substring(var4 + 1, var2.length() - 1));
  61.          } else {
  62.             if (var2.length() != var4 + 1) {
  63.                throw new ClassNotFoundException(var2);
  64.             }
  65.  
  66.             var3 = this.primitiveType(var2.charAt(var4));
  67.          }
  68.  
  69.          int[] var5 = new int[var4];
  70.  
  71.          for(int var6 = 0; var6 < var4; ++var6) {
  72.             var5[var6] = 0;
  73.          }
  74.  
  75.          return Array.newInstance(var3, var5).getClass();
  76.       }
  77.    }
  78. }
  79.