Class BuilderConfigurationWrapperFactory


  • public class BuilderConfigurationWrapperFactory
    extends java.lang.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
    • 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​(java.lang.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:
        java.lang.IllegalArgumentException - if a required parameter is missing
        ConfigurationRuntimeException - if an error occurs when creating the result ImmutableConfiguration
      • createBuilderConfigurationWrapper

        public static <T extends ImmutableConfiguration> T createBuilderConfigurationWrapper​(java.lang.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:
        java.lang.IllegalArgumentException - if a required parameter is missing
        ConfigurationRuntimeException - if an error occurs when creating the result ImmutableConfiguration