org.apache.commons.beanutils

## Interface MutableDynaClass

- All Superinterfaces:
    DynaClass
  All Known Implementing Classes:
    LazyDynaClass, LazyDynaMap

      public interface MutableDynaClass
      extends DynaClass

  A specialized extension to `DynaClass` that allows properties to be added or removed dynamically.

  WARNING - No guarantees that this will be in the final APIs ... it's here primarily to preserve some concepts that were in the original proposal for further discussion.

  Version:
    $Id: MutableDynaClass.java 1747095 2016-06-07 00:27:52Z ggregory $

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `add(String name)` Add a new dynamic property with no restrictions on data type, readability, or writeability.
    `void` | `add(String name, Class<?> type)` Add a new dynamic property with the specified data type, but with no restrictions on readability or writeability.
    `void` | `add(String name, Class<?> type, boolean readable, boolean writeable)` Add a new dynamic property with the specified data type, readability, and writeability.
    `boolean` | `isRestricted()` Is this DynaClass currently restricted, if so, no changes to the existing registration of property names, data types, readability, or writeability are allowed.
    `void` | `remove(String name)` Remove the specified dynamic property, and any associated data type, readability, and writeability, from this dynamic class.
    `void` | `setRestricted(boolean restricted)` Set the restricted state of this DynaClass to the specified value.

    - ### Methods inherited from interface org.apache.commons.beanutils.DynaClass

      `getDynaProperties, getDynaProperty, getName, newInstance`

- - ### Method Detail

    - #### add

          void add(String name)

      Add a new dynamic property with no restrictions on data type, readability, or writeability.
      Parameters:
        `name` - Name of the new dynamic property
      Throws:
        `IllegalArgumentException` - if name is null
        `IllegalStateException` - if this DynaClass is currently restricted, so no new properties can be added

    - #### add

          void add(String name,
                   Class<?> type)

      Add a new dynamic property with the specified data type, but with no restrictions on readability or writeability.
      Parameters:
        `name` - Name of the new dynamic property
        `type` - Data type of the new dynamic property (null for no restrictions)
      Throws:
        `IllegalArgumentException` - if name is null
        `IllegalStateException` - if this DynaClass is currently restricted, so no new properties can be added

    - #### add

          void add(String name,
                   Class<?> type,
                   boolean readable,
                   boolean writeable)

      Add a new dynamic property with the specified data type, readability, and writeability.
      Parameters:
        `name` - Name of the new dynamic property
        `type` - Data type of the new dynamic property (null for no restrictions)
        `readable` - Set to `true` if this property value should be readable
        `writeable` - Set to `true` if this property value should be writeable
      Throws:
        `IllegalArgumentException` - if name is null
        `IllegalStateException` - if this DynaClass is currently restricted, so no new properties can be added

    - #### isRestricted

          boolean isRestricted()

      Is this DynaClass currently restricted, if so, no changes to the existing registration of property names, data types, readability, or writeability are allowed.
      Returns:
        `true` if this Mutable `DynaClass` is restricted, otherwise `false`

    - #### remove

          void remove(String name)

      Remove the specified dynamic property, and any associated data type, readability, and writeability, from this dynamic class. NOTE - This does NOT cause any corresponding property values to be removed from DynaBean instances associated with this DynaClass.
      Parameters:
        `name` - Name of the dynamic property to remove
      Throws:
        `IllegalArgumentException` - if name is null
        `IllegalStateException` - if this DynaClass is currently restricted, so no properties can be removed

    - #### setRestricted

          void setRestricted(boolean restricted)

      Set the restricted state of this DynaClass to the specified value.
      Parameters:
        `restricted` - The new restricted state

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