org.apache.struts.action
Class DynaActionFormClass

java.lang.Object
  |
  +--org.apache.struts.action.DynaActionFormClass
All Implemented Interfaces:
org.apache.commons.beanutils.DynaClass, java.io.Serializable

public class DynaActionFormClass
extends java.lang.Object
implements org.apache.commons.beanutils.DynaClass, java.io.Serializable

Implementation of DynaClass for DynaActionForm classes that allow developers to define ActionForms without having to individually code all of the classes. NOTE - This class is only used in the internal implementation of dynamic action form beans. Applications never need to consult this documentation.

Since:
Struts 1.1
Version:
$Revision: 1.1 $ $Date$
Author:
Craig McClanahan
See Also:
Serialized Form

Field Summary
protected  java.lang.Class beanClass
          The DynaActionForm implementation Class which we will use to create new bean instances.
protected  FormBeanConfig config
          The form bean configuration information for this class.
protected static java.util.HashMap dynaClasses
          The set of DynaActionFormClass instances that have ever been created, keyed by the form bean name.
protected static java.lang.String lock
          The lockable object we can synchronize on, even if dynaClasses is null,
protected  java.lang.String name
          The "dynamic class name" for this DynaClass.
protected  org.apache.commons.beanutils.DynaProperty[] properties
          The set of dynamic properties that are part of this DynaClass.
protected  java.util.HashMap propertiesMap
          The set of dynamic properties that are part of this DynaClass, keyed by the property name.
 
Constructor Summary
private DynaActionFormClass(FormBeanConfig config)
          Construct a new DynaActionFormClass for the specified form bean configuration.
 
Method Summary
static void clear()
          Clear our cache of DynaActionFormClass instances.
static DynaActionFormClass createDynaActionFormClass(FormBeanConfig config)
          Create (if necessary) and return a new DynaActionFormClass instance for the specified form bean configuration instance.
protected  java.lang.Class getBeanClass()
          Return the implementation class we are using to construct new instances, re-introspecting our FormBeanConfig if necessary (that is, after being deserialized, since beanClass is marked transient.
 org.apache.commons.beanutils.DynaProperty[] getDynaProperties()
          Return an array of DynaPropertys for the properties currently defined in this DynaClass.
 org.apache.commons.beanutils.DynaProperty getDynaProperty(java.lang.String name)
          Return a property descriptor for the specified property, if it exists; otherwise, return null.
 java.lang.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.
protected  void introspect(FormBeanConfig config)
          Introspect our form bean configuration to identify the supported properties.
 org.apache.commons.beanutils.DynaBean newInstance()
          Instantiate and return a new DynaActionForm instance, associated with this DynaActionFormClass.
 java.lang.String toString()
          Render a String representation of this object.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

beanClass

protected transient java.lang.Class beanClass
The DynaActionForm implementation Class which we will use to create new bean instances.


config

protected FormBeanConfig config
The form bean configuration information for this class.


name

protected java.lang.String name
The "dynamic class name" for this DynaClass.


properties

protected org.apache.commons.beanutils.DynaProperty[] properties
The set of dynamic properties that are part of this DynaClass.


propertiesMap

protected java.util.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.


dynaClasses

protected static transient java.util.HashMap dynaClasses
The set of DynaActionFormClass instances that have ever been created, keyed by the form bean name.


lock

protected static java.lang.String lock
The lockable object we can synchronize on, even if dynaClasses is null,

Constructor Detail

DynaActionFormClass

private DynaActionFormClass(FormBeanConfig config)
Construct a new DynaActionFormClass for the specified form bean configuration. This constructor is private; DynaActionFormClass instances will be created as needed via calls to the static createDynaActionFormClass() method.

Parameters:
config - The FormBeanConfig instance describing the properties of the bean to be created
Throws:
java.lang.IllegalArgumentException - if the bean implementation class specified in the configuration is not DynaActionForm (or a subclass of DynaActionForm)
Method Detail

getName

public java.lang.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 org.apache.commons.beanutils.DynaClass

getDynaProperty

public org.apache.commons.beanutils.DynaProperty getDynaProperty(java.lang.String name)
Return a property descriptor for the specified property, if it exists; otherwise, return null.

Specified by:
getDynaProperty in interface org.apache.commons.beanutils.DynaClass
Parameters:
name - Name of the dynamic property for which a descriptor is requested
Throws:
java.lang.IllegalArgumentException - if no property name is specified

getDynaProperties

public org.apache.commons.beanutils.DynaProperty[] getDynaProperties()

Return an array of DynaPropertys 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 org.apache.commons.beanutils.DynaClass

newInstance

public org.apache.commons.beanutils.DynaBean newInstance()
                                                  throws java.lang.IllegalAccessException,
                                                         java.lang.InstantiationException

Instantiate and return a new DynaActionForm instance, associated with this DynaActionFormClass. The properties of the returned DynaActionForm will have been initialized to the default values specified in the form bean configuration information.

Specified by:
newInstance in interface org.apache.commons.beanutils.DynaClass
Throws:
java.lang.IllegalAccessException - if the Class or the appropriate constructor is not accessible
java.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

toString

public java.lang.String toString()
Render a String representation of this object.

Overrides:
toString in class java.lang.Object

clear

public static void clear()
Clear our cache of DynaActionFormClass instances.


createDynaActionFormClass

public static DynaActionFormClass createDynaActionFormClass(FormBeanConfig config)
Create (if necessary) and return a new DynaActionFormClass instance for the specified form bean configuration instance.

Parameters:
config - The FormBeanConfig instance describing the properties of the bean to be created
Throws:
java.lang.IllegalArgumentException - if the bean implementation class specified in the configuration is not DynaActionForm (or a subclass of DynaActionForm)

getBeanClass

protected java.lang.Class getBeanClass()
Return the implementation class we are using to construct new instances, re-introspecting our FormBeanConfig if necessary (that is, after being deserialized, since beanClass is marked transient.


introspect

protected void introspect(FormBeanConfig config)
Introspect our form bean configuration to identify the supported properties.

Parameters:
config - The FormBeanConfig instance describing the properties of the bean to be created
Throws:
java.lang.IllegalArgumentException - if the bean implementation class specified in the configuration is not DynaActionForm (or a subclass of DynaActionForm)


Copyright © 2000-2003 - Apache Software Foundation