org.jboss.security.xacml.sunxacml.attr
Class AttributeValue
java.lang.Object
org.jboss.security.xacml.sunxacml.attr.AttributeValue
- All Implemented Interfaces:
- Evaluatable, Expression
- Direct Known Subclasses:
- AnyURIAttribute, BagAttribute, Base64BinaryAttribute, BooleanAttribute, DateAttribute, DateTimeAttribute, DayTimeDurationAttribute, DNSNameAttribute, DoubleAttribute, HexBinaryAttribute, IntegerAttribute, IPAddressAttribute, MultiValueAttribute, RFC822NameAttribute, SingleValueAttribute, 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
- Author:
- Seth Proctor
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()
Deprecated. As of 2.0, you should use the returnsBag
method from the super-interface Expression . |
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. |
boolean |
returnsBag()
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 |
AttributeValue
protected AttributeValue(URI type)
- Constructor that takes the specific attribute type.
- Parameters:
type
- the attribute's type
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 Expression
- Returns:
- the attribute's type
returnsBag
public final boolean returnsBag()
- Returns whether or not this value is actually a bag of values. This
is a required interface from
Expression
, but the
more meaningful isBag
method is used by
AttributeValue
s, so this method is declared as final
and calls the isBag
method for this value.
- Specified by:
returnsBag
in interface Expression
- Returns:
- true if this is a bag of values, false otherwise
evaluatesToBag
public final boolean evaluatesToBag()
- Deprecated. As of 2.0, you should use the
returnsBag
method from the super-interface Expression
.
- 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
AttributeValue
s, 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 Expression
- 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 Expression
- Parameters:
output
- a stream into which the XML-encoded data is writtenindenter
- 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
Copyright © 2009 JBoss, a division of Red Hat, Inc.. All Rights Reserved.