A fully-functional, reflection-based implementation of the {@code ConfigurationBuilderProvider} interface which can deal with thedefault tags defining configuration sources.
An instance of this class is initialized with the names of the {@code ConfigurationBuilder} class used by this provider and the concrete{@code Configuration} class. The {@code ConfigurationBuilder} class must bederived from {@link BasicConfigurationBuilder}. When asked for the builder object, an instance of the builder class is created and initialized from the bean declaration associated with the current configuration source.
{@code ConfigurationBuilder} objects are configured using parameter objects.When declaring configuration sources in XML it should not be necessary to define the single parameter objects. Rather, simple and complex properties are set in the typical way of a bean declaration (i.e. as attributes of the current XML element or as child elements). This class creates all supported parameter objects (whose names also must be provided at construction time) and takes care that their properties are initialized according to the current bean declaration.
The use of reflection to create builder instances allows a generic implementation supporting many concrete builder classes. Another reason for this approach is that builder classes are only loaded if actually needed. Some specialized {@code Configuration} implementations require specificexternal dependencies which should not be mandatory for the use of {@code CombinedConfigurationBuilder}. Because such classes are lazily loaded, an application only has to include the dependencies it actually uses.
@version $Id: BaseConfigurationBuilderProvider.java 1624601 2014-09-12 18:04:36Z oheger $
@since 2.0