| $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. |