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
*DynaClassinterface. Can be used as a convenience base class for more sophisticated implementations.IMPLEMENTATION NOTE - The
DynaBeanimplementation 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.- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.reflect.Constructor<?>constructorThe constructor of thedynaBeanClassthat we will use for creating new instances.protected static java.lang.Class<?>[]constructorTypesThe method signature of the constructor we will use to create new DynaBean instances.protected java.lang.Object[]constructorValuesThe argument values to be passed to the constructore we will use to create new DynaBean instances.protected java.lang.Class<?>dynaBeanClassTheDynaBeanimplementation class we will use for creating new instances.protected java.lang.StringnameThe "name" of this DynaBean class.protected DynaProperty[]propertiesThe set of dynamic properties that are part of this DynaClass.protected java.util.HashMap<java.lang.String,DynaProperty>propertiesMapThe set of dynamic properties that are part of this DynaClass, keyed by the property name.private static longserialVersionUID
-
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 ofProperyDescriptorsfor the properties currently defined in this DynaClass.DynaPropertygetDynaProperty(java.lang.String name)Return a property descriptor for the specified property, if it exists; otherwise, returnnull.java.lang.StringgetName()Return the name of this DynaClass (analogous to thegetName()method ofjava.lang.Class), which allows the sameDynaClassimplementation class to support different dynamic classes, with different sets of properties.DynaBeannewInstance()Instantiate and return a new DynaBean instance, associated with this DynaClass.protected voidsetDynaBeanClass(java.lang.Class<?> dynaBeanClass)Set the Class object we will use to create new instances in thenewInstance()method.protected voidsetProperties(DynaProperty[] properties)Set the list of dynamic properties supported by this DynaClass.
-
-
-
Field Detail
-
serialVersionUID
private static final long serialVersionUID
- See Also:
- Constant Field Values
-
constructorTypes
protected static java.lang.Class<?>[] constructorTypes
The method signature of the constructor we will use to create new DynaBean instances.
-
constructor
protected transient java.lang.reflect.Constructor<?> constructor
The constructor of thedynaBeanClassthat we will use for creating new 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
TheDynaBeanimplementation 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 thepropertieslist.
-
-
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
-
getDynaBeanClass
public java.lang.Class<?> getDynaBeanClass()
Return the Class object we will use to create new instances in thenewInstance()method. This Class MUST implement theDynaBeaninterface.- Returns:
- The class of the
DynaBean
-
getDynaProperties
public DynaProperty[] getDynaProperties()
Return an array of
ProperyDescriptorsfor 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:
getDynaPropertiesin interfaceDynaClass- Returns:
- the set of properties for this DynaClass
-
getDynaProperty
public DynaProperty getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it exists; otherwise, returnnull.- Specified by:
getDynaPropertyin 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
-
getName
public java.lang.String getName()
Return the name of this DynaClass (analogous to thegetName()method ofjava.lang.Class), which allows the sameDynaClassimplementation class to support different dynamic classes, with different sets of properties.
-
newInstance
public DynaBean newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException
Instantiate and return a new DynaBean instance, associated with this DynaClass.- Specified by:
newInstancein interfaceDynaClass- Returns:
- A new
DynaBeaninstance - 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
-
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 theDynaBeaninterface.- Parameters:
dynaBeanClass- The new Class object- Throws:
java.lang.IllegalArgumentException- if the specified Class does not implement theDynaBeaninterface
-
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
-
-