home *** CD-ROM | disk | FTP | other *** search
- package java.security;
-
- import java.util.Hashtable;
- import sun.security.util.Debug;
-
- public class SecureClassLoader extends ClassLoader {
- private boolean initialized = false;
- private Hashtable pdcache = new Hashtable(11);
- private static final Debug debug = Debug.getInstance("scl");
-
- protected SecureClassLoader(ClassLoader var1) {
- super(var1);
- SecurityManager var2 = System.getSecurityManager();
- if (var2 != null) {
- var2.checkCreateClassLoader();
- }
-
- this.initialized = true;
- }
-
- protected SecureClassLoader() {
- SecurityManager var1 = System.getSecurityManager();
- if (var1 != null) {
- var1.checkCreateClassLoader();
- }
-
- this.initialized = true;
- }
-
- protected final Class defineClass(String var1, byte[] var2, int var3, int var4, CodeSource var5) {
- return var5 == null ? ((ClassLoader)this).defineClass(var1, var2, var3, var4) : ((ClassLoader)this).defineClass(var1, var2, var3, var4, this.getProtectionDomain(var5));
- }
-
- protected PermissionCollection getPermissions(CodeSource var1) {
- this.check();
- Policy var2 = Policy.getPolicyNoCheck();
- if (var2 == null) {
- return null;
- } else {
- PermissionCollection var3 = var2.getPermissions(var1);
- return var3;
- }
- }
-
- private ProtectionDomain getProtectionDomain(CodeSource var1) {
- if (var1 == null) {
- return null;
- } else {
- ProtectionDomain var2 = (ProtectionDomain)this.pdcache.get(var1);
- if (var2 == null) {
- Hashtable var3 = this.pdcache;
- synchronized(var3) {
- var2 = (ProtectionDomain)this.pdcache.get(var1);
- if (var2 == null) {
- PermissionCollection var4 = this.getPermissions(var1);
- if (debug != null) {
- debug.println(" getPermissions " + var1);
- debug.println(" " + var4);
- debug.println("");
- }
-
- var2 = new ProtectionDomain(var1, var4);
- if (var2 != null) {
- this.pdcache.put(var1, var2);
- }
- }
- }
- }
-
- return var2;
- }
- }
-
- private void check() {
- if (!this.initialized) {
- throw new SecurityException("ClassLoader object not initialized");
- }
- }
- }
-