package org.exist.client.xacml;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.exist.security.xacml.XACMLConstants;
import com.sun.xacml.ParsingException;
import com.sun.xacml.attr.AttributeDesignator;
import com.sun.xacml.attr.AttributeValue;
public class ActionAttributeHandler implements AttributeHandler
{
public ActionAttributeHandler() {}
public void filterFunctions(Set functions, AttributeDesignator attribute)
{
URI id = attribute.getId();
if(id.equals(XACMLConstants.ACTION_ID_ATTRIBUTE) || id.equals(XACMLConstants.ACTION_NS_ATTRIBUTE))
{
List retain = new ArrayList(2);
retain.add("=");
retain.add("equals");
functions.retainAll(retain);
}
}
public boolean getAllowedValues(Set values, AttributeDesignator attribute)
{
URI id = attribute.getId();
if(id.equals(XACMLConstants.ACTION_NS_ATTRIBUTE))
{
values.add(XACMLConstants.ACTION_NS);
return false;
}
if(id.equals(XACMLConstants.ACTION_ID_ATTRIBUTE))
{
values.add(XACMLConstants.CALL_FUNCTION_ACTION);
values.add(XACMLConstants.INVOKE_METHOD_ACTION);
return false;
}
return true;
}
public void checkUserValue(AttributeValue value, AttributeDesignator attribute) throws ParsingException
{
//this handler restricts user entered values to only those returned in
//getAllowedValues, so this method does nothing
}
}