SunTM's XACML Implementation for JavaTM

com.sun.xacml.attr
Class AttributeValue

java.lang.Object
  extended bycom.sun.xacml.attr.AttributeValue
All Implemented Interfaces:
Evaluatable
Direct Known Subclasses:
AnyURIAttribute, BagAttribute, Base64BinaryAttribute, BooleanAttribute, DateAttribute, DateTimeAttribute, DayTimeDurationAttribute, DoubleAttribute, HexBinaryAttribute, IntegerAttribute, RFC822NameAttribute, StringAttribute, TimeAttribute, X500NameAttribute, YearMonthDurationAttribute

public abstract class AttributeValue
extends Object
implements Evaluatable

The base type for all datatypes used in a policy or request/response, this abstract class represents a value for a given attribute type. All the required types defined in the XACML specification are provided as instances of AttributeValues. If you want to provide a new type, extend this class and implement the equals(Object) and hashCode methods from Object, which are used for equality checking.

Since:
1.0

Constructor Summary
protected AttributeValue(URI type)
          Constructor that takes the specific attribute type.
 
Method Summary
abstract  String encode()
          Encodes the value in a form suitable for including in XML data like a request or an obligation.
 void encode(OutputStream output)
          Encodes this AttributeValue into its XML representation and writes this encoding to the given OutputStream with no indentation.
 void encode(OutputStream output, Indenter indenter)
          Encodes this AttributeValue into its XML representation and writes this encoding to the given OutputStream with indentation.
 String encodeWithTags(boolean includeType)
          Encodes the value and includes the AttributeValue XML tags so that the resulting string can be included in a valid XACML policy or Request/Response.
 EvaluationResult evaluate(EvaluationCtx context)
          Implements the required interface from Evaluatable.
 boolean evaluatesToBag()
          Returns whether or not this value is actually a bag of values.
 List getChildren()
          Always returns an empty list since values never have children.
 URI getType()
          Returns the type of this attribute value.
 boolean isBag()
          Returns whether or not this value is actually a bag of values.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AttributeValue

protected AttributeValue(URI type)
Constructor that takes the specific attribute type.

Parameters:
type - the attribute's type
Method Detail

getType

public URI getType()
Returns the type of this attribute value. By default this always returns the type passed to the constructor.

Specified by:
getType in interface Evaluatable
Returns:
the attribute's type

evaluatesToBag

public final boolean evaluatesToBag()
Returns whether or not this value is actually a bag of values. This is a required interface from Evaluatable, but the more meaningful isBag method is used by AttributeValues, so this method is declared as final and calls the isBag method for this value.

Specified by:
evaluatesToBag in interface Evaluatable
Returns:
true if this is a bag of values, false otherwise

getChildren

public List getChildren()
Always returns an empty list since values never have children.

Specified by:
getChildren in interface Evaluatable
Returns:
an empty List

isBag

public boolean isBag()
Returns whether or not this value is actually a bag of values. By default this returns false. Typically, only the BagAttribute should ever override this to return true.

Returns:
true if this is a bag of values, false otherwise

evaluate

public EvaluationResult evaluate(EvaluationCtx context)
Implements the required interface from Evaluatable. Since there is nothing to evaluate in an attribute value, the default result is just this instance. Override this method if you want special behavior, like a dynamic value.

Specified by:
evaluate in interface Evaluatable
Parameters:
context - the representation of the request
Returns:
a successful evaluation containing this value

encode

public abstract String encode()
Encodes the value in a form suitable for including in XML data like a request or an obligation. This must return a value that could in turn be used by the factory to create a new instance with the same value.

Returns:
a String form of the value

encode

public void encode(OutputStream output)
Encodes this AttributeValue into its XML representation and writes this encoding to the given OutputStream with no indentation. This will always produce the version used in a policy rather than that used in a request, so this is equivalent to calling encodeWithTags(true) and then stuffing that into a stream.

Specified by:
encode in interface Evaluatable
Parameters:
output - a stream into which the XML-encoded data is written

encode

public void encode(OutputStream output,
                   Indenter indenter)
Encodes this AttributeValue into its XML representation and writes this encoding to the given OutputStream with indentation. This will always produce the version used in a policy rather than that used in a request, so this is equivalent to calling encodeWithTags(true) and then stuffing that into a stream.

Specified by:
encode in interface Evaluatable
Parameters:
output - a stream into which the XML-encoded data is written
indenter - an object that creates indentation strings

encodeWithTags

public String encodeWithTags(boolean includeType)
Encodes the value and includes the AttributeValue XML tags so that the resulting string can be included in a valid XACML policy or Request/Response. The boolean parameter lets you include the DataType attribute, which is required in a policy but not allowed in a Request or Response.

Parameters:
includeType - include the DataType XML attribute if true, exclude if false
Returns:
a String encoding including the XML tags

Sun's XACML Implementation Version 1.2

Copyright 2003-2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms.

Sun, Sun Microsystems, the Sun Logo, and Java are trademarks or registered trademarks of Sun Microsystems, Inc. in the US and other countries.