Class BaseDynaBeanMapDecorator<K>

java.lang.Object
org.apache.commons.beanutils.BaseDynaBeanMapDecorator<K>
Type Parameters:
K - the type of the keys in the decorated map
All Implemented Interfaces:
Map<K,Object>
Direct Known Subclasses:
DynaBeanMapDecorator, DynaBeanPropertyMapDecorator

public abstract class BaseDynaBeanMapDecorator<K> extends Object implements Map<K,Object>

A base class for decorators providing Map behavior on DynaBeans.

The motivation for this implementation is to provide access to DynaBean properties in technologies that are unaware of BeanUtils and DynaBeans - such as the expression languages of JSTL and JSF.

This rather technical base class implements the methods of the Map interface on top of a DynaBean. It was introduced to handle generic parameters in a meaningful way without breaking backwards compatibility of the DynaBeanMapDecorator class: A map wrapping a DynaBean should be of type Map<String, Object>. However, when using these generic parameters in DynaBeanMapDecorator this would be an incompatible change (as method signatures would have to be adapted). To solve this problem, this generic base class is added which allows specifying the key type as parameter. This makes it easy to have a new subclass using the correct generic parameters while DynaBeanMapDecorator could still remain with compatible parameters.

Since:
BeanUtils 1.9.0
  • Constructor Details

  • Method Details

    • clear

      public void clear()
      Always throws UnsupportedOperationException because this operation is unsupported.
      Specified by:
      clear in interface Map<K,Object>
      Throws:
      UnsupportedOperationException - Always thrown.
    • containsKey

      public boolean containsKey(Object key)
      Indicate whether the DynaBean contains a specified value for one (or more) of its properties.
      Specified by:
      containsKey in interface Map<K,Object>
      Parameters:
      key - The DynaBean's property name
      Returns:
      true if one of the DynaBean's properties contains a specified value.
    • containsValue

      public boolean containsValue(Object value)
      Indicates whether the decorated DynaBean contains a specified value.
      Specified by:
      containsValue in interface Map<K,Object>
      Parameters:
      value - The value to check for.
      Returns:
      true if one of the the DynaBean's properties contains the specified value, otherwise false.
    • convertKey

      protected abstract K convertKey(String propertyName)
      Converts the name of a property to the key type of this decorator.
      Parameters:
      propertyName - the name of a property
      Returns:
      the converted key to be used in the decorated map
    • entrySet

      Returns the Set of the property/value mappings in the decorated DynaBean.

      Each element in the Set is a Map.Entry type.

      Specified by:
      entrySet in interface Map<K,Object>
      Returns:
      An unmodifiable set of the DynaBean property name/value pairs
    • get

      public Object get(Object key)
      Return the value for the specified key from the decorated DynaBean.
      Specified by:
      get in interface Map<K,Object>
      Parameters:
      key - The DynaBean's property name
      Returns:
      The value for the specified property.
    • getDynaBean

      Provide access to the underlying DynaBean this Map decorates.
      Returns:
      the decorated DynaBean.
    • isEmpty

      public boolean isEmpty()
      Indicate whether the decorated DynaBean has any properties.
      Specified by:
      isEmpty in interface Map<K,Object>
      Returns:
      true if the DynaBean has no properties, otherwise false.
    • isReadOnly

      public boolean isReadOnly()
      Indicate whether the Map is read only.
      Returns:
      true if the Map is read only, otherwise false.
    • keySet

      public Set<K> keySet()

      Returns the Set of the property names in the decorated DynaBean.

      N.B.For DynaBeans whose associated DynaClass is a MutableDynaClass a new Set is created every time, otherwise the Set is created only once and cached.

      Specified by:
      keySet in interface Map<K,Object>
      Returns:
      An unmodifiable set of the DynaBeans property names.
    • put

      public Object put(K key, Object value)
      Set the value for the specified property in the decorated DynaBean.
      Specified by:
      put in interface Map<K,Object>
      Parameters:
      key - The DynaBean's property name
      value - The value for the specified property.
      Returns:
      The previous property's value.
      Throws:
      UnsupportedOperationException - if isReadOnly() is true.
    • putAll

      public void putAll(Map<? extends K,? extends Object> map)
      Copy the contents of a Map to the decorated DynaBean.
      Specified by:
      putAll in interface Map<K,Object>
      Parameters:
      map - The Map of values to copy.
      Throws:
      UnsupportedOperationException - if isReadOnly() is true.
    • remove

      public Object remove(Object key)
      Always throws UnsupportedOperationException because this operation is unsupported.
      Specified by:
      remove in interface Map<K,Object>
      Parameters:
      key - The DynaBean's property name.
      Returns:
      the value removed.
      Throws:
      UnsupportedOperationException - Always thrown.
    • size

      public int size()
      Returns the number properties in the decorated DynaBean.
      Specified by:
      size in interface Map<K,Object>
      Returns:
      The number of properties.
    • values

      Returns the set of property values in the decorated DynaBean.
      Specified by:
      values in interface Map<K,Object>
      Returns:
      Unmodifiable collection of values.