public interface AttributeAccessor
Modifier and Type | Method and Description |
---|---|
String[] |
attributeNames()
Return the names of all attributes.
|
default <T> T |
computeAttribute(String name,
Function<String,T> computeFunction)
Compute a new value for the attribute identified by
name if
necessary and set the new value in this
AttributeAccessor . |
Object |
getAttribute(String name)
Get the value of the attribute identified by
name . |
boolean |
hasAttribute(String name)
Return
true if the attribute identified by name exists. |
Object |
removeAttribute(String name)
Remove the attribute identified by
name and return its value. |
void |
setAttribute(String name,
Object value)
Set the attribute defined by
name to the supplied value . |
void setAttribute(String name, @Nullable Object value)
name
to the supplied value
.
If value
is null
, the attribute is removed
.
In general, users should take care to prevent overlaps with other metadata attributes by using fully-qualified names, perhaps using class or package names as prefix.
name
- the unique attribute keyvalue
- the attribute value to be attached@Nullable Object getAttribute(String name)
name
.
Return null
if the attribute doesn't exist.
name
- the unique attribute keydefault <T> T computeAttribute(String name, Function<String,T> computeFunction)
name
if
necessary and set the new value in this
AttributeAccessor
.
If a value for the attribute identified by name
already exists
in this AttributeAccessor
, the existing value will be returned
without applying the supplied compute function.
The default implementation of this method is not thread safe but can overridden by concrete implementations of this interface.
T
- the type of the attribute valuename
- the unique attribute keycomputeFunction
- a function that computes a new value for the attribute
name; the function must not return a null
valuegetAttribute(String)
,
setAttribute(String, Object)
@Nullable Object removeAttribute(String name)
name
and return its value.
Return null
if no attribute under name
is found.
name
- the unique attribute keyboolean hasAttribute(String name)
true
if the attribute identified by name
exists.
Otherwise return false
.
name
- the unique attribute keyString[] attributeNames()