| $Id$ |
| |
| Commons Configuration Package |
| Version 1.4 |
| Release Notes |
| |
| |
| INTRODUCTION |
| ============ |
| |
| This document contains the release notes for this version of the Commons |
| Configuration component, and highlights changes since the previous version. |
| Commons Configuration provides a generic configuration interface which enables |
| an application to read configuration data from a variety of sources. |
| |
| The focus of release 1.4 lies in bug-fixing, but there are also some new |
| features. Some highlights are |
| |
| - The support for variable interpolation has been improved. |
| - A new configuration class for windows ini files was added. |
| - In addition to configuration event listeners now so-called configuration |
| error listeners are supported, which can be used to track internal errors. |
| |
| A complete list of changes can be found below. |
| |
| BUG FIXES IN 1.4 |
| ================ |
| * [CONFIGURATION-227] |
| The compatibility of ConfigurationDynaBean with other configuration types |
| than those that inherit from BaseConfiguration was improved. |
| |
| * [CONFIGURATION-228] |
| Some of the methods of file-based hierarchical configurations (e.g. subset() |
| or configurationAt()) did not take an eventually set reloading strategy into |
| account. This is now fixed by overriding the internal fetchNodeList() method |
| in AbstractHierarchicalFileConfiguration and letting it always check for a |
| reload. |
| |
| * [CONFIGURATION-229] |
| For file-based configurations loaded by ConfigurationFactory the load() |
| method was called before all of the properties specified by attributes of |
| the XML element have been initialized. Now load() is called after property |
| initialization. |
| |
| * [CONFIGURATION-230] |
| XPathExpressionEngine used to create wrong keys for attribute nodes. This |
| caused some operations on XMLConfiguration to fail when such an expression |
| engine was set (e.g. reloading). Now correct keys for attributes are |
| constructed. |
| |
| * [CONFIGURATION-233] |
| The getList() method of CompositeConfiguration does now fully support |
| variable interpolation. So it is possible to refer to a variable in one |
| (sub) configuration that is defined in another configuration. |
| |
| * [CONFIGURATION-235] |
| Interpolation of non string values did not work when SubsetConfiguration |
| was involved. This has now been fixed. |
| |
| * [CONFIGURATION-240] |
| File-based configurations with a reloading strategy did not work well |
| together with CombinedConfiguration because the reloading strategy is only |
| checked when its associated configuration is accessed (which does not happen |
| when only the combined configuration is queried). As a workaround |
| CombinedConfiguration now provides the boolean forceReloadCheck property. |
| If this is set to true, all contained configurations will be triggered when |
| a property is queried. This will cause a reload if necessary. |
| |
| * [CONFIGURATION-241] |
| CompositeConfiguration.clearProperty() now generates the correct update |
| events. |
| |
| * [CONFIGURATION-244] |
| The number of dependencies needed for DefaultConfigurationBuilder was reduced |
| by letting some of the default configuration providers resolve their classes |
| per reflection. |
| |
| * [CONFIGURATION-251] |
| The dependency to xml-apis was changed to the version 1.0.b2. The so far |
| used version 2.0.2 is reported to be bogus. |
| |
| * [CONFIGURATION-252] |
| ConfigurationUtils.getFile() now always checks first whether the passed in |
| file name is absolute. If it is, this file will be returned. This prevents |
| that on Unix under certain circumstances absolute file names are interpreted |
| as relative ones. |
| |
| * [CONFIGURATION-254] |
| After cloning a XMLConfiguration there was still a connection to the original |
| configuration. So when the clone was modified and then saved the content of |
| the original configuration was written. This has now been fixed. |
| |
| * [CONFIGURATION-255] |
| DatabaseConfiguration now handles list delimiters in property values |
| correctly. |
| |
| * [CONFIGURATION-256] |
| MapConfiguration and the web-based configurations now treat strings that |
| contain an escaped list delimiter correctly: The escape character will be |
| removed, so that for instance "foo\,bar" becomes "foo,bar". |
| |
| IMPROVEMENTS IN 1.4 |
| =================== |
| * [CONFIGURATION-155] |
| SubsetConfiguration and CompositeConfiguration were updated to fully support |
| an instance specific list delimiter. Concerning splitting of string |
| properties that contain a list delimiter character, these classes now |
| behave like a "normal" configuration. |
| |
| * [CONFIGURATION-192] |
| Variable interpolation features have been improved. A variable can now have |
| the form ${prefix:variableName} where the prefix defines the type of the |
| variable. The standard types sys for system properties and const for |
| constants are supported. Variables without a prefix are treated as references |
| to other configuration properties (which is compatible to earlier versions). |
| |
| * [CONFIGURATION-197] |
| A new configuration class for windows ini files was added. |
| |
| * [CONFIGURATION-236] |
| HierarchicalConfiguration and some of its sub classes now define a copy |
| constructor. |
| |
| * [CONFIGURATUON-237] |
| With ManagedReloadingStrategy a new reloading strategy for file-based |
| configurations was added that can be triggered through JMX. |
| |
| * [CONFIGURATION-243] |
| Configuration declarations in the configuration definition file for |
| DefaultConfigurationBuilder that are marked as optional now support a new |
| attribute config-forceCreate. If this attribute is set to true and the |
| initialization of the configuration fails, DefaultConfigurationBuilder |
| tries to add an empty configuration of the correct type to the resulting |
| combined configuration. Before this change optional configurations that |
| caused errors were never added to the combined configuration. |
| |
| * [CONFIGURATION-245] |
| In addition to configuration event listeners now so-called configuration |
| error listeners are supported. These listeners are notified about internal |
| errors that had been logged and swallowed by privious versions. The new |
| enableRuntimeExceptions() method of ConfigurationUtils registers a special |
| error listener at the passed in configuration that generates a runtime |
| exception when an error event is received. |
| |
| CHANGES THAT MIGHT IMPACT EXISTING CODE: |
| ======================================== |
| |
| * [CONFIGURATION-234] |
| DefaultConfigurationBuilder now internally uses the standard expression |
| engine for hierarchical configurations. So the dependency to Commons JXPath |
| is no more needed when this class is used. Note that this change has some |
| impact on exist ing code that manually sets properties before the combined |
| configuration is created; this code must now be adapted to the changed |
| syntax of property keys. |
| |
| * [CONFIGURATION-242] |
| The configuration returned by HierarchicalConfiguration.subset() performed |
| variable interpolation only in the keys that belong to the subset. Now the |
| parent configuration is searched, too, to resolve the value of the |
| referenced property. This is consistent with the way SubnodeConfiguration |
| works, but it slightly changes the behavior of interpolation for |
| configurations that are loaded by DefaultConfigurationBuilder and are |
| stored in the resulting CombinedConfiguration under a prefix. If a |
| subset is fetched for this prefix, in version 1.3 variables could be |
| resolved that belong to the same subset. This does not work any more in |
| version 1.4 |
| |
| OTHER CHANGES |
| ============= |
| |
| * AbstractConfiguration now allows to set an instance specific logger using |
| the setLogger() method. This gives clients more control over a |
| configuration's logging behavior. |
| |
| * Commons Configuration now depends on Commons Lang 2.2 minimum. Some features of |
| Lang's new text package are used. The dependency in the pom was set to 2.3 |
| because this is the recent available version of Lang. |
| |
| * The dependencies to Commons Collections and Commons Digester are updated to |
| use the recent available version. However older versions will still work. |
| |
| * A pom for maven 2 was added. |
| |
| * Class loading in BeanHelper is now done using ClassUtils of Commons Lang. |
| |