1 22 package org.jboss.test.jacc.test.portal; 23 24 import org.jboss.logging.Logger; 25 26 import java.io.Serializable ; 27 import java.security.Permission ; 28 import java.security.PermissionCollection ; 29 import java.util.StringTokenizer ; 30 31 40 public final class InstancePermission extends PortalPermission implements Serializable 41 { 42 43 private static Logger log = Logger.getLogger(InstancePermission.class); 44 45 48 public static final String VIEW = "view"; 49 50 private static final int VIEW_MASK = 0x00000001; 51 52 private final String uri; 53 54 private final int mask; 55 56 private final String actions; 57 58 59 private boolean trace; 60 61 69 public InstancePermission(String uri, String actions) 70 { 71 super(uri); 72 73 if (uri == null || actions == null) 75 { 76 throw new IllegalArgumentException ("Arguments must not be null [" + uri + "][" + actions + "]"); 77 } 78 79 int mask = 0; 81 StringTokenizer tokens = new StringTokenizer (actions, ","); 82 while (tokens.hasMoreTokens()) 83 { 84 String action = tokens.nextToken().trim(); 85 86 if (VIEW.equals(action)) 87 { 88 mask |= VIEW_MASK; 89 } 90 else 91 { 92 log.warn("Unknown action in string [" + action + "] will be ignored"); 93 } 94 } 95 96 this.mask = mask; 98 this.uri = uri; 99 this.actions = actions; 100 this.trace = log.isTraceEnabled(); 101 } 102 103 public boolean equals(Object o) 104 { 105 if (this == o) 106 { 107 return true; 108 } 109 if (o == null || getClass() != o.getClass()) 110 { 111 return false; 112 } 113 114 final InstancePermission that = (InstancePermission)o; 115 116 if (!uri.equals(that.uri)) 117 { 118 return false; 119 } 120 121 if (that.mask != this.mask) 122 { 123 return false; 124 } 125 126 return true; 127 } 128 129 public int hashCode() 130 { 131 int result; 132 result = mask; 133 result = 29 * result + uri.hashCode(); 134 return result; 135 } 136 137 public String toString() 138 { 139 return "InstancePermission[" + uri + "] [" + actions + "]"; 140 } 141 142 public String getActions() 143 { 144 return actions; 145 } 146 147 public String getURI() 148 { 149 return uri; 150 } 151 152 public boolean implies(Permission permission) 153 { 154 if (trace) 155 { 156 log.trace("implies ? " + getURI() + ": [" + permission + "]"); 157 } 158 if (permission instanceof InstancePermission) 159 { 160 InstancePermission other = (InstancePermission)permission; 161 return uri.equals(other.uri) && (this.mask & other.mask) == other.mask; 162 } 163 else 164 { 165 return false; 166 } 167 } 168 169 public PermissionCollection newPermissionCollection() 170 { 171 return new InstancePermissionCollection(); 172 } 173 174 public String getType() 175 { 176 return "instance"; 177 } 178 } 179 | Popular Tags |