[8780cbec] | 1 | package com.nailabs.abac.process; |
---|
| 2 | |
---|
| 3 | import java.util.*; |
---|
| 4 | import edu.stanford.peer.rbtm.credential.*; |
---|
| 5 | //import edu.stanford.peer.rbtm.engine.StaticCredential; |
---|
| 6 | |
---|
| 7 | /** |
---|
| 8 | * Resource policy for negotiations. The policy can be queried using the |
---|
| 9 | * <code>requires</code> method with a specific credential resource |
---|
| 10 | * identifier, which can be a URl or a mnemonic identifier. |
---|
| 11 | */ |
---|
| 12 | public class ResourcePolicy implements java.io.Serializable { |
---|
| 13 | /** Internal hash table for policy storage */ |
---|
| 14 | private HashMap resourcePolicy = null; |
---|
| 15 | |
---|
| 16 | /** Default constructor with a non-resstrictive policy */ |
---|
| 17 | public ResourcePolicy() { |
---|
| 18 | resourcePolicy = new HashMap(); |
---|
| 19 | } |
---|
| 20 | |
---|
| 21 | /** Accessor for all the access control policy keys */ |
---|
| 22 | public Vector getResourceIdentifiers() { |
---|
| 23 | return new Vector(resourcePolicy.keySet()); |
---|
| 24 | } |
---|
| 25 | |
---|
| 26 | /** |
---|
| 27 | * Useful for forward discovery. |
---|
| 28 | * @return a set of all roles which satisfy the AC policy requirements |
---|
| 29 | */ |
---|
| 30 | public Vector getRequiredRoles() { |
---|
| 31 | return new Vector(resourcePolicy.values()); |
---|
| 32 | } |
---|
| 33 | |
---|
| 34 | /** Adds a single policy atom from String parameters. */ |
---|
| 35 | public void addResourceFact(String resourceID, String role) |
---|
| 36 | throws CredentialParsingException { |
---|
| 37 | try { |
---|
| 38 | addResourceFact(resourceID, (Role)StaticCredential.getRole(role)); |
---|
| 39 | } catch(Exception ex) { |
---|
| 40 | ex.printStackTrace(); |
---|
| 41 | } |
---|
| 42 | } |
---|
| 43 | |
---|
| 44 | /** Adds a single policy atom. */ |
---|
| 45 | public void addResourceFact(String key, Role role) { |
---|
| 46 | resourcePolicy.put(key, role); |
---|
| 47 | } |
---|
| 48 | |
---|
| 49 | /** Query the policy to determine the required role for a credential */ |
---|
| 50 | public Role requires(String resource) { |
---|
| 51 | return (Role)resourcePolicy.get(resource); |
---|
| 52 | } |
---|
| 53 | |
---|
| 54 | /** Returns the underlying storage data structure in a printable format */ |
---|
| 55 | public String toString() { |
---|
| 56 | if(resourcePolicy == null) |
---|
| 57 | return null; |
---|
| 58 | else |
---|
| 59 | return resourcePolicy.toString(); |
---|
| 60 | } |
---|
| 61 | |
---|
| 62 | } |
---|