org.apache.struts.config
Class FormBeanConfig

java.lang.Object
  extended by org.apache.struts.config.BaseConfig
      extended by org.apache.struts.config.FormBeanConfig
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
ActionFormBean

public class FormBeanConfig
extends BaseConfig

A JavaBean representing the configuration information of a <form-bean> element in a Struts configuration file.

Since:
Struts 1.1
Version:
$Rev: 472728 $ $Date: 2006-01-17 07:26:20 -0500 (Tue, 17 Jan 2006) $
See Also:
Serialized Form

Field Summary
protected  DynaActionFormClass dynaActionFormClass
          The DynaActionFormClass associated with a DynaActionForm.
protected  boolean dynamic
          Is the form bean class an instance of DynaActionForm with dynamic properties?
protected  boolean extensionProcessed
          Have the inheritance values for this class been applied?
protected  HashMap formProperties
          The set of FormProperty elements defining dynamic form properties for this form bean, keyed by property name.
protected  String inherit
          The name of the FormBeanConfig that this config inherits configuration information from.
protected  String lock
          The lockable object we can synchronize on when creating DynaActionFormClass.
protected  String name
          The unique identifier of this form bean, which is used to reference this bean in ActionMapping instances as well as for the name of the request or session attribute under which the corresponding form bean instance is created or accessed.
protected  boolean restricted
          Is this DynaClass currently restricted (for DynaBeans with a MutableDynaClass).
protected  String type
          The fully qualified Java class name of the implementation class to be used or generated.
 
Fields inherited from class org.apache.struts.config.BaseConfig
configured
 
Constructor Summary
FormBeanConfig()
           
 
Method Summary
 void addFormPropertyConfig(FormPropertyConfig config)
          Add a new FormPropertyConfig instance to the set associated with this module.
 boolean canReuse(ActionForm form)
          Checks if the given ActionForm instance is suitable for use as an alternative to calling this FormBeanConfig instance's createActionForm method.
protected  boolean checkCircularInheritance(ModuleConfig moduleConfig)
          Traces the hierarchy of this object to check if any of the ancestors is extending this instance.
 ActionForm createActionForm(ActionContext context)
          Create and return an ActionForm instance appropriate to the information in this FormBeanConfig.
 ActionForm createActionForm(ActionServlet servlet)
          Create and return an ActionForm instance appropriate to the information in this FormBeanConfig.
 FormPropertyConfig findFormPropertyConfig(String name)
          Return the form property configuration for the specified property name, if any; otherwise return null.
 FormPropertyConfig[] findFormPropertyConfigs()
          Return the form property configurations for this module.
protected  Class formBeanClass()
          Return the Class instance for the form bean implementation configured by this FormBeanConfig instance.
 void freeze()
          Freeze the configuration of this component.
 DynaActionFormClass getDynaActionFormClass()
          Return the DynaActionFormClass associated with a DynaActionForm.
 boolean getDynamic()
           
 String getExtends()
           
 String getName()
           
 String getType()
           
protected  void inheritFormProperties(FormBeanConfig config)
          Compare the form properties of this bean with that of the given and copy those that are not present.
 void inheritFrom(FormBeanConfig config)
          Inherit values that have not been overridden from the provided config object.
 boolean isExtensionProcessed()
           
 boolean isRestricted()
          Indicates whether a MutableDynaClass is currently restricted.
 void processExtends(ModuleConfig moduleConfig)
          Inherit configuration information from the FormBeanConfig that this instance is extending.
 void removeFormPropertyConfig(FormPropertyConfig config)
          Remove the specified form property configuration instance.
 void setExtends(String extend)
           
 void setName(String name)
           
 void setRestricted(boolean restricted)
          Set whether a MutableDynaClass is currently restricted.
 void setType(String type)
           
 String toString()
          Return a String representation of this object.
 
Methods inherited from class org.apache.struts.config.BaseConfig
copyProperties, getProperties, getProperty, inheritProperties, setProperties, setProperty, throwIfConfigured
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

formProperties

protected HashMap formProperties
The set of FormProperty elements defining dynamic form properties for this form bean, keyed by property name.


lock

protected String lock

The lockable object we can synchronize on when creating DynaActionFormClass.


dynaActionFormClass

protected transient DynaActionFormClass dynaActionFormClass
The DynaActionFormClass associated with a DynaActionForm.


dynamic

protected boolean dynamic
Is the form bean class an instance of DynaActionForm with dynamic properties?


inherit

protected String inherit
The name of the FormBeanConfig that this config inherits configuration information from.


extensionProcessed

protected boolean extensionProcessed
Have the inheritance values for this class been applied?


name

protected String name
The unique identifier of this form bean, which is used to reference this bean in ActionMapping instances as well as for the name of the request or session attribute under which the corresponding form bean instance is created or accessed.


type

protected String type
The fully qualified Java class name of the implementation class to be used or generated.


restricted

protected boolean restricted
Is this DynaClass currently restricted (for DynaBeans with a MutableDynaClass).

Constructor Detail

FormBeanConfig

public FormBeanConfig()
Method Detail

getDynaActionFormClass

public DynaActionFormClass getDynaActionFormClass()

Return the DynaActionFormClass associated with a DynaActionForm.

Throws:
IllegalArgumentException - if the ActionForm is not dynamic

getDynamic

public boolean getDynamic()

getExtends

public String getExtends()

setExtends

public void setExtends(String extend)

isExtensionProcessed

public boolean isExtensionProcessed()

getName

public String getName()

setName

public void setName(String name)

getType

public String getType()

setType

public void setType(String type)

isRestricted

public boolean isRestricted()

Indicates whether a MutableDynaClass is currently restricted.

If so, no changes to the existing registration of property names, data types, readability, or writeability are allowed.


setRestricted

public void setRestricted(boolean restricted)

Set whether a MutableDynaClass is currently restricted.

If so, no changes to the existing registration of property names, data types, readability, or writeability are allowed.


checkCircularInheritance

protected boolean checkCircularInheritance(ModuleConfig moduleConfig)

Traces the hierarchy of this object to check if any of the ancestors is extending this instance.

Parameters:
moduleConfig - The configuration for the module being configured.
Returns:
true if circular inheritance was detected.

inheritFormProperties

protected void inheritFormProperties(FormBeanConfig config)
                              throws ClassNotFoundException,
                                     IllegalAccessException,
                                     InstantiationException,
                                     InvocationTargetException

Compare the form properties of this bean with that of the given and copy those that are not present.

Parameters:
config - The form bean config to copy properties from.
Throws:
ClassNotFoundException
IllegalAccessException
InstantiationException
InvocationTargetException
See Also:
inheritFrom(FormBeanConfig)

createActionForm

public ActionForm createActionForm(ActionServlet servlet)
                            throws IllegalAccessException,
                                   InstantiationException

Create and return an ActionForm instance appropriate to the information in this FormBeanConfig.

Although this method is not formally deprecated yet, where possible, the form which accepts an ActionContext as an argument is preferred, to help sever direct dependencies on the Servlet API. As the ActionContext becomes more familiar in Struts, this method will almost certainly be deprecated.

Parameters:
servlet - The action servlet
Returns:
ActionForm 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

createActionForm

public ActionForm createActionForm(ActionContext context)
                            throws IllegalAccessException,
                                   InstantiationException

Create and return an ActionForm instance appropriate to the information in this FormBeanConfig.

NOTE: If the given ActionContext is not of type ServletActionContext (or a subclass), then the form which is returned will have a null servlet property. Some of the subclasses of ActionForm included in Struts will later throw a NullPointerException in this case.

TODO: Find a way to control this direct dependency on the Servlet API.

Parameters:
context - The ActionContext.
Returns:
ActionForm 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

canReuse

public boolean canReuse(ActionForm form)

Checks if the given ActionForm instance is suitable for use as an alternative to calling this FormBeanConfig instance's createActionForm method.

Parameters:
form - an existing form instance that may be reused.
Returns:
true if the given form can be reused as the form for this config.

addFormPropertyConfig

public void addFormPropertyConfig(FormPropertyConfig config)
Add a new FormPropertyConfig instance to the set associated with this module.

Parameters:
config - The new configuration instance to be added
Throws:
IllegalArgumentException - if this property name has already been defined

findFormPropertyConfig

public FormPropertyConfig findFormPropertyConfig(String name)
Return the form property configuration for the specified property name, if any; otherwise return null.

Parameters:
name - Form property name to find a configuration for

findFormPropertyConfigs

public FormPropertyConfig[] findFormPropertyConfigs()
Return the form property configurations for this module. If there are none, a zero-length array is returned.


freeze

public void freeze()
Freeze the configuration of this component.

Overrides:
freeze in class BaseConfig

inheritFrom

public void inheritFrom(FormBeanConfig config)
                 throws ClassNotFoundException,
                        IllegalAccessException,
                        InstantiationException,
                        InvocationTargetException

Inherit values that have not been overridden from the provided config object. Subclasses overriding this method should verify that the given parameter is of a class that contains a property it is trying to inherit:

 if (config instanceof MyCustomConfig) {
     MyCustomConfig myConfig =
         (MyCustomConfig) config;

     if (getMyCustomProp() == null) {
         setMyCustomProp(myConfig.getMyCustomProp());
     }
 }
 

If the given config is extending another object, those extensions should be resolved before it's used as a parameter to this method.

Parameters:
config - The object that this instance will be inheriting its values from.
Throws:
ClassNotFoundException
IllegalAccessException
InstantiationException
InvocationTargetException
See Also:
processExtends(ModuleConfig)

processExtends

public void processExtends(ModuleConfig moduleConfig)
                    throws ClassNotFoundException,
                           IllegalAccessException,
                           InstantiationException,
                           InvocationTargetException

Inherit configuration information from the FormBeanConfig that this instance is extending. This method verifies that any form bean config object that it inherits from has also had its processExtends() method called.

Parameters:
moduleConfig - The ModuleConfig that this bean is from.
Throws:
ClassNotFoundException
IllegalAccessException
InstantiationException
InvocationTargetException
See Also:
inheritFrom(FormBeanConfig)

removeFormPropertyConfig

public void removeFormPropertyConfig(FormPropertyConfig config)
Remove the specified form property configuration instance.

Parameters:
config - FormPropertyConfig instance to be removed

toString

public String toString()
Return a String representation of this object.

Overrides:
toString in class Object

formBeanClass

protected Class formBeanClass()
Return the Class instance for the form bean implementation configured by this FormBeanConfig instance. This method uses the same algorithm as RequestUtils.applicationClass() but is reproduced to avoid a runtime dependence.



Copyright © 2000-2008 Apache Software Foundation. All Rights Reserved.