org.apache.commons.jelly.tags.core

## Class UseBeanTag

- java.lang.Object
- - org.apache.commons.jelly.TagSupport
  - - org.apache.commons.jelly.DynaTagSupport
    - - org.apache.commons.jelly.MapTagSupport
      - - org.apache.commons.jelly.tags.core.UseBeanTag

All Implemented Interfaces:
  DynaTag, BeanSource, Tag

Direct Known Subclasses:
  UseListTag

    public class UseBeanTag
    extends MapTagSupport
    implements BeanSource

A tag which instantiates an instance of the given class and then sets the properties on the bean. The class can be specified via a `Class` instance or a String which will be used to load the class using either the current thread's context class loader or the class loader used to load this Jelly library. This tag can be used it as follows,

     <j:useBean var="person" class="com.acme.Person" name="James" location="${loc}"/>
     <j:useBean var="order" class="${orderClass}" amount="12" price="123.456"/>

Version:
  $Revision: 155420 $
Author:
  James Strachan

### Field Summary

### Fields inherited from class org.apache.commons.jelly.TagSupport

`body, context, parent`

### Constructor Summary

Constructors
Constructor and Description
`UseBeanTag()`
`UseBeanTag(java.lang.Class defaultClass)`

### Method Summary

Methods
`protected void` `addIgnoreProperty(java.lang.String name)` Adds a name to the Set of property names that will be skipped when setting bean properties.
`protected java.lang.Class` `convertToClass(java.lang.Object classObject)` Attempts to convert the given object to a Class instance.
`void` `doTag(XMLOutput output)` Evaluates this tag after all the tags properties have been initialized.
`java.lang.Object` `getBean()`
`protected java.lang.Class` `getDefaultClass()` Allows derived classes to provide a default bean implementation class
`protected java.util.Set` `getIgnorePropertySet()`
`boolean` `isIgnoreUnknownProperties()`
`protected java.lang.Class` `loadClass(java.lang.String className)` Loads the given class using the default class loading mechanism which is to try use the current Thread's context class loader first otherise use the class loader which loaded this class.
`protected java.lang.Object` `newInstance(java.lang.Class theClass, java.util.Map attributes, XMLOutput output)` Creates a new instance of the given class, which by default will invoke the default constructor.
`protected void` `processBean(java.lang.String var, java.lang.Object bean)` By default this will export the bean using the given variable if it is defined.
`protected void` `setBean(java.lang.Object bean)` Allow derived classes to programatically set the bean
`protected void` `setBeanProperties(java.lang.Object bean, java.util.Map attributes)` Sets the properties on the bean.
`void` `setIgnoreUnknownProperties(boolean ignoreUnknownProps)` If this tag finds an attribute in the XML that's not ignored by `ignoreProperties` and isn't a bean property, should it throw an exception?
`protected void` `validateBeanProperties(java.lang.Object bean, java.util.Map attributes)` If `isIgnoreUnknownProperties()` returns true, make sure that every non-ignored (`addIgnoreProperty(String)`) property matches a writable property on the target bean.

### Methods inherited from class org.apache.commons.jelly.MapTagSupport

`createAttributes, getAttributes, setAttribute`

### Methods inherited from class org.apache.commons.jelly.DynaTagSupport

`getAttributeType`

### Methods inherited from class org.apache.commons.jelly.TagSupport

`findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, findAncestorWithClass, getBody, getBodyText, getBodyText, getContext, getParent, invokeBody, isEscapeText, isTrim, setBody, setContext, 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, setContext, setParent`

### Constructor Detail

#### UseBeanTag

    public UseBeanTag()

#### UseBeanTag

    public UseBeanTag(java.lang.Class defaultClass)

### Method Detail

#### getBean

    public java.lang.Object getBean()

Specified by:
  `getBean` in interface `BeanSource`
Returns:
  the bean that has just been created

#### 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`

#### setBean

    protected void setBean(java.lang.Object bean)

Allow derived classes to programatically set the bean

#### convertToClass

    protected java.lang.Class convertToClass(java.lang.Object classObject)
                                      throws MissingAttributeException,
                                             java.lang.ClassNotFoundException

Attempts to convert the given object to a Class instance. If the classObject is already a Class it will be returned otherwise it will be converted to a String and loaded using the default class loading mechanism.

Throws:
  `MissingAttributeException`
  `java.lang.ClassNotFoundException`

#### loadClass

    protected java.lang.Class loadClass(java.lang.String className)
                                 throws java.lang.ClassNotFoundException

Loads the given class using the default class loading mechanism which is to try use the current Thread's context class loader first otherise use the class loader which loaded this class.

Throws:
  `java.lang.ClassNotFoundException`

#### newInstance

    protected java.lang.Object newInstance(java.lang.Class theClass,
                               java.util.Map attributes,
                               XMLOutput output)
                                    throws JellyTagException

Creates a new instance of the given class, which by default will invoke the default constructor. Derived tags could do something different here.

Throws:
  `JellyTagException`

#### setBeanProperties

    protected void setBeanProperties(java.lang.Object bean,
                         java.util.Map attributes)
                              throws JellyTagException

Sets the properties on the bean. Derived tags could implement some custom type conversion etc.

This method ignores all property names in the Set returned by `getIgnorePropertySet()`.

Throws:
  `JellyTagException`

#### validateBeanProperties

    protected void validateBeanProperties(java.lang.Object bean,
                              java.util.Map attributes)
                                   throws JellyTagException

If `isIgnoreUnknownProperties()` returns true, make sure that every non-ignored (`addIgnoreProperty(String)`) property matches a writable property on the target bean.

Parameters:
  `bean` - the bean to validate
  `attributes` - the list of properties to validate
Throws:
  `JellyTagException` - when a property is not writeable

#### processBean

    protected void processBean(java.lang.String var,
                   java.lang.Object bean)
                        throws JellyTagException

By default this will export the bean using the given variable if it is defined. This Strategy method allows derived tags to process the beans in different ways such as to register this bean with its parent tag etc.

Throws:
  `JellyTagException`

#### getDefaultClass

    protected java.lang.Class getDefaultClass()

Allows derived classes to provide a default bean implementation class

#### addIgnoreProperty

    protected void addIgnoreProperty(java.lang.String name)

Adds a name to the Set of property names that will be skipped when setting bean properties. In other words, names added here won't be set into the bean if they're present in the attribute Map.

Parameters:
  `name` -

#### getIgnorePropertySet

    protected java.util.Set getIgnorePropertySet()

Returns:
  the Set of property names that should be ignored when setting the properties of the bean.

#### isIgnoreUnknownProperties

    public boolean isIgnoreUnknownProperties()

Returns:
See Also:
  `#setIgnoreUnknownProperties(boolean)}`

#### setIgnoreUnknownProperties

    public void setIgnoreUnknownProperties(boolean ignoreUnknownProps)

If this tag finds an attribute in the XML that's not ignored by `ignoreProperties` and isn't a bean property, should it throw an exception?

Parameters:
  `ignoreUnknownProperties` - Sets `ignoreUnknownProperties`.