Class BasicDynaClass

java.lang.Object
org.apache.commons.beanutils.BasicDynaClass
All Implemented Interfaces:
Serializable, DynaClass
Direct Known Subclasses:
LazyDynaClass

public class BasicDynaClass extends Object implements DynaClass, Serializable

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

*

IMPLEMENTATION NOTE - The DynaBean implementation class supplied to our constructor MUST have a one-argument constructor of its own that accepts a DynaClass. This is used to associate the DynaBean instance with this DynaClass.

Version:
$Id$
See Also:
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected Constructor<?>
    The constructor of the dynaBeanClass that we will use for creating new instances.
    protected static Class<?>[]
    The method signature of the constructor we will use to create new DynaBean instances.
    protected Object[]
    The argument values to be passed to the constructore we will use to create new DynaBean instances.
    protected Class<?>
    The DynaBean implementation class we will use for creating new instances.
    protected String
    The "name" of this DynaBean class.
    protected DynaProperty[]
    The set of dynamic properties that are part of this DynaClass.
    The set of dynamic properties that are part of this DynaClass, keyed by the property name.
  • Constructor Summary

    Constructors
    Constructor
    Description
    Construct a new BasicDynaClass with default parameters.
    BasicDynaClass(String name, Class<?> dynaBeanClass)
    Construct a new BasicDynaClass with the specified parameters.
    BasicDynaClass(String name, Class<?> dynaBeanClass, DynaProperty[] properties)
    Construct a new BasicDynaClass with the specified parameters.
  • Method Summary

    Modifier and Type
    Method
    Description
    Return the Class object we will use to create new instances in the newInstance() method.
    Return an array of ProperyDescriptors for the properties currently defined in this DynaClass.
    Return a property descriptor for the specified property, if it exists; otherwise, return null.
    Return the name of this DynaClass (analogous to the getName() method of java.lang.Classinvalid input: '<'/code), which allows the same DynaClass implementation class to support different dynamic classes, with different sets of properties.
    Instantiate and return a new DynaBean instance, associated with this DynaClass.
    protected void
    setDynaBeanClass(Class<?> dynaBeanClass)
    Set the Class object we will use to create new instances in the newInstance() method.
    protected void
    Set the list of dynamic properties supported by this DynaClass.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • constructor

      protected transient Constructor<?> constructor
      The constructor of the dynaBeanClass that we will use for creating new instances.
    • constructorTypes

      protected static Class<?>[] constructorTypes
      The method signature of the constructor we will use to create new DynaBean instances.
    • constructorValues

      protected Object[] constructorValues
      The argument values to be passed to the constructore we will use to create new DynaBean instances.
    • dynaBeanClass

      protected Class<?> dynaBeanClass
      The DynaBean implementation class we will use for creating new instances.
    • name

      protected String name
      The "name" of this DynaBean class.
    • properties

      protected DynaProperty[] properties
      The set of dynamic properties that are part of this DynaClass.
    • propertiesMap

      protected HashMap<String,DynaProperty> propertiesMap
      The set of dynamic properties that are part of this DynaClass, keyed by the property name. Individual descriptor instances will be the same instances as those in the properties list.
  • Constructor Details

    • BasicDynaClass

      public BasicDynaClass()
      Construct a new BasicDynaClass with default parameters.
    • BasicDynaClass

      public BasicDynaClass(String name, Class<?> dynaBeanClass)
      Construct a new BasicDynaClass with the specified parameters.
      Parameters:
      name - Name of this DynaBean class
      dynaBeanClass - The implementation class for new instances
    • BasicDynaClass

      public BasicDynaClass(String name, Class<?> dynaBeanClass, DynaProperty[] properties)
      Construct a new BasicDynaClass with the specified parameters.
      Parameters:
      name - Name of this DynaBean class
      dynaBeanClass - The implementation class for new intances
      properties - Property descriptors for the supported properties
  • Method Details

    • getName

      public String getName()
      Return the name of this DynaClass (analogous to the getName() method of java.lang.Classinvalid input: '<'/code), which allows the same DynaClass implementation class to support different dynamic classes, with different sets of properties.
      Specified by:
      getName in interface DynaClass
      Returns:
      the name of the DynaClass
    • getDynaProperty

      public DynaProperty getDynaProperty(String name)
      Return a property descriptor for the specified property, if it exists; otherwise, return null.
      Specified by:
      getDynaProperty in interface DynaClass
      Parameters:
      name - Name of the dynamic property for which a descriptor is requested
      Returns:
      The descriptor for the specified property
      Throws:
      IllegalArgumentException - if no property name is specified
    • getDynaProperties

      public DynaProperty[] getDynaProperties()

      Return an array of ProperyDescriptors for the properties currently defined in this DynaClass. If no properties are defined, a zero-length array will be returned.

      FIXME - Should we really be implementing getBeanInfo() instead, which returns property descriptors and a bunch of other stuff?

      Specified by:
      getDynaProperties in interface DynaClass
      Returns:
      the set of properties for this DynaClass
    • newInstance

      Instantiate and return a new DynaBean instance, associated with this DynaClass.
      Specified by:
      newInstance in interface DynaClass
      Returns:
      A new DynaBean instance
      Throws:
      IllegalAccessException - if the Class or the appropriate constructor is not accessible
      InstantiationException - if this Class represents an abstract class, an array class, a primitive type, or void; or if instantiation fails for some other reason
    • getDynaBeanClass

      public Class<?> getDynaBeanClass()
      Return the Class object we will use to create new instances in the newInstance() method. This Class MUST implement the DynaBean interface.
      Returns:
      The class of the DynaBean
    • setDynaBeanClass

      protected void setDynaBeanClass(Class<?> dynaBeanClass)
      Set the Class object we will use to create new instances in the newInstance() method. This Class MUST implement the DynaBean interface.
      Parameters:
      dynaBeanClass - The new Class object
      Throws:
      IllegalArgumentException - if the specified Class does not implement the DynaBean interface
    • setProperties

      protected void setProperties(DynaProperty[] properties)
      Set the list of dynamic properties supported by this DynaClass.
      Parameters:
      properties - List of dynamic properties to be supported