org.apache.commons.jelly.impl
Class DynamicBeanTag

java.lang.Object
  extended by org.apache.commons.jelly.TagSupport
      extended by org.apache.commons.jelly.DynaTagSupport
          extended by org.apache.commons.jelly.DynaBeanTagSupport
              extended by org.apache.commons.jelly.impl.DynamicBeanTag
All Implemented Interfaces:
DynaTag, BeanSource, Tag

public class DynamicBeanTag
extends DynaBeanTagSupport
implements BeanSource

This tag is bound onto a Java Bean class. When the tag is invoked a bean will be created using the tags attributes. The bean may also have an invoke method called invoke(), run(), execute() or some such method which will be invoked after the bean has been configured.

Version:
$Revision: 1807798 $
Author:
James Strachan, Jason van Zyl

Field Summary
private  java.util.Map attributes
          the attribute definitions
private  java.lang.Object bean
          the current bean instance
private  java.lang.Class beanClass
          the bean class
private static java.lang.Object[] emptyArgs
          Empty arguments for Method.invoke()
private static org.apache.commons.logging.Log log
          The Log to which logging calls will be made.
private  java.lang.reflect.Method method
          the method to invoke on the bean
private  java.util.Set setAttributesSet
          the set of attribute names we've already set
private  java.lang.String var
          the current variable name that the bean should be exported as
private  java.lang.String variableNameAttribute
          the tag attribute name that is used to declare the name of the variable to export after running this tag
 
Fields inherited from class org.apache.commons.jelly.TagSupport
body, context, hasTrimmed, parent, shouldTrim
 
Constructor Summary
DynamicBeanTag(java.lang.Class beanClass, java.util.Map attributes, java.lang.String variableNameAttribute, java.lang.reflect.Method method)
           
 
Method Summary
 void beforeSetAttributes()
          Callback to allow processing to occur before the attributes are about to be set
 void doTag(XMLOutput output)
          Evaluates this tag after all the tags properties have been initialized.
 java.lang.Object getBean()
           
private  void methodInvocationException(java.lang.Object bean, java.lang.reflect.Method method, java.lang.Exception e)
          Report the state of the bean when method invocation fails so that the user can determine any problems that might be occuring while using dynamic jelly beans.
 void setAttribute(java.lang.String name, java.lang.Object value)
          Sets an attribute value of this tag before the tag is invoked
 
Methods inherited from class org.apache.commons.jelly.DynaBeanTagSupport
getAttributeType, getDynaBean, setContext, setDynaBean
 
Methods inherited from class org.apache.commons.jelly.TagSupport
findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, getBody, getBodyText, getBodyText, getContext, getParent, invokeBody, isEscapeText, isTrim, setBody, setEscapeText, setParent, setTrim, trimBody
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.commons.jelly.Tag
getBody, getContext, getParent, invokeBody, setBody, setParent
 

Field Detail

log

private static final org.apache.commons.logging.Log log
The Log to which logging calls will be made.


emptyArgs

private static final java.lang.Object[] emptyArgs
Empty arguments for Method.invoke()


beanClass

private java.lang.Class beanClass
the bean class


bean

private java.lang.Object bean
the current bean instance


method

private java.lang.reflect.Method method
the method to invoke on the bean


variableNameAttribute

private java.lang.String variableNameAttribute
the tag attribute name that is used to declare the name of the variable to export after running this tag


var

private java.lang.String var
the current variable name that the bean should be exported as


setAttributesSet

private java.util.Set setAttributesSet
the set of attribute names we've already set


attributes

private java.util.Map attributes
the attribute definitions

Constructor Detail

DynamicBeanTag

public DynamicBeanTag(java.lang.Class beanClass,
                      java.util.Map attributes,
                      java.lang.String variableNameAttribute,
                      java.lang.reflect.Method method)
Parameters:
beanClass - Class of the bean that will receive the setter events
attributes -
variableNameAttribute -
method - method of the Bean to invoke after the attributes have been set. Can be null.
Method Detail

beforeSetAttributes

public void beforeSetAttributes()
                         throws JellyTagException
Description copied from class: DynaBeanTagSupport
Callback to allow processing to occur before the attributes are about to be set

Overrides:
beforeSetAttributes in class DynaBeanTagSupport
Throws:
JellyTagException

setAttribute

public void setAttribute(java.lang.String name,
                         java.lang.Object value)
                  throws JellyTagException
Description copied from class: DynaBeanTagSupport
Sets an attribute value of this tag before the tag is invoked

Specified by:
setAttribute in interface DynaTag
Overrides:
setAttribute in class DynaBeanTagSupport
Throws:
JellyTagException

doTag

public void doTag(XMLOutput output)
           throws JellyTagException
Description copied from interface: Tag
Evaluates this tag after all the tags properties have been initialized.

Specified by:
doTag in interface Tag
Throws:
JellyTagException

methodInvocationException

private void methodInvocationException(java.lang.Object bean,
                                       java.lang.reflect.Method method,
                                       java.lang.Exception e)
                                throws JellyTagException
Report the state of the bean when method invocation fails so that the user can determine any problems that might be occuring while using dynamic jelly beans.

Parameters:
bean - Bean on which methodmethod - Method that was invoked
e - Exception throw when method was invoked
Throws:
JellyTagException

getBean

public java.lang.Object getBean()
Specified by:
getBean in interface BeanSource
Returns:
the bean that has just been created