Index: fedd/abac-src/rbtm/access/AckFact.java
===================================================================
--- fedd/abac-src/rbtm/access/AckFact.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/access/AckFact.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,82 @@
+package com.nailabs.abac.access;
+
+import edu.stanford.peer.rbtm.credential.*;
+
+public class AckFact {
+
+    /**
+     * This attribute defines the scope of the AckFact instance.
+     */
+    protected RoleName attribute;
+
+    /**
+     * Optional string meta-identifier for the value field.
+     */
+    protected String field;
+
+    /**
+     * Optional value corresponding to the named field.
+     */
+    protected Object value;
+
+    /**
+     * The credential role required to match with the requesting subject.
+     */
+    protected EntityExpression requirement;
+    
+    /**
+     * A constant to represent a default value (aka a wildcard).
+     */
+    static final String DEFAULT = "default";
+
+    /**
+     * A true constant for denoting that no requirements are necessary. 
+     * This can also be implicitly represented as a null requirement.
+     */
+    static final String TRUE = "true";
+
+    /**
+     * Basic constructor method. This method subtitutes a default key-value
+     * pair.
+     */
+    public AckFact(RoleName attribute, EntityExpression req) {
+	this(attribute, DEFAULT, DEFAULT, req);
+    }
+
+    /**
+     * Explicit constructor method. This represents a fully expanded policy
+     * fact.
+     */
+    public AckFact(RoleName attr,String key,Object val,EntityExpression req) {
+	attribute = attr;
+	field = key;
+	value = val;
+	requirement = req;
+    }
+
+    /**
+     * An accessor method for the attribute which needs to be unlocked. 
+     * <B> This is private policy information and should not be xmitted </B>
+     */
+    public RoleName getAttribute() { return attribute; }
+
+    /**
+     * An accessor method for the optional special case meta-type.
+     * <B> This is private policy information and should not be xmitted </B>
+     */
+    public String getField() { return field; }
+
+    /**
+     * An accessor method for the optional special case value.
+     * <B> This is private policy information and should not be xmitted </B>
+     */
+    public Object getValue() { return value; }
+
+    /**
+     * An accessor method for an expression which can unlocked the attribute
+     * if the expression is proved to be true.
+     * <B> This is public policy information but if transmitted may indicate
+     * that particular credential is possessed.</B>
+     */
+    public EntityExpression getRequirement() { return requirement; }
+}
Index: fedd/abac-src/rbtm/access/AckPolicy.java
===================================================================
--- fedd/abac-src/rbtm/access/AckPolicy.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/access/AckPolicy.java	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,28 @@
+package com.nailabs.abac.access;
+
+import java.util.*;
+import edu.stanford.peer.rbtm.credential.*;
+
+public class AckPolicy implements edu.stanford.peer.rbtm.RBTMConstants {
+
+    public HashMap factMap = new HashMap(FACT_MAP_SIZE);
+    
+    public void addAckFact(String base, String roleName, String expr) {
+	try {
+	    factMap.put(new Role(base, roleName), 
+			StaticCredential.getEntityExpression(expr));
+	}
+	catch(Exception ex) {
+	    if(DEBUG)ex.printStackTrace();
+	}
+    }
+
+    public void addAckFact(Role role, EntityExpression req) {
+	factMap.put(role, req);
+    }
+
+    public EntityExpression requires(Role key) {
+	return (EntityExpression)factMap.get(key);
+    }
+
+}
Index: fedd/abac-src/rbtm/access/CVS/Entries
===================================================================
--- fedd/abac-src/rbtm/access/CVS/Entries	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/access/CVS/Entries	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,3 @@
+/AckFact.java/1.3/Fri Dec 14 20:17:22 2001//
+/AckPolicy.java/1.1/Fri Dec 14 22:51:32 2001//
+D
Index: fedd/abac-src/rbtm/access/CVS/Repository
===================================================================
--- fedd/abac-src/rbtm/access/CVS/Repository	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/access/CVS/Repository	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,1 @@
+rbtm/access
Index: fedd/abac-src/rbtm/access/CVS/Root
===================================================================
--- fedd/abac-src/rbtm/access/CVS/Root	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
+++ fedd/abac-src/rbtm/access/CVS/Root	(revision 8780cbecc6db2bdc2b9ef31eec6e5209ad3bff15)
@@ -0,0 +1,1 @@
+:ext:jjacobs@src.columbia.sparta.com/cvs/abac
