home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 129 / dpcs1198.iso / Internet / Compu / Win95 / MSIE302.LIB / MSIE302.EXE / ieakjava.exe / CLASSR.EXE / com / ms / applet / CabClassLoader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-01-31  |  2.8 KB  |  106 lines

  1. package com.ms.applet;
  2.  
  3. import java.net.URL;
  4. import java.util.Hashtable;
  5.  
  6. class CabClassLoader extends AppletBaseClassLoader {
  7.    Hashtable CabSubFilesTable = new Hashtable();
  8.    Hashtable DefinedClasses = new Hashtable();
  9.    String CabFileURL;
  10.    int InternalHandle;
  11.  
  12.    synchronized byte[] getDataItem(String var1) {
  13.       String var2 = var1.replace('/', '\\');
  14.       return !this.CabSubFilesTable.containsKey(var2) ? null : this.getBytes((CabSubFile)this.CabSubFilesTable.get(var2));
  15.    }
  16.  
  17.    private void load() {
  18.       synchronized(this.getClass()){}
  19.  
  20.       try {
  21.          this.load0();
  22.       } catch (Throwable var4) {
  23.          throw var4;
  24.       }
  25.  
  26.    }
  27.  
  28.    public void finalize() {
  29.       this.cleanup();
  30.    }
  31.  
  32.    private native byte[] getBytes(CabSubFile var1);
  33.  
  34.    private native void cleanup();
  35.  
  36.    boolean isDataStore() {
  37.       return true;
  38.    }
  39.  
  40.    private native void load0();
  41.  
  42.    protected Class loadClass(String var1) throws ClassNotFoundException {
  43.       return this.loadClass(var1, true);
  44.    }
  45.  
  46.    protected synchronized Class loadClass(String var1, boolean var2) throws ClassNotFoundException {
  47.       if (this.DefinedClasses.containsKey(var1)) {
  48.          return (Class)this.DefinedClasses.get(var1);
  49.       } else {
  50.          SecurityManager var4 = System.getSecurityManager();
  51.          if (var4 != null) {
  52.             int var5 = var1.lastIndexOf(46);
  53.             if (var5 >= 0) {
  54.                var4.checkPackageAccess(var1.substring(0, var5));
  55.             }
  56.          }
  57.  
  58.          try {
  59.             return ((ClassLoader)this).findSystemClass(var1);
  60.          } catch (Throwable var8) {
  61.             if (var4 != null) {
  62.                int var12 = var1.lastIndexOf(46);
  63.                if (var12 >= 0 && !((AppletBaseClassLoader)this).getSecureState()) {
  64.                   var4.checkPackageDefinition(var1.substring(0, var12));
  65.                }
  66.             }
  67.  
  68.             String var10 = var1.replace('.', '\\');
  69.             var10 = var10 + ".class";
  70.             if (this.CabSubFilesTable.containsKey(var10)) {
  71.                CabSubFile var13 = (CabSubFile)this.CabSubFilesTable.get(var10);
  72.                Class var3 = ((ClassLoader)this).defineClass(this.getBytes(var13), 0, var13.FileLength);
  73.                if (!var1.equals(var3.getName())) {
  74.                   Class var6 = var3;
  75.                   Object var9 = null;
  76.                   throw new ClassFormatError(var1 + " != " + var6.getName());
  77.                } else {
  78.                   this.DefinedClasses.put(var1, var3);
  79.                   if (var2) {
  80.                      ((ClassLoader)this).resolveClass(var3);
  81.                   }
  82.  
  83.                   return var3;
  84.                }
  85.             } else {
  86.                throw new ClassNotFoundException(var1);
  87.             }
  88.          }
  89.       }
  90.    }
  91.  
  92.    CabClassLoader(URL var1, URL var2) {
  93.       super.base = var2;
  94.       this.CabFileURL = var1.toExternalForm();
  95.       BrowserAppletFrame var3 = ((AppletBaseClassLoader)this).currentAppletFrame();
  96.  
  97.       try {
  98.          ((AppletBaseClassLoader)this).showDownloadUI(var3, 261, var1);
  99.          this.load();
  100.       } finally {
  101.          ((AppletBaseClassLoader)this).hideDownloadUI(var3);
  102.       }
  103.  
  104.    }
  105. }
  106.