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 / AppletClassLoader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-01-31  |  4.3 KB  |  160 lines

  1. package com.ms.applet;
  2.  
  3. import java.io.FileNotFoundException;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.net.URL;
  7. import java.net.URLConnection;
  8. import java.util.Hashtable;
  9.  
  10. class AppletClassLoader extends AppletBaseClassLoader {
  11.    boolean verboseClassLoading = false;
  12.    Hashtable classes = new Hashtable();
  13.  
  14.    AppletClassLoader(URL var1) {
  15.       super.base = var1;
  16.    }
  17.  
  18.    private Class loadClass(URL var1) throws IOException {
  19.       InputStream var2 = null;
  20.  
  21.       try {
  22.          Class var18;
  23.          try {
  24.             URLConnection var5 = var1.openConnection();
  25.             var5.setAllowUserInteraction(false);
  26.             var5.setUseCaches(true);
  27.             var2 = var5.getInputStream();
  28.             int var6 = var5.getContentLength();
  29.             byte[] var7 = new byte[var6 == -1 ? 4096 : var6];
  30.             int var8 = 0;
  31.             Thread var10 = Thread.currentThread();
  32.  
  33.             int var9;
  34.             while((var9 = var2.read(var7, var8, var7.length - var8)) >= 0 && !var10.isInterrupted()) {
  35.                if ((var8 += var9) == var7.length) {
  36.                   if (var6 >= 0) {
  37.                      break;
  38.                   }
  39.  
  40.                   byte[] var11 = new byte[var8 * 2];
  41.                   System.arraycopy(var7, 0, var11, 0, var8);
  42.                   var7 = var11;
  43.                }
  44.             }
  45.  
  46.             if (var10.isInterrupted()) {
  47.                throw new IOException("class loading interrupted: " + var1);
  48.             }
  49.  
  50.             var18 = ((ClassLoader)this).defineClass(var7, 0, var8);
  51.          } finally {
  52.             if (var2 != null) {
  53.                var2.close();
  54.             }
  55.  
  56.          }
  57.  
  58.          return var18;
  59.       } catch (IOException var16) {
  60.          ((Throwable)var16).printStackTrace();
  61.          throw var16;
  62.       } catch (Throwable var17) {
  63.          var17.printStackTrace();
  64.          throw new IOException("class not loaded: " + var1);
  65.       }
  66.    }
  67.  
  68.    public Class loadClass(String var1) throws ClassNotFoundException {
  69.       return this.loadClass(var1, true);
  70.    }
  71.  
  72.    protected Class loadClass(String var1, boolean var2) throws ClassNotFoundException {
  73.       Class var3 = (Class)this.classes.get(var1);
  74.       if (var3 == null) {
  75.          SecurityManager var4 = System.getSecurityManager();
  76.          if (var4 != null) {
  77.             int var5 = var1.lastIndexOf(46);
  78.             if (var5 >= 0) {
  79.                var4.checkPackageAccess(var1.substring(0, var5));
  80.             }
  81.          }
  82.  
  83.          try {
  84.             Class var7 = ((ClassLoader)this).findSystemClass(var1);
  85.             return var7;
  86.          } catch (Throwable var6) {
  87.             var3 = this.findClass(var1);
  88.          }
  89.       }
  90.  
  91.       if (var3 == null) {
  92.          throw new ClassNotFoundException(var1);
  93.       } else {
  94.          if (var2) {
  95.             ((ClassLoader)this).resolveClass(var3);
  96.          }
  97.  
  98.          return var3;
  99.       }
  100.    }
  101.  
  102.    void errorMsg(String var1, String var2) {
  103.    }
  104.  
  105.    void errorMsg(String var1, String var2, String var3) {
  106.    }
  107.  
  108.    private synchronized Class findClass(String var1) {
  109.       Class var2 = (Class)this.classes.get(var1);
  110.       if (var2 != null) {
  111.          return var2;
  112.       } else {
  113.          SecurityManager var3 = System.getSecurityManager();
  114.          if (var3 != null) {
  115.             int var4 = var1.lastIndexOf(46);
  116.             if (var4 >= 0 && !((AppletBaseClassLoader)this).getSecureState()) {
  117.                var3.checkPackageDefinition(var1.substring(0, var4));
  118.             }
  119.          }
  120.  
  121.          String var24 = var1.replace('.', '/') + ".class";
  122.  
  123.          try {
  124.             URL var5 = new URL(super.base, var24);
  125.             BrowserAppletFrame var6 = ((AppletBaseClassLoader)this).currentAppletFrame();
  126.  
  127.             try {
  128.                ((AppletBaseClassLoader)this).showDownloadUI(var6, 260, var5);
  129.                var2 = this.loadClass(var5);
  130.             } finally {
  131.                ((AppletBaseClassLoader)this).hideDownloadUI(var6);
  132.             }
  133.  
  134.             if (!var1.equals(var2.getName())) {
  135.                Class var7 = var2;
  136.                Object var23 = null;
  137.                throw new ClassFormatError(var1 + " != " + var7.getName());
  138.             }
  139.  
  140.             this.classes.put(var1, var2);
  141.          } catch (FileNotFoundException var17) {
  142.             this.errorMsg("filenotfound", var1);
  143.          } catch (ClassFormatError var18) {
  144.             this.errorMsg("fileformat", var1);
  145.          } catch (IOException var19) {
  146.             this.errorMsg("fileioexception", var1);
  147.          } catch (Exception var20) {
  148.             this.errorMsg("fileexception", ((Throwable)var20).toString(), var1);
  149.          } catch (ThreadDeath var21) {
  150.             this.errorMsg("filedeath", var1);
  151.             throw var21;
  152.          } catch (Error var22) {
  153.             this.errorMsg("fileerror", ((Throwable)var22).toString(), var1);
  154.          }
  155.  
  156.          return var2;
  157.       }
  158.    }
  159. }
  160.