Package org.apache.commons.beanutils
Class BasicDynaClass
- java.lang.Object
-
- org.apache.commons.beanutils.BasicDynaClass
-
- All Implemented Interfaces:
java.io.Serializable
,DynaClass
- Direct Known Subclasses:
LazyDynaClass
public class BasicDynaClass extends java.lang.Object implements DynaClass, java.io.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 aDynaClass
. This is used to associate the DynaBean instance with this DynaClass.- Version:
- $Id: BasicDynaClass.java 1540186 2013-11-08 21:08:30Z oheger $
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.reflect.Constructor<?>
constructor
The constructor of thedynaBeanClass
that we will use for creating new instances.protected static java.lang.Class<?>[]
constructorTypes
The method signature of the constructor we will use to create new DynaBean instances.protected java.lang.Object[]
constructorValues
The argument values to be passed to the constructore we will use to create new DynaBean instances.protected java.lang.Class<?>
dynaBeanClass
TheDynaBean
implementation class we will use for creating new instances.protected java.lang.String
name
The "name" of this DynaBean class.protected DynaProperty[]
properties
The set of dynamic properties that are part of this DynaClass.protected java.util.HashMap<java.lang.String,DynaProperty>
propertiesMap
The set of dynamic properties that are part of this DynaClass, keyed by the property name.
-
Constructor Summary
Constructors Constructor Description BasicDynaClass()
Construct a new BasicDynaClass with default parameters.BasicDynaClass(java.lang.String name, java.lang.Class<?> dynaBeanClass)
Construct a new BasicDynaClass with the specified parameters.BasicDynaClass(java.lang.String name, java.lang.Class<?> dynaBeanClass, DynaProperty[] properties)
Construct a new BasicDynaClass with the specified parameters.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.lang.Class<?>
getDynaBeanClass()
Return the Class object we will use to create new instances in thenewInstance()
method.DynaProperty[]
getDynaProperties()
Return an array ofProperyDescriptors
for the properties currently defined in this DynaClass.DynaProperty
getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it exists; otherwise, returnnull
.java.lang.String
getName()
Return the name of this DynaClass (analogous to thegetName()
method ofjava.lang.Class
DynaClass 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(java.lang.Class<?> dynaBeanClass)
Set the Class object we will use to create new instances in thenewInstance()
method.protected void
setProperties(DynaProperty[] properties)
Set the list of dynamic properties supported by this DynaClass.
-
-
-
Field Detail
-
constructor
protected transient java.lang.reflect.Constructor<?> constructor
The constructor of thedynaBeanClass
that we will use for creating new instances.
-
constructorTypes
protected static java.lang.Class<?>[] constructorTypes
The method signature of the constructor we will use to create new DynaBean instances.
-
constructorValues
protected java.lang.Object[] constructorValues
The argument values to be passed to the constructore we will use to create new DynaBean instances.
-
dynaBeanClass
protected java.lang.Class<?> dynaBeanClass
TheDynaBean
implementation class we will use for creating new instances.
-
name
protected java.lang.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 java.util.HashMap<java.lang.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 theproperties
list.
-
-
Constructor Detail
-
BasicDynaClass
public BasicDynaClass()
Construct a new BasicDynaClass with default parameters.
-
BasicDynaClass
public BasicDynaClass(java.lang.String name, java.lang.Class<?> dynaBeanClass)
Construct a new BasicDynaClass with the specified parameters.- Parameters:
name
- Name of this DynaBean classdynaBeanClass
- The implementation class for new instances
-
BasicDynaClass
public BasicDynaClass(java.lang.String name, java.lang.Class<?> dynaBeanClass, DynaProperty[] properties)
Construct a new BasicDynaClass with the specified parameters.- Parameters:
name
- Name of this DynaBean classdynaBeanClass
- The implementation class for new intancesproperties
- Property descriptors for the supported properties
-
-
Method Detail
-
getName
public java.lang.String getName()
Return the name of this DynaClass (analogous to thegetName()
method ofjava.lang.Class
DynaClass implementation class to support different dynamic classes, with different sets of properties.
-
getDynaProperty
public DynaProperty getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it exists; otherwise, returnnull
.- Specified by:
getDynaProperty
in interfaceDynaClass
- Parameters:
name
- Name of the dynamic property for which a descriptor is requested- Returns:
- The descriptor for the specified property
- Throws:
java.lang.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 interfaceDynaClass
- Returns:
- the set of properties for this DynaClass
-
newInstance
public DynaBean newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException
Instantiate and return a new DynaBean instance, associated with this DynaClass.- Specified by:
newInstance
in interfaceDynaClass
- Returns:
- A new
DynaBean
instance - Throws:
java.lang.IllegalAccessException
- if the Class or the appropriate constructor is not accessiblejava.lang.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 java.lang.Class<?> getDynaBeanClass()
Return the Class object we will use to create new instances in thenewInstance()
method. This Class MUST implement theDynaBean
interface.- Returns:
- The class of the
DynaBean
-
setDynaBeanClass
protected void setDynaBeanClass(java.lang.Class<?> dynaBeanClass)
Set the Class object we will use to create new instances in thenewInstance()
method. This Class MUST implement theDynaBean
interface.- Parameters:
dynaBeanClass
- The new Class object- Throws:
java.lang.IllegalArgumentException
- if the specified Class does not implement theDynaBean
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
-
-