org.apache.commons.beanutils

## 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 `DynaBean`s.

  The motivation for this implementation is to provide access to `DynaBean` properties in technologies that are unaware of BeanUtils and `DynaBean`s - 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
  Version:
    $Id$

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface java.util.Map

      `Map.Entry<K,V>`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BaseDynaBeanMapDecorator(DynaBean dynaBean)` Constructs a read only Map for the specified `DynaBean`.
    `BaseDynaBeanMapDecorator(DynaBean dynaBean, boolean readOnly)` Construct a Map for the specified `DynaBean`.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `clear()` clear() operation is not supported.
    `boolean` | `containsKey(Object key)` Indicate whether the `DynaBean` contains a specified value for one (or more) of its properties.
    `boolean` | `containsValue(Object value)` Indicates whether the decorated `DynaBean` contains a specified value.
    `protected abstract K` | `convertKey(String propertyName)` Converts the name of a property to the key type of this decorator.
    `Set<Map.Entry<K,Object>>` | `entrySet()` Returns the Set of the property/value mappings in the decorated `DynaBean`.
    `Object` | `get(Object key)` Return the value for the specified key from the decorated `DynaBean`.
    `DynaBean` | `getDynaBean()` Provide access to the underlying `DynaBean` this Map decorates.
    `boolean` | `isEmpty()` Indicate whether the decorated `DynaBean` has any properties.
    `boolean` | `isReadOnly()` Indicate whether the Map is read only.
    `Set<K>` | `keySet()` Returns the Set of the property names in the decorated `DynaBean`.
    `Object` | `put(K key, Object value)` Set the value for the specified property in the decorated `DynaBean`.
    `void` | `putAll(Map<? extends K,? extends Object> map)` Copy the contents of a Map to the decorated `DynaBean`.
    `Object` | `remove(Object key)` remove() operation is not supported.
    `int` | `size()` Returns the number properties in the decorated `DynaBean`.
    `Collection<Object>` | `values()` Returns the set of property values in the decorated `DynaBean`.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.util.Map

      `compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll`

- - ### Constructor Detail

    - #### BaseDynaBeanMapDecorator

          public BaseDynaBeanMapDecorator(DynaBean dynaBean)

      Constructs a read only Map for the specified `DynaBean`.
      Parameters:
        `dynaBean` - The dyna bean being decorated
      Throws:
        `IllegalArgumentException` - if the `DynaBean` is null.

    - #### BaseDynaBeanMapDecorator

          public BaseDynaBeanMapDecorator(DynaBean dynaBean,
                                          boolean readOnly)

      Construct a Map for the specified `DynaBean`.
      Parameters:
        `dynaBean` - The dyna bean being decorated
        `readOnly` - `true` if the Map is read only otherwise `false`
      Throws:
        `IllegalArgumentException` - if the `DynaBean` is null.

  - ### Method Detail

    - #### isReadOnly

          public boolean isReadOnly()

      Indicate whether the Map is read only.
      Returns:
        `true` if the Map is read only, otherwise `false`.

    - #### clear

          public void clear()

      clear() operation is not supported.
      Specified by:
        `clear` in interface `Map<K,Object>`
      Throws:
        `UnsupportedOperationException`

    - #### 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`.

    - #### entrySet

          public Set<Map.Entry<K,Object>> 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.

    - #### 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`.

    - #### keySet

          public Set<K> keySet()

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

      N.B.For `DynaBean`s 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 `DynaBean`s 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)

      remove() operation is not supported.
      Specified by:
        `remove` in interface `Map<K,Object>`
      Parameters:
        `key` - The `DynaBean`'s property name
      Returns:
        the value removed
      Throws:
        `UnsupportedOperationException`

    - #### 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

          public Collection<Object> values()

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

    - #### getDynaBean

          public DynaBean getDynaBean()

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

    - #### 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

Copyright © 2000–2019 The Apache Software Foundation. All rights reserved.