Package org.apache.commons.configuration2.builder

## Class BuilderConfigurationWrapperFactory

- java.lang.Object
- - org.apache.commons.configuration2.builder.BuilderConfigurationWrapperFactory

-     public class BuilderConfigurationWrapperFactory
      extends Object

  A class that allows the creation of configuration objects wrapping a `ConfigurationBuilder`.

  Using this class special `ImmutableConfiguration` proxies can be created that delegate all method invocations to another `ImmutableConfiguration` obtained from a `ConfigurationBuilder`. For instance, if there is a configuration `c` wrapping the builder `builder`, the call `c.getString(myKey)` is transformed to `builder.getConfiguration().getString(myKey)`.

  There are multiple use cases for such a constellation. One example is that client code can continue working with `ImmutableConfiguration` objects while under the hood builders are used. Another example is that dynamic configurations can be realized in a transparent way: a client holds a single configuration (proxy) object, but the underlying builder may return a different data object on each call.

  Since:
    2.0

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `BuilderConfigurationWrapperFactory.EventSourceSupport` | An enumeration class with different options for supporting the `EventSource` interface in generated `ImmutableConfiguration` proxies.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `BuilderConfigurationWrapperFactory()` | Creates a new instance of `BuilderConfigurationWrapperFactory` setting the default `EventSourceSupport` NONE.
    `BuilderConfigurationWrapperFactory​(BuilderConfigurationWrapperFactory.EventSourceSupport evSrcSupport)` | Creates a new instance of `BuilderConfigurationWrapperFactory` and sets the property for supporting the `EventSource` interface.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `<T extends ImmutableConfiguration> T` | `createBuilderConfigurationWrapper​(Class<T> ifcClass, ConfigurationBuilder<? extends T> builder)` | Creates a wrapper `ImmutableConfiguration` on top of the specified `ConfigurationBuilder`.
    `static <T extends ImmutableConfiguration> T` | `createBuilderConfigurationWrapper​(Class<T> ifcClass, ConfigurationBuilder<? extends T> builder, BuilderConfigurationWrapperFactory.EventSourceSupport evSrcSupport)` | Creates a `ImmutableConfiguration` object which wraps the specified `ConfigurationBuilder`.
    `BuilderConfigurationWrapperFactory.EventSourceSupport` | `getEventSourceSupport()` | Gets the level of `EventSource` support used when generating `ImmutableConfiguration` objects.

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

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

- - ### Constructor Detail

    - #### BuilderConfigurationWrapperFactory

          public BuilderConfigurationWrapperFactory​(BuilderConfigurationWrapperFactory.EventSourceSupport evSrcSupport)

      Creates a new instance of `BuilderConfigurationWrapperFactory` and sets the property for supporting the `EventSource` interface.
      Parameters:
        `evSrcSupport` - the level of `EventSource` support

    - #### BuilderConfigurationWrapperFactory

          public BuilderConfigurationWrapperFactory()

      Creates a new instance of `BuilderConfigurationWrapperFactory` setting the default `EventSourceSupport` NONE.

  - ### Method Detail

    - #### createBuilderConfigurationWrapper

          public <T extends ImmutableConfiguration> T createBuilderConfigurationWrapper​(Class<T> ifcClass,
                                                                                        ConfigurationBuilder<? extends T> builder)

      Creates a wrapper `ImmutableConfiguration` on top of the specified `ConfigurationBuilder`. This implementation delegates to `createBuilderConfigurationWrapper(Class, ConfigurationBuilder, EventSourceSupport)` .
      Type Parameters:
        `T` - the type of the configuration objects returned by this method
      Parameters:
        `ifcClass` - the class of the configuration objects returned by this method; this must be an interface class and must not be null
        `builder` - the wrapped `ConfigurationBuilder` (must not be null)
      Returns:
        the wrapper configuration
      Throws:
        `IllegalArgumentException` - if a required parameter is missing
        `ConfigurationRuntimeException` - if an error occurs when creating the result `ImmutableConfiguration`

    - #### getEventSourceSupport

          public BuilderConfigurationWrapperFactory.EventSourceSupport getEventSourceSupport()

      Gets the level of `EventSource` support used when generating `ImmutableConfiguration` objects.
      Returns:
        the level of `EventSource` support

    - #### createBuilderConfigurationWrapper

          public static <T extends ImmutableConfiguration> T createBuilderConfigurationWrapper​(Class<T> ifcClass,
                                                                                               ConfigurationBuilder<? extends T> builder,
                                                                                               BuilderConfigurationWrapperFactory.EventSourceSupport evSrcSupport)

      Creates a `ImmutableConfiguration` object which wraps the specified `ConfigurationBuilder`. Each access of the configuration is delegated to a corresponding call on the `ImmutableConfiguration` object managed by the builder. This is a convenience method which allows creating wrapper configurations without having to instantiate this class.
      Type Parameters:
        `T` - the type of the configuration objects returned by this method
      Parameters:
        `ifcClass` - the class of the configuration objects returned by this method; this must be an interface class and must not be null
        `builder` - the wrapped `ConfigurationBuilder` (must not be null)
        `evSrcSupport` - the level of `EventSource` support
      Returns:
        the wrapper configuration
      Throws:
        `IllegalArgumentException` - if a required parameter is missing
        `ConfigurationRuntimeException` - if an error occurs when creating the result `ImmutableConfiguration`