blob: 3650c732628dcfe19d9ad94ba2a269f254abb51f [file] [log] [blame]
$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.