The commons-configuration team is pleased to announce the Commons 
Configuration 1.4 release! 

http://commons.apache.org/configuration/

Tools to assist in the reading of configuration/preferences files in various 
formats 

Changes in this version include:

  New Features:

o With ManagedReloadingStrategy a new reloading strategy for file-based 
  configurations was added that can be triggered through JMX. Issue: 
  CONFIGURATION-237. Thanks to Nicolas de Loof. 
o A pom for maven 2 was added. 
o 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. Issue: CONFIGURATION-245. 
o AbstractConfiguration now allows to set an instance specific logger using 
  the setLogger() method. This gives clients more control over a 
  configuration's logging behavior. 
o 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. Issue: CONFIGURATION-155. 
o 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). Issue: CONFIGURATION-192. 
o 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. Issue: 
  CONFIGURATION-243. 
o HierarchicalConfiguration and some of its sub classes now define a copy 
  constructor. Issue: CONFIGURATION-236. 
o A new configuration class for windows ini files was added. Issue: 
  CONFIGURATION-197. Thanks to Trevor Charles Miller. 

  Changes:

o 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". Issue: 
  CONFIGURATION-256. 
o DatabaseConfiguration now handles list delimiters in property values 
  correctly. Issue: CONFIGURATION-255. 
o 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. 
  Issue: CONFIGURATION-254. Thanks to Carsten Kaiser. 
o Class loading in BeanHelper is now done using ClassUtils of Commons Lang. 
o The dependencies to Commons Lang, Commons Collections, and Commons Digester 
  are updated to use the recent available version. However older versions 
  will still work. 
o 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. Issue: CONFIGURATION-252. 
o 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. Issue: CONFIGURATION-251. 
o Commons Configuration now depends on Commons Lang 2.2. Some features of 
  Lang's new text package are used. 
o The number of dependencies needed for DefaultConfigurationBuilder was 
  reduced by letting some of the default configuration providers resolve 
  their classes per reflection. Issue: CONFIGURATION-244. 
o 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. Issue: 
  CONFIGURATION-240. 
o CompositeConfiguration.clearProperty() now generates the correct update 
  events. Issue: CONFIGURATION-241. 
o 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. Issue: CONFIGURATION-242. 
o 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 existing code that manually sets properties before the combined 
  configuration is created; this code must now be adapted to the changed 
  syntax of property keys. Issue: CONFIGURATION-234. 
o 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. Issue: CONFIGURATION-229. 
o Interpolation of non string values did not work when SubsetConfiguration 
  was involved. This has now been fixed. Issue: CONFIGURATION-235. 
o The compatibility of ConfigurationDynaBean with other configuration types 
  than those that inherit from BaseConfiguration was improved. Issue: 
  CONFIGURATION-227. 
o 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. Issue: 
  CONFIGURATION-233. Thanks to Rainer Jung. 
o 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. Issue: CONFIGURATION-230. 
o 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. Issue: CONFIGURATION-228.  

Have fun!
-The commons-configuration team
      