blob: cc4c85c3921550cdc905a2f7584260fbf7b014ad [file] [log] [blame]
$Id$
Commons Configuration Package
Version 1.6
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.
This release is in line with the previous 1.5 release: there are no big changes
or spectacular new features, but a lot of smaller bug fixes and enhancements.
By removing some bugs and inconsistencies, which are rather annoying than
critical, the library has been made more stable. There are also a few new
features, e.g. support for the xml:space attribute in XMLConfiguration, or
multiple enhancements of DefaultConfigurationBuilder.
Commons Configuration 1.6 is fully binary compatible to the previous version.
Apart from the bug fixes existing code should not be impacted when switching
from 1.5 to 1.6. Commons Configuration 1.6 is also still compatible with Java
1.3 (with one exception outline below).
Following is a complete list of all changes in the new release:
BREAKING CHANGES in 1.6
=======================
* Parsing of date properties in PropertyListConfiguration does not work on
Java 1.3. Later Java versions are not affected.
BUG FIXES IN 1.6
================
* [CONFIGURATION-348]
AbstractHierarchicalFileConfiguration.getKeys() now also checks whether a
reload is required.
* [CONFIGURATION-347]
AbstractFileConfiguration.getKeys() now returns an iterator that points to a
snapshot of the keys of the configuration. This prevents
ConcurrentModificationExceptions during iteration when a reload is performed.
* [CONFIGURATION-346]
ConfigurationUtils.convertToHierarchical() now creates multiple configuration
nodes for properties with multiple values. This improves compatibility with
queries.
* [CONFIGURATION-345]
PropertiesConfiguration now per default uses the encoding "ISO-8859-1" for
loading properties files.
* [CONFIGURATION-344]
CombinedConfiguration could cause a deadlock when it was accessed while
concurrently a reload of one of its child configuration happened. This was
fixed by reducing synchronization where it is not strictly necessary.
* [CONFIGURATION-341]
The "force reload check" mechanism of CombinedConfiguration now also works
with sub configurations created by configurationAt().
* [CONFIGURATION-339]
When performing interpolation the methods getList() and getStringArray() of
CompositeConfiguration did not take the order of child configurations into
account. This could lead to wrong interpolated values when the key was
contained in multiple child configuration. Interpolation is now always done
in the correct order.
* [CONFIGURATION-334]
Made handling of parent nodes more consistent when setRoot() or setRootNode()
of HierarchicalConfiguration are involved.
* [CONFIGURATION-334]
Properties written through a DataConfiguration to a wrapped
PropertiesConfiguration got lost when the PropertiesConfiguration was saved.
This has been fixed.
* [CONFIGURATION-328]
A bug in XMLConfiguration.addNodes() made it impossible to add attribute
nodes using this method. This has been fixed.
* [CONFIGURATION-322]
ConfigurationDynaBean now works properly with indexed properties stored
internally in the underlying configuration as arrays.
* [CONFIGURATION-321]
The iterator returned by HierarchicalConfiguration.getKeys(String prefix) now
also contains the prefix if this key is contained in the configuration.
* [CONFIGURATION-320]
XMLPropertyListConfiguration is no longer limited to 32 bits integers.
* [CONFIGURATION-318]
When an XMLConfiguration is created using the copy constructor, the name of
the root element is now preserved.
* [CONFIGURATION-316]
Changing the text of the root element of an XMLConfiguration had no effect
when the configuration was saved. This has been fixed.
* [CONFIGURATION-315]
CombinedConfiguration used to send two EVENT_COMBINED_INVALIDATE events for
each modified child configuration. Now this event is sent only once after the
affected child configuration was updated.
* [CONFIGURATION-309]
Instantiating an XMLPropertyListConfiguration no longer fails if the DTD is
missing from the classpath.
* [CONFIGURATION-306]
INIConfiguration now preserves whitespace in quoted values.
* [CONFIGURATION-302]
If a change has been detected by FileChangedReloadingStrategy, the
reloadingRequired() method will now return true until reloadingPerformed()
has been called.
* [CONFIGURATION-301]
Fixed a NullPointerException that could be thrown under certain circumstances
when saving an XMLConfiguration that was created using the constructor that
takes a HierarchicalConfiguration.
* [CONFIGURATION-300]
It's now possible to read a configuration file containing a '#' in its name
(requires Java 1.4 or above).
* [CONFIGURATION-260]
Fixed the date format for XMLPropertyListConfiguration.
IMPROVEMENTS IN 1.6
===================
* [CONFIGURATION-353]
Allow system properties to be set from a configuration file.
* [CONFIGURATION-351]
Allow variable resolvers to be defined and configured in
DefaultConfigurationBuilder.
* [CONFIGURATION-350]
Added MultiFileHierarchicalConfiguration, DynamicCombinedConfiguration and
PatternSubtreeConfigurationWrapper.
* [CONFIGURATION-349]
The visibility of DefaultConfigurationBuilder.XMLConfigurationProvider was
changed from package local to public. This makes it easier to implement
providers that create configuration classes derived from XMLConfiguration.
* [CONFIGURATION-338]
PropertiesConfiguration now also performs interpolation when searching for
include files. This means that the name of a file to include can be
determined by another property.
* [CONFIGURATION-337]
DefaultConfigurationBuilder now supports defining new configuration providers
in the configuration definition file.
* [CONFIGURATION-336]
When converting a flat configuration to a hierarchical one it is now possible
to specify the expression engine to be used for this purpose. This may be
necessary if the flat configuration contains keys with special characters
interpreted by the expression engine. CombinedConfiguration defines the new
setConversionExpressionEngine() method. The expression engine passed to this
method will be used when converting flat child configurations to hierarchical
ones.
* [CONFIGURATION-335]
XMLConfiguration now allows disabling the attribute splitting mechanism
introduced in the 1.5 release (as part of the fix for CONFIGURATION-268).
This may be necessary for correctly processing attributes containing both the
list delimiter and the attribute delimiter character. The new property
"disableAttributeSplitting" was added for this purpose.
* [CONFIGURATION-331]
XMLBeanDeclaration now defines a factory method createBeanDeclaration() for
creating the declarations for complex nested properties. This method can be
overridden by derived classes for injecting custom BeanDeclaration
implementations.
* With HierarchicalINIConfiguration a complete new Configuration implementation
for parsing Windows INI files is available. This new class is a full
replacement of INIConfiguration and addresses some of its shortcomings.
Being derived from HierarchicalConfiguration it offers the enhanced
functionality of hierarchical configurations.
* [CONFIGURATION-327]
INIConfiguration misinterpreted variables in the global section with a dot in
their name as section names. HierarchicalINIConfiguration fixes this problem.
* [CONFIGURATION-326]
INIConfiguration does not support obtaining a subset for the global section.
HierarchicalINIConfiguration provides the getSection() method that returns
the content of the global section if null is passed in as section name.
* [CONFIGURATION-325]
INIConfiguration does not return the global section in its getSections()
method. HierarchicalINIConfiguration fixes this problem.
* [CONFIGURATION-324]
HierarchicalINIConfiguration adds support for line continuation.
* [CONFIGURATION-307]
XMLConfiguration now supports the xml:space attribute. This attribute can be
used to preserve whitespace in the content of XML elements.
OTHER CHANGES
=============
* Some dependencies to other Commons components have been updated to the recent
versions. Affected are Commons Lang, Commons Collections, Commons Logging,
Commons BeanUtils, and Commons JXPath. The older versions should still work.
* INIConfiguration has been deprecated. Its functionality is now available
through the new HierarchicalINIConfiguration class.