home *** CD-ROM | disk | FTP | other *** search
- package java.security;
-
- import java.io.Serializable;
- import java.util.Enumeration;
- import java.util.Hashtable;
-
- final class BasicPermissionCollection extends PermissionCollection implements Serializable {
- private Hashtable permissions = new Hashtable(11);
- private boolean all_allowed = false;
-
- public BasicPermissionCollection() {
- }
-
- public void add(Permission var1) {
- if (!(var1 instanceof BasicPermission)) {
- throw new IllegalArgumentException("invalid permission: " + var1);
- } else if (((PermissionCollection)this).isReadOnly()) {
- throw new SecurityException("attempt to add a Permission to a readonly PermissionCollection");
- } else {
- BasicPermission var2 = (BasicPermission)var1;
- this.permissions.put(((Permission)var2).getName(), var1);
- if (!this.all_allowed && ((Permission)var2).getName().equals("*")) {
- this.all_allowed = true;
- }
-
- }
- }
-
- public boolean implies(Permission var1) {
- if (!(var1 instanceof BasicPermission)) {
- return false;
- } else {
- BasicPermission var2 = (BasicPermission)var1;
- if (this.all_allowed) {
- return true;
- } else {
- String var3 = ((Permission)var2).getName();
- Permission var4 = (Permission)this.permissions.get(var3);
- if (var4 != null) {
- return var4.implies(var1);
- } else {
- int var5;
- for(int var6 = var3.length() - 1; (var5 = var3.lastIndexOf(".", var6)) != -1; var6 = var5 - 1) {
- var3 = var3.substring(0, var5 + 1) + "*";
- var4 = (Permission)this.permissions.get(var3);
- if (var4 != null) {
- return var4.implies(var1);
- }
- }
-
- return false;
- }
- }
- }
- }
-
- public Enumeration elements() {
- return this.permissions.elements();
- }
- }
-