org.apache.commons.beanutils

## Class DynaBeanPropertyMapDecorator

- java.lang.Object
- - org.apache.commons.beanutils.BaseDynaBeanMapDecorator<String>
  - - org.apache.commons.beanutils.DynaBeanPropertyMapDecorator

- All Implemented Interfaces:
    Map<String,Object>

      public class DynaBeanPropertyMapDecorator
      extends BaseDynaBeanMapDecorator<String>

  Decorates a `DynaBean` to provide `Map` behavior.

  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 can be achieved either by wrapping the `DynaBean` prior to providing it to the technology to process or by providing a `Map` accessor method on the DynaBean implementation:

               public Map<String, Object> getMap() {
                   return new DynaBeanPropertyMapDecorator(this);
               }

This, for example, could be used in JSTL in the following way to access a DynaBean's `fooProperty`:

- `${myDynaBean.map.fooProperty}`

### Usage

To decorate a `DynaBean` simply instantiate this class with the target `DynaBean`:

- `Map<String, Object> fooMap = new DynaBeanPropertyMapDecorator(fooDynaBean);`

The above example creates a read only `Map`. To create a `Map` which can be modified, construct a `DynaBeanPropertyMapDecorator` with the read only attribute set to `false`:

- `Map<String, Object> fooMap = new DynaBeanPropertyMapDecorator(fooDynaBean, false);`

### Limitations

In this implementation the `entrySet()`, `keySet()` and `values()` methods create an unmodifiable `Set` and it does not support the Map's `clear()` and `remove()` operations.

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
    `DynaBeanPropertyMapDecorator(DynaBean dynaBean)` Constructs a read only Map for the specified `DynaBean`.
    `DynaBeanPropertyMapDecorator(DynaBean dynaBean, boolean readOnly)` Construct a Map for the specified `DynaBean`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected String` | `convertKey(String propertyName)` Converts the name of a property to the key type of this decorator.

    - ### Methods inherited from class org.apache.commons.beanutils.BaseDynaBeanMapDecorator

      `clear, containsKey, containsValue, entrySet, get, getDynaBean, isEmpty, isReadOnly, keySet, put, putAll, remove, size, values`

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

    - #### DynaBeanPropertyMapDecorator

          public DynaBeanPropertyMapDecorator(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.

    - #### DynaBeanPropertyMapDecorator

          public DynaBeanPropertyMapDecorator(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.

  - ### Method Detail

    - #### convertKey

          protected String convertKey(String propertyName)

      Description copied from class: `BaseDynaBeanMapDecorator`
      Converts the name of a property to the key type of this decorator.
      Specified by:
        `convertKey` in class `BaseDynaBeanMapDecorator<String>`
      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.