org.apache.commons.beanutils
Class BasicDynaClass

java.lang.Object
  extended by 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:
$Revision: 926529 $ $Date: 2010-03-23 11:44:24 +0000 (Tue, 23 Mar 2010) $
Author:
Craig McClanahan
See Also:
Serialized Form

Field Summary
protected  Constructor constructor
          The constructor of the dynaBeanClass that we will use for creating new instances.
protected static Class[] constructorTypes
          The method signature of the constructor we will use to create new DynaBean instances.
protected  Object[] constructorValues
          The argument values to be passed to the constructore we will use to create new DynaBean instances.
protected  Class dynaBeanClass
          The DynaBean implementation class we will use for creating new instances.
protected  String name
          The "name" of this DynaBean class.
protected  DynaProperty[] properties
          The set of dynamic properties that are part of this DynaClass.
protected  HashMap propertiesMap
          The set of dynamic properties that are part of this DynaClass, keyed by the property name.
 
Constructor Summary
BasicDynaClass()
          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
 Class getDynaBeanClass()
          Return the Class object we will use to create new instances in the newInstance() method.
 DynaProperty[] getDynaProperties()
          Return an array of ProperyDescriptors for the properties currently defined in this DynaClass.
 DynaProperty getDynaProperty(String name)
          Return a property descriptor for the specified property, if it exists; otherwise, return null.
 String getName()
          Return the name of this DynaClass (analogous to the getName() method of java.lang.ClassDynaClass implementation class to support different dynamic classes, with different sets of properties.
 DynaBean newInstance()
          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 setProperties(DynaProperty[] properties)
          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 Detail

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

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 Detail

getName

public String getName()
Return the name of this DynaClass (analogous to the getName() method of java.lang.ClassDynaClass 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

public DynaBean newInstance()
                     throws IllegalAccessException,
                            InstantiationException
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


Copyright © 2000-2010 The Apache Software Foundation. All Rights Reserved.