Class ContextBase

All Implemented Interfaces:
Serializable, Cloneable, Map<String,Object>, Context

public class ContextBase extends HashMap<String,Object> implements Context
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$ $Date$
Author:
Craig R. McClanahan
See Also:
  • Constructor Details

    • ContextBase

      public ContextBase()
      Default, no argument constructor.
    • ContextBase

      public ContextBase(Map<String,Object> map)
      Initialize the contents of this Context by copying the values from the specified Map. Any keys in map 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 value.
      UnsupportedOperationException - 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.
      Specified by:
      clear in interface Map<String,Object>
      Overrides:
      clear in class HashMap<String,Object>
    • containsValue

      public boolean containsValue(Object value)
      Override the default Map behavior to return true if the specified value is present in either the underlying Map or one of the local property values.
      Specified by:
      containsValue in interface Map<String,Object>
      Overrides:
      containsValue in class HashMap<String,Object>
      Parameters:
      value - the value look for in the context.
      Returns:
      true if found in this context otherwise false.
      Throws:
      IllegalArgumentException - if a property getter throws an exception
    • entrySet

      Override the default Map behavior to return a Set that meets the specified default behavior except for attempts to remove the key for a property of the Context implementation class, which will throw UnsupportedOperationException.
      Specified by:
      entrySet in interface Map<String,Object>
      Overrides:
      entrySet in class HashMap<String,Object>
      Returns:
      Set of entries in the Context.
    • get

      public Object get(Object key)
      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 the Map interface.

      Specified by:
      get in interface Map<String,Object>
      Overrides:
      get in class HashMap<String,Object>
      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 value.
      UnsupportedOperationException - if this local property does not have a read method.
    • isEmpty

      public boolean isEmpty()
      Override the default Map behavior to return true if the underlying Map only contains key-value pairs for local properties (if any).
      Specified by:
      isEmpty in interface Map<String,Object>
      Overrides:
      isEmpty in class HashMap<String,Object>
      Returns:
      true if this Context is empty, otherwise false.
    • keySet

      public Set<String> keySet()
      Override the default Map behavior to return a Set that meets the specified default behavior except for attempts to remove the key for a property of the Context implementation class, which will throw UnsupportedOperationException.
      Specified by:
      keySet in interface Map<String,Object>
      Overrides:
      keySet in class HashMap<String,Object>
      Returns:
      The set of keys for objects in this Context.
    • put

      public Object put(String key, Object value)
      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 interface Map<String,Object>
      Overrides:
      put in class HashMap<String,Object>
      Parameters:
      key - Key of the value to be stored or replaced
      value - New value to be stored
      Returns:
      The value added to the Context.
      Throws:
      IllegalArgumentException - if an exception is thrown reading or writing this local property value.
      UnsupportedOperationException - if this local property does not have both a read method and a write method
    • putAll

      public void putAll(Map<? extends String,? extends Object> map)
      Override the default Map behavior to call the put() method individually for each key-value pair in the specified Map.
      Specified by:
      putAll in interface Map<String,Object>
      Overrides:
      putAll in class HashMap<String,Object>
      Parameters:
      map - Map containing key-value pairs to store (or replace)
      Throws:
      IllegalArgumentException - if an exception is thrown reading or writing a local property value.
      UnsupportedOperationException - if a local property does not have both a read method and a write method
    • remove

      public Object remove(Object key)
      Override the default Map behavior to throw UnsupportedOperationException on any attempt to remove a key that is the name of a local property.
      Specified by:
      remove in interface Map<String,Object>
      Overrides:
      remove in class HashMap<String,Object>
      Parameters:
      key - Key to be removed
      Returns:
      The value removed from the Context.
      Throws:
      UnsupportedOperationException - if the specified key matches the name of a local property
    • values

      Override the default Map behavior to return a Collection that meets the specified default behavior except for attempts to remove the key for a property of the Context implementation class, which will throw UnsupportedOperationException.
      Specified by:
      values in interface Map<String,Object>
      Overrides:
      values in class HashMap<String,Object>
      Returns:
      The collection of values in this Context.