package org.exist.client.xacml;
import java.util.Set;
import com.sun.xacml.ParsingException;
import com.sun.xacml.attr.AttributeDesignator;
import com.sun.xacml.attr.AttributeValue;
/**
* This interface defines methods for restricting
* the functions or values a user is allowed to
* enter for a given attribute.
*/
public interface AttributeHandler
{
/**
* Removes functions that should not be available for the user to
* apply to an attribute.
*
* @param functions The <code>Set</code> of functions to modify in place.
* @param attribute The relevant attribute
*/
void filterFunctions(Set functions, AttributeDesignator attribute);
/**
* Determines which values the user may select for an attribute. If the user
* may enter values not in this set, this function should return true.
*
* @param values The <code>Set</code> to which allowed values should be added.
* @param attribute The relevant attribute
* @return true if the user is not restricted to the values in the set,
* false otherwise
*/
boolean getAllowedValues(Set values, AttributeDesignator attribute);
/**
* Determines if the user entered value is valid.
*
* @param value The value to check
* @param attribute The relevant attribute
* @throws ParsingException if the user entered value is invalid
*/
void checkUserValue(AttributeValue value, AttributeDesignator attribute) throws ParsingException;
}