[
https://issues.apache.org/jira/browse/CONFIGURATION-519?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Oliver Heger resolved CONFIGURATION-519.
----------------------------------------
Resolution: Fixed
This feature has been implemented and also documented in the user's guide.
> Provide a builder API for creating configuration objects
> --------------------------------------------------------
>
> Key: CONFIGURATION-519
> URL: https://issues.apache.org/jira/browse/CONFIGURATION-519
> Project: Commons Configuration
> Issue Type: Improvement
> Affects Versions: 1.9
> Reporter: Oliver Heger
> Fix For: 2.0
>
>
> Currently, concrete {{Configuration}} implementations are directly
> instantiated using their constructors. How this works in detail depends on a
> concrete class: some constructors accept initializazion parameters, in other
> cases only a default constructor is available, and further properties have to
> be set using set methods.
> File-based configurations allow a client to pass in the file to be loaded in
> various forms (URL, File, file name, etc.). The data is then directly loaded
> by the constructor which is problematic for various reasons:
> * The constructors execute complex operations.
> * Loading of the configuration file can fail which will then throw an
> exception.
> * The constructors invoke non-final methods for loading data. (_Note_: This
> is not only a theoretical problem but has indeed caused trouble in practice,
> e.g. when trying to set a default encoding for {{PropertiesConfiguration}}.)
> * Some properties only take effect when set before loading a configuration
> file. So when these properties are needed, it is not possible to use a
> constructor which already performs the load operation. This API is confusing.
> As an alternative, a builder-like API can be provided: Client code creates a
> builder object and sets initialization properties for the {{Configuration}}
> object to be constructed using a convenient (fluent) API. Then a fully
> initialized {{Configuration}} object can be obtained from the builder. The
> required steps for creating a configuration would be always the same, no
> matter which concrete {{Configuration}} subclass is actually created.
> In addition, builders could play an important role when it comes to improving
> the current reloading mechanisms. For this a separate ticket will be opened.
--
This message was sent by Atlassian JIRA
(v6.2#6252)