home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / security / Permissions.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.1 KB  |  160 lines

  1. package java.security;
  2.  
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.ObjectStreamField;
  7. import java.io.Serializable;
  8. import java.security.cert.Certificate;
  9. import java.util.Enumeration;
  10. import java.util.HashMap;
  11. import java.util.Hashtable;
  12. import java.util.List;
  13. import java.util.Map;
  14.  
  15. public final class Permissions extends PermissionCollection implements Serializable {
  16.    private transient Map<Class<?>, PermissionCollection> permsMap = new HashMap(11);
  17.    private transient boolean hasUnresolved = false;
  18.    PermissionCollection allPermission = null;
  19.    private static final long serialVersionUID = 4858622370623524688L;
  20.    private static final ObjectStreamField[] serialPersistentFields = new ObjectStreamField[]{new ObjectStreamField("perms", Hashtable.class), new ObjectStreamField("allPermission", PermissionCollection.class)};
  21.  
  22.    public void add(Permission var1) {
  23.       if (this.isReadOnly()) {
  24.          throw new SecurityException("attempt to add a Permission to a readonly Permissions object");
  25.       } else {
  26.          PermissionCollection var2;
  27.          synchronized(this) {
  28.             var2 = this.getPermissionCollection(var1, true);
  29.             var2.add(var1);
  30.          }
  31.  
  32.          if (var1 instanceof AllPermission) {
  33.             this.allPermission = var2;
  34.          }
  35.  
  36.          if (var1 instanceof UnresolvedPermission) {
  37.             this.hasUnresolved = true;
  38.          }
  39.  
  40.       }
  41.    }
  42.  
  43.    public boolean implies(Permission var1) {
  44.       if (this.allPermission != null) {
  45.          return true;
  46.       } else {
  47.          synchronized(this) {
  48.             PermissionCollection var3 = this.getPermissionCollection(var1, false);
  49.             return var3 != null ? var3.implies(var1) : false;
  50.          }
  51.       }
  52.    }
  53.  
  54.    public Enumeration<Permission> elements() {
  55.       synchronized(this) {
  56.          return new PermissionsEnumerator(this.permsMap.values().iterator());
  57.       }
  58.    }
  59.  
  60.    private PermissionCollection getPermissionCollection(Permission var1, boolean var2) {
  61.       Class var3 = var1.getClass();
  62.       Object var4 = (PermissionCollection)this.permsMap.get(var3);
  63.       if (!this.hasUnresolved && !var2) {
  64.          return (PermissionCollection)var4;
  65.       } else {
  66.          if (var4 == null) {
  67.             var4 = this.hasUnresolved ? this.getUnresolvedPermissions(var1) : null;
  68.             if (var4 == null && var2) {
  69.                var4 = var1.newPermissionCollection();
  70.                if (var4 == null) {
  71.                   var4 = new PermissionsHash();
  72.                }
  73.             }
  74.  
  75.             if (var4 != null) {
  76.                this.permsMap.put(var3, var4);
  77.             }
  78.          }
  79.  
  80.          return (PermissionCollection)var4;
  81.       }
  82.    }
  83.  
  84.    private PermissionCollection getUnresolvedPermissions(Permission var1) {
  85.       UnresolvedPermissionCollection var2 = (UnresolvedPermissionCollection)this.permsMap.get(UnresolvedPermission.class);
  86.       if (var2 == null) {
  87.          return null;
  88.       } else {
  89.          List var3 = var2.getUnresolvedPermissions(var1);
  90.          if (var3 == null) {
  91.             return null;
  92.          } else {
  93.             Certificate[] var4 = null;
  94.             Object[] var5 = var1.getClass().getSigners();
  95.             int var6 = 0;
  96.             if (var5 != null) {
  97.                for(int var7 = 0; var7 < var5.length; ++var7) {
  98.                   if (var5[var7] instanceof Certificate) {
  99.                      ++var6;
  100.                   }
  101.                }
  102.  
  103.                var4 = new Certificate[var6];
  104.                var6 = 0;
  105.  
  106.                for(int var16 = 0; var16 < var5.length; ++var16) {
  107.                   if (var5[var16] instanceof Certificate) {
  108.                      var4[var6++] = (Certificate)var5[var16];
  109.                   }
  110.                }
  111.             }
  112.  
  113.             Object var17 = null;
  114.             synchronized(var3) {
  115.                int var9 = var3.size();
  116.  
  117.                for(int var10 = 0; var10 < var9; ++var10) {
  118.                   UnresolvedPermission var11 = (UnresolvedPermission)var3.get(var10);
  119.                   Permission var12 = var11.resolve(var1, var4);
  120.                   if (var12 != null) {
  121.                      if (var17 == null) {
  122.                         var17 = var1.newPermissionCollection();
  123.                         if (var17 == null) {
  124.                            var17 = new PermissionsHash();
  125.                         }
  126.                      }
  127.  
  128.                      ((PermissionCollection)var17).add(var12);
  129.                   }
  130.                }
  131.  
  132.                return (PermissionCollection)var17;
  133.             }
  134.          }
  135.       }
  136.    }
  137.  
  138.    private void writeObject(ObjectOutputStream var1) throws IOException {
  139.       Hashtable var2 = new Hashtable(this.permsMap.size() * 2);
  140.       synchronized(this) {
  141.          var2.putAll(this.permsMap);
  142.       }
  143.  
  144.       ObjectOutputStream.PutField var3 = var1.putFields();
  145.       var3.put("allPermission", this.allPermission);
  146.       var3.put("perms", var2);
  147.       var1.writeFields();
  148.    }
  149.  
  150.    private void readObject(ObjectInputStream var1) throws IOException, ClassNotFoundException {
  151.       ObjectInputStream.GetField var2 = var1.readFields();
  152.       this.allPermission = (PermissionCollection)var2.get("allPermission", (Object)null);
  153.       Hashtable var3 = (Hashtable)var2.get("perms", (Object)null);
  154.       this.permsMap = new HashMap(var3.size() * 2);
  155.       this.permsMap.putAll(var3);
  156.       UnresolvedPermissionCollection var4 = (UnresolvedPermissionCollection)this.permsMap.get(UnresolvedPermission.class);
  157.       this.hasUnresolved = var4 != null && var4.elements().hasMoreElements();
  158.    }
  159. }
  160.