org.apache.commons.beanutils

## Class BasicDynaBean

- java.lang.Object
- - org.apache.commons.beanutils.BasicDynaBean

- All Implemented Interfaces:
    Serializable, DynaBean

      public class BasicDynaBean
      extends Object
      implements DynaBean, Serializable

  Minimal implementation of the `DynaBean` interface. Can be used as a convenience base class for more sophisticated implementations.

  IMPLEMENTATION NOTE - Instances of this class that are accessed from multiple threads simultaneously need to be synchronized.

  IMPLEMENTATION NOTE - Instances of this class can be successfully serialized and deserialized ONLY if all property values are `Serializable`.

  Version:
    $Id: BasicDynaBean.java 1747095 2016-06-07 00:27:52Z ggregory $
  See Also:
    Serialized Form

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected DynaClass` | `dynaClass` The `DynaClass` "base class" that this DynaBean is associated with.
    `protected HashMap<String,Object>` | `values` The set of property values for this DynaBean, keyed by property name.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `BasicDynaBean(DynaClass dynaClass)` Construct a new `DynaBean` associated with the specified `DynaClass` instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `contains(String name, String key)` Does the specified mapped property contain a value for the specified key value?
    `Object` | `get(String name)` Return the value of a simple property with the specified name.
    `Object` | `get(String name, int index)` Return the value of an indexed property with the specified name.
    `Object` | `get(String name, String key)` Return the value of a mapped property with the specified name, or `null` if there is no value for the specified key.
    `DynaClass` | `getDynaClass()` Return the `DynaClass` instance that describes the set of properties available for this DynaBean.
    `protected DynaProperty` | `getDynaProperty(String name)` Return the property descriptor for the specified property name.
    `Map<String,Object>` | `getMap()` Return a Map representation of this DynaBean.
    `protected boolean` | `isAssignable(Class<?> dest, Class<?> source)` Is an object of the source class assignable to the destination class?
    `void` | `remove(String name, String key)` Remove any existing value for the specified key on the specified mapped property.
    `void` | `set(String name, int index, Object value)` Set the value of an indexed property with the specified name.
    `void` | `set(String name, Object value)` Set the value of a simple property with the specified name.
    `void` | `set(String name, String key, Object value)` Set the value of a mapped property with the specified name.

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

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

- - ### Field Detail

    - #### dynaClass

          protected DynaClass dynaClass

      The `DynaClass` "base class" that this DynaBean is associated with.

    - #### values

          protected HashMap<String,Object> values

      The set of property values for this DynaBean, keyed by property name.

  - ### Constructor Detail

    - #### BasicDynaBean

          public BasicDynaBean(DynaClass dynaClass)

      Construct a new `DynaBean` associated with the specified `DynaClass` instance.
      Parameters:
        `dynaClass` - The DynaClass we are associated with

  - ### Method Detail

    - #### getMap

          public Map<String,Object> getMap()

      Return a Map representation of this DynaBean. This, for example, could be used in JSTL in the following way to access a DynaBean's `fooProperty`:
      - `${myDynaBean.map.fooProperty}`
      Returns:
        a Map representation of this DynaBean
      Since:
        1.8.0

    - #### contains

          public boolean contains(String name,
                                  String key)

      Does the specified mapped property contain a value for the specified key value?
      Specified by:
        `contains` in interface `DynaBean`
      Parameters:
        `name` - Name of the property to check
        `key` - Name of the key to check
      Returns:
        `true` if the mapped property contains a value for the specified key, otherwise `false`
      Throws:
        `IllegalArgumentException` - if there is no property of the specified name

    - #### get

          public Object get(String name)

      Return the value of a simple property with the specified name.
      Specified by:
        `get` in interface `DynaBean`
      Parameters:
        `name` - Name of the property whose value is to be retrieved
      Returns:
        The property's value
      Throws:
        `IllegalArgumentException` - if there is no property of the specified name

    - #### get

          public Object get(String name,
                            int index)

      Return the value of an indexed property with the specified name.
      Specified by:
        `get` in interface `DynaBean`
      Parameters:
        `name` - Name of the property whose value is to be retrieved
        `index` - Index of the value to be retrieved
      Returns:
        The indexed property's value
      Throws:
        `IllegalArgumentException` - if there is no property of the specified name
        `IllegalArgumentException` - if the specified property exists, but is not indexed
        `IndexOutOfBoundsException` - if the specified index is outside the range of the underlying property
        `NullPointerException` - if no array or List has been initialized for this property

    - #### get

          public Object get(String name,
                            String key)

      Return the value of a mapped property with the specified name, or `null` if there is no value for the specified key.
      Specified by:
        `get` in interface `DynaBean`
      Parameters:
        `name` - Name of the property whose value is to be retrieved
        `key` - Key of the value to be retrieved
      Returns:
        The mapped property's value
      Throws:
        `IllegalArgumentException` - if there is no property of the specified name
        `IllegalArgumentException` - if the specified property exists, but is not mapped

    - #### getDynaClass

          public DynaClass getDynaClass()

      Return the `DynaClass` instance that describes the set of properties available for this DynaBean.
      Specified by:
        `getDynaClass` in interface `DynaBean`
      Returns:
        The associated DynaClass

    - #### remove

          public void remove(String name,
                             String key)

      Remove any existing value for the specified key on the specified mapped property.
      Specified by:
        `remove` in interface `DynaBean`
      Parameters:
        `name` - Name of the property for which a value is to be removed
        `key` - Key of the value to be removed
      Throws:
        `IllegalArgumentException` - if there is no property of the specified name

    - #### set

          public void set(String name,
                          Object value)

      Set the value of a simple property with the specified name.
      Specified by:
        `set` in interface `DynaBean`
      Parameters:
        `name` - Name of the property whose value is to be set
        `value` - Value to which this property is to be set
      Throws:
        `ConversionException` - if the specified value cannot be converted to the type required for this property
        `IllegalArgumentException` - if there is no property of the specified name
        `NullPointerException` - if an attempt is made to set a primitive property to null

    - #### set

          public void set(String name,
                          int index,
                          Object value)

      Set the value of an indexed property with the specified name.
      Specified by:
        `set` in interface `DynaBean`
      Parameters:
        `name` - Name of the property whose value is to be set
        `index` - Index of the property to be set
        `value` - Value to which this property is to be set
      Throws:
        `ConversionException` - if the specified value cannot be converted to the type required for this property
        `IllegalArgumentException` - if there is no property of the specified name
        `IllegalArgumentException` - if the specified property exists, but is not indexed
        `IndexOutOfBoundsException` - if the specified index is outside the range of the underlying property

    - #### set

          public void set(String name,
                          String key,
                          Object value)

      Set the value of a mapped property with the specified name.
      Specified by:
        `set` in interface `DynaBean`
      Parameters:
        `name` - Name of the property whose value is to be set
        `key` - Key of the property to be set
        `value` - Value to which this property is to be set
      Throws:
        `ConversionException` - if the specified value cannot be converted to the type required for this property
        `IllegalArgumentException` - if there is no property of the specified name
        `IllegalArgumentException` - if the specified property exists, but is not mapped

    - #### getDynaProperty

          protected DynaProperty getDynaProperty(String name)

      Return the property descriptor for the specified property name.
      Parameters:
        `name` - Name of the property for which to retrieve the descriptor
      Returns:
        The property descriptor
      Throws:
        `IllegalArgumentException` - if this is not a valid property name for our DynaClass

    - #### isAssignable

          protected boolean isAssignable(Class<?> dest,
                                         Class<?> source)

      Is an object of the source class assignable to the destination class?
      Parameters:
        `dest` - Destination class
        `source` - Source class
      Returns:
        `true` if the source class is assignable to the destination class, otherwise `false`

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