Class ContextBase
- All Implemented Interfaces:
Serializable
,Cloneable
,Map
,Context
- Direct Known Subclasses:
WebContext
Convenience base class for Context
implementations.
In addition to the minimal functionality required by the Context
interface, this class implements the recommended support for
Attribute-Property Transparency. This is implemented by
analyzing the available JavaBeans properties of this class (or its
subclass), exposes them as key-value pairs in the Map
,
with the key being the name of the property itself.
IMPLEMENTATION NOTE - Because empty
is a
read-only property defined by the Map
interface, it may not
be utilized as an attribute key or property name.
- Version:
- $Revision: 499247 $ $Date: 2007-01-24 04:09:44 +0000 (Wed, 24 Jan 2007) $
- Author:
- Craig R. McClanahan
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate class
Private implementation ofSet
that implements the semantics required for the value returned byentrySet()
.private class
Private implementation ofIterator
for theSet
returned byentrySet()
.private class
Private implementation ofMap.Entry
for each item inEntrySetImpl
.private class
Private implementation ofCollection
that implements the semantics required for the value returned byvalues()
.private class
Private implementation ofIterator
for theCollection
returned byvalues()
.Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K,
V>, AbstractMap.SimpleImmutableEntry<K, V> -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Map
ThePropertyDescriptor
s for all JavaBeans properties of thisContext
implementation class, keyed by property name.private PropertyDescriptor[]
The samePropertyDescriptor
s as an array.private static Object
Distinguished singleton value that is stored in the map for each key that is actually a property.private static Object[]
Zero-length array of parameter values for calling property getters. -
Constructor Summary
ConstructorsConstructorDescriptionDefault, no argument constructor.ContextBase
(Map map) Initialize the contents of thisContext
by copying the values from the specifiedMap
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Override the defaultMap
behavior to clear all keys and values except those corresponding to JavaBeans properties.boolean
containsValue
(Object value) Override the defaultMap
behavior to returntrue
if the specified value is present in either the underlyingMap
or one of the local property values.private Iterator
Return anIterator
over the set ofMap.Entry
objects representing our key-value pairs.private Map.Entry
Return aMap.Entry
for the specified key value, if it is present; otherwise, returnnull
.entrySet()
Override the defaultMap
behavior to return aSet
that meets the specified default behavior except for attempts to remove the key for a property of theContext
implementation class, which will throwUnsupportedOperationException
.Override the defaultMap
behavior to return the value of a local property if the specified key matches a local property name.private void
Customize the contents of our underlyingMap
so that it contains keys corresponding to all of the JavaBeans properties of theContext
implementation class.boolean
isEmpty()
Override the defaultMap
behavior to returntrue
if the underlyingMap
only contains key-value pairs for local properties (if any).keySet()
Override the defaultMap
behavior to return aSet
that meets the specified default behavior except for attempts to remove the key for a property of theContext
implementation class, which will throwUnsupportedOperationException
.Override the defaultMap
behavior to set the value of a local property if the specified key matches a local property name.void
Override the defaultMap
behavior to call theput()
method individually for each key-value pair in the specifiedMap
.private Object
readProperty
(PropertyDescriptor descriptor) Get and return the value for the specified property.Override the defaultMap
behavior to throwUnsupportedOperationException
on any attempt to remove a key that is the name of a local property.private boolean
Remove the specified key-value pair, if it exists, and returntrue
.values()
Override the defaultMap
behavior to return aCollection
that meets the specified default behavior except for attempts to remove the key for a property of theContext
implementation class, which will throwUnsupportedOperationException
.private Iterator
Return anIterator
over the set of values in thisMap
.private void
writeProperty
(PropertyDescriptor descriptor, Object value) Set the value for the specified property.Methods inherited from class java.util.HashMap
clone, compute, computeIfAbsent, computeIfPresent, containsKey, forEach, getOrDefault, merge, newHashMap, putIfAbsent, remove, replace, replace, replaceAll, size
Methods inherited from class java.util.AbstractMap
equals, hashCode, toString
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, containsKey, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll, size
-
Field Details
-
descriptors
The
PropertyDescriptor
s for all JavaBeans properties of thisContext
implementation class, keyed by property name. This collection is allocated only if there are any JavaBeans properties. -
pd
The same
PropertyDescriptor
s as an array. -
singleton
Distinguished singleton value that is stored in the map for each key that is actually a property. This value is used to ensure that
equals()
comparisons will always fail. -
zeroParams
Zero-length array of parameter values for calling property getters.
-
-
Constructor Details
-
ContextBase
public ContextBase()Default, no argument constructor. -
ContextBase
Initialize the contents of this
Context
by copying the values from the specifiedMap
. Any keys inmap
that correspond to local properties will cause the setter method for that property to be called.- Parameters:
map
- Map whose key-value pairs are added- Throws:
IllegalArgumentException
- if an exception is thrown writing a local property valueUnsupportedOperationException
- if a local property does not have a write method.
-
-
Method Details
-
clear
public void clear()Override the default
Map
behavior to clear all keys and values except those corresponding to JavaBeans properties. -
containsValue
Override the default
Map
behavior to returntrue
if the specified value is present in either the underlyingMap
or one of the local property values.- Specified by:
containsValue
in interfaceMap
- Overrides:
containsValue
in classHashMap
- Parameters:
value
- the value look for in the context.- Returns:
true
if found in this context otherwisefalse
.- Throws:
IllegalArgumentException
- if a property getter throws an exception
-
entrySet
Override the default
Map
behavior to return aSet
that meets the specified default behavior except for attempts to remove the key for a property of theContext
implementation class, which will throwUnsupportedOperationException
. -
get
Override the default
Map
behavior to return the value of a local property if the specified key matches a local property name.IMPLEMENTATION NOTE - If the specified
key
identifies a write-only property,null
will arbitrarily be returned, in order to avoid difficulties implementing the contracts of theMap
interface.- Specified by:
get
in interfaceMap
- Overrides:
get
in classHashMap
- Parameters:
key
- Key of the value to be returned- Returns:
- The value for the specified key.
- Throws:
IllegalArgumentException
- if an exception is thrown reading this local property valueUnsupportedOperationException
- if this local property does not have a read method.
-
isEmpty
public boolean isEmpty()Override the default
Map
behavior to returntrue
if the underlyingMap
only contains key-value pairs for local properties (if any). -
keySet
Override the default
Map
behavior to return aSet
that meets the specified default behavior except for attempts to remove the key for a property of theContext
implementation class, which will throwUnsupportedOperationException
. -
put
Override the default
Map
behavior to set the value of a local property if the specified key matches a local property name.- Specified by:
put
in interfaceMap
- Overrides:
put
in classHashMap
- Parameters:
key
- Key of the value to be stored or replacedvalue
- New value to be stored- Returns:
- The value added to the Context.
- Throws:
IllegalArgumentException
- if an exception is thrown reading or wrting this local property valueUnsupportedOperationException
- if this local property does not have both a read method and a write method
-
putAll
Override the default
Map
behavior to call theput()
method individually for each key-value pair in the specifiedMap
.- Specified by:
putAll
in interfaceMap
- Overrides:
putAll
in classHashMap
- Parameters:
map
-Map
containing key-value pairs to store (or replace)- Throws:
IllegalArgumentException
- if an exception is thrown reading or wrting a local property valueUnsupportedOperationException
- if a local property does not have both a read method and a write method
-
remove
Override the default
Map
behavior to throwUnsupportedOperationException
on any attempt to remove a key that is the name of a local property.- Specified by:
remove
in interfaceMap
- Overrides:
remove
in classHashMap
- Parameters:
key
- Key to be removed- Returns:
- The value removed from the Context.
- Throws:
UnsupportedOperationException
- if the specifiedkey
matches the name of a local property
-
values
Override the default
Map
behavior to return aCollection
that meets the specified default behavior except for attempts to remove the key for a property of theContext
implementation class, which will throwUnsupportedOperationException
. -
entriesIterator
Return an
Iterator
over the set ofMap.Entry
objects representing our key-value pairs. -
entry
Return a
Map.Entry
for the specified key value, if it is present; otherwise, returnnull
.- Parameters:
key
- Attribute key or property name
-
initialize
private void initialize()Customize the contents of our underlying
Map
so that it contains keys corresponding to all of the JavaBeans properties of theContext
implementation class.- Throws:
IllegalArgumentException
- if an exception is thrown writing this local property valueUnsupportedOperationException
- if this local property does not have a write method.
-
readProperty
Get and return the value for the specified property.
- Parameters:
descriptor
-PropertyDescriptor
for the specified property- Throws:
IllegalArgumentException
- if an exception is thrown reading this local property valueUnsupportedOperationException
- if this local property does not have a read method.
-
remove
Remove the specified key-value pair, if it exists, and return
true
. If this pair does not exist, returnfalse
.- Parameters:
entry
- Key-value pair to be removed- Throws:
UnsupportedOperationException
- if the specified key identifies a property instead of an attribute
-
valuesIterator
Return an
Iterator
over the set of values in thisMap
. -
writeProperty
Set the value for the specified property.
- Parameters:
descriptor
-PropertyDescriptor
for the specified propertyvalue
- The new value for this property (must be of the correct type)- Throws:
IllegalArgumentException
- if an exception is thrown writing this local property valueUnsupportedOperationException
- if this local property does not have a write method.
-