Package org.apache.commons.configuration2.beanutils

# Class DefaultBeanFactory

java.lang.Object
org.apache.commons.configuration2.beanutils.DefaultBeanFactory

All Implemented Interfaces:
  `BeanFactory`

public class DefaultBeanFactory extends Object implements BeanFactory

The default implementation of the `BeanFactory` interface.

This class creates beans of arbitrary types using reflection. Each time the `createBean()` method is invoked, a new bean instance is created. A default bean class is not supported.

For data type conversions (which may be needed before invoking methods through reflection to ensure that the current parameters match their declared types) a `ConversionHandler` object is used. An instance of this class can be passed to the constructor. Alternatively, a default `ConversionHandler` instance is used.

An instance of this factory class will be set as the default bean factory for the `BeanHelper` class. This means that if not bean factory is specified in a `BeanDeclaration`, this default instance will be used.

Since:
  1.3

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final DefaultBeanFactory`
  `INSTANCE`
  Stores the default instance of this class.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DefaultBeanFactory()`
  Constructs a new instance of `DefaultBeanFactory` using a default `ConversionHandler`.
  `DefaultBeanFactory(ConversionHandler convHandler)`
  Constructs a new instance of `DefaultBeanFactory` using the specified `ConversionHandler` for data type conversions.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `createBean(BeanCreationContext bcc)`
  Creates a new bean instance.
  `protected Object`
  `createBeanInstance(BeanCreationContext bcc)`
  Creates the bean instance.
  `protected static <T> Constructor<T>`
  `findMatchingConstructor(Class<T> beanClass, BeanDeclaration data)`
  Evaluates constructor arguments in the specified `BeanDeclaration` and tries to find a unique matching constructor.
  `ConversionHandler`
  `getConversionHandler()`
  Gets the `ConversionHandler` used by this object.
  `Class<?>`
  `getDefaultBeanClass()`
  Gets the default bean class used by this factory.
  `protected void`
  `initBeanInstance(Object bean, BeanCreationContext bcc)`
  Initializes the newly created bean instance.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### INSTANCE

    public static final DefaultBeanFactory INSTANCE
    Stores the default instance of this class.

- ## Constructor Details

  - ### DefaultBeanFactory

    public DefaultBeanFactory()
    Constructs a new instance of `DefaultBeanFactory` using a default `ConversionHandler`.

  - ### DefaultBeanFactory

    public DefaultBeanFactory(ConversionHandler convHandler)
    Constructs a new instance of `DefaultBeanFactory` using the specified `ConversionHandler` for data type conversions.
    Parameters:
      `convHandler` - the `ConversionHandler`; can be null, then a default handler is used
    Since:
      2.0

- ## Method Details

  - ### getConversionHandler

    public ConversionHandler getConversionHandler()
    Gets the `ConversionHandler` used by this object.
    Returns:
      the `ConversionHandler`
    Since:
      2.0

  - ### createBean

    public Object createBean(BeanCreationContext bcc) throws Exception
    Creates a new bean instance. This implementation delegates to the protected methods `createBeanInstance()` and `initBeanInstance()` for creating and initializing the bean. This makes it easier for derived classes that need to change specific functionality of the base class.
    Specified by:
      `createBean` in interface `BeanFactory`
    Parameters:
      `bcc` - the context object defining the bean to be created
    Returns:
      the new bean instance
    Throws:
      `Exception` - if an error occurs

  - ### getDefaultBeanClass

    public Class<?> getDefaultBeanClass()
    Gets the default bean class used by this factory. This is always null for this implementation.
    Specified by:
      `getDefaultBeanClass` in interface `BeanFactory`
    Returns:
      the default bean class

  - ### createBeanInstance

    protected Object createBeanInstance(BeanCreationContext bcc) throws Exception
    Creates the bean instance. This method is called by `createBean()`. It uses reflection to create a new instance of the specified class.
    Parameters:
      `bcc` - the context object defining the bean to be created
    Returns:
      the new bean instance
    Throws:
      `Exception` - if an error occurs

  - ### initBeanInstance

    protected void initBeanInstance(Object bean, BeanCreationContext bcc) throws Exception
    Initializes the newly created bean instance. This method is called by `createBean()`. It calls the `initBean()` method of the context object for performing the initialization.
    Parameters:
      `bean` - the newly created bean instance
      `bcc` - the context object defining the bean to be created
    Throws:
      `Exception` - if an error occurs

  - ### findMatchingConstructor

    protected static <T> Constructor<T> findMatchingConstructor(Class<T> beanClass, BeanDeclaration data)
    Evaluates constructor arguments in the specified `BeanDeclaration` and tries to find a unique matching constructor. If this is not possible, an exception is thrown. Note: This method is intended to be used by concrete `BeanFactory` implementations and not by client code.
    Type Parameters:
      `T` - the type of the bean to be created
    Parameters:
      `beanClass` - the class of the bean to be created
      `data` - the current `BeanDeclaration`
    Returns:
      the single matching constructor
    Throws:
      `ConfigurationRuntimeException` - if no single matching constructor can be found
      `NullPointerException` - if the bean class or bean declaration are null