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 / java / security / SecureClassLoader.class (.txt) < prev    next >
Encoding:
Java Class File  |  1979-12-31  |  2.2 KB  |  80 lines

  1. package java.security;
  2.  
  3. import java.util.Hashtable;
  4. import sun.security.util.Debug;
  5.  
  6. public class SecureClassLoader extends ClassLoader {
  7.    private boolean initialized = false;
  8.    private Hashtable pdcache = new Hashtable(11);
  9.    private static final Debug debug = Debug.getInstance("scl");
  10.  
  11.    protected SecureClassLoader(ClassLoader var1) {
  12.       super(var1);
  13.       SecurityManager var2 = System.getSecurityManager();
  14.       if (var2 != null) {
  15.          var2.checkCreateClassLoader();
  16.       }
  17.  
  18.       this.initialized = true;
  19.    }
  20.  
  21.    protected SecureClassLoader() {
  22.       SecurityManager var1 = System.getSecurityManager();
  23.       if (var1 != null) {
  24.          var1.checkCreateClassLoader();
  25.       }
  26.  
  27.       this.initialized = true;
  28.    }
  29.  
  30.    protected final Class defineClass(String var1, byte[] var2, int var3, int var4, CodeSource var5) {
  31.       return var5 == null ? ((ClassLoader)this).defineClass(var1, var2, var3, var4) : ((ClassLoader)this).defineClass(var1, var2, var3, var4, this.getProtectionDomain(var5));
  32.    }
  33.  
  34.    protected PermissionCollection getPermissions(CodeSource var1) {
  35.       this.check();
  36.       Policy var2 = Policy.getPolicyNoCheck();
  37.       if (var2 == null) {
  38.          return null;
  39.       } else {
  40.          PermissionCollection var3 = var2.getPermissions(var1);
  41.          return var3;
  42.       }
  43.    }
  44.  
  45.    private ProtectionDomain getProtectionDomain(CodeSource var1) {
  46.       if (var1 == null) {
  47.          return null;
  48.       } else {
  49.          ProtectionDomain var2 = (ProtectionDomain)this.pdcache.get(var1);
  50.          if (var2 == null) {
  51.             Hashtable var3 = this.pdcache;
  52.             synchronized(var3) {
  53.                var2 = (ProtectionDomain)this.pdcache.get(var1);
  54.                if (var2 == null) {
  55.                   PermissionCollection var4 = this.getPermissions(var1);
  56.                   if (debug != null) {
  57.                      debug.println(" getPermissions " + var1);
  58.                      debug.println("  " + var4);
  59.                      debug.println("");
  60.                   }
  61.  
  62.                   var2 = new ProtectionDomain(var1, var4);
  63.                   if (var2 != null) {
  64.                      this.pdcache.put(var1, var2);
  65.                   }
  66.                }
  67.             }
  68.          }
  69.  
  70.          return var2;
  71.       }
  72.    }
  73.  
  74.    private void check() {
  75.       if (!this.initialized) {
  76.          throw new SecurityException("ClassLoader object not initialized");
  77.       }
  78.    }
  79. }
  80.