You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2007/11/01 03:02:27 UTC

svn commit: r590876 - /commons/proper/configuration/trunk/RELEASE-NOTES.txt

Author: oheger
Date: Wed Oct 31 19:02:26 2007
New Revision: 590876

URL: http://svn.apache.org/viewvc?rev=590876&view=rev
Log:
Update of the release notes

Modified:
    commons/proper/configuration/trunk/RELEASE-NOTES.txt

Modified: commons/proper/configuration/trunk/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/RELEASE-NOTES.txt?rev=590876&r1=590875&r2=590876&view=diff
==============================================================================
--- commons/proper/configuration/trunk/RELEASE-NOTES.txt (original)
+++ commons/proper/configuration/trunk/RELEASE-NOTES.txt Wed Oct 31 19:02:26 2007
@@ -1,7 +1,7 @@
 $Id$
 
                            Commons Configuration Package
-                               Version 1.4
+                               Version 1.5
                                Release Notes
 
 
@@ -13,173 +13,196 @@
 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.
+The 1.5 release contains numerous bug fixes. Most of the addressed bugs are
+not really critical. Some of them have been living in the code base for quite a
+while. In some cases (e.g. handling of list properties) the behavior of the
+involved methods has been made more consistent. There are also a few new
+features, e.g. a new Configuration class for accessing environment variables
+or support for registering DTD files when parsing XML files.
+
+Commons Configuration 1.5 is fully binary compatible to the previous version.
+Apart from the bug fixes existing code should not be impacted when switching
+from 1.4 to 1.5.
 
 A complete list of changes can be found below.
 
-BUG FIXES IN 1.4
+BUG FIXES IN 1.5
 ================
-* [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".
+* [CONFIGURATION-299]
+  Resolving of variables with the prefix const (constant fields) caused a
+  ClassCastException under certain circumstances if non-String fields were
+  involved. This has been fixed.
+
+* [CONFIGURATION-296]
+  A bug in XMLConfiguration caused that attributes of the root element could
+  not be changed. This has been fixed.
+
+* [CONFIGURATION-295]
+  The subset() method of HierarchicalConfiguration now takes the value of the
+  subset's root node into account if it is not ambigous.
+
+* [CONFIGURATION-294]
+  Nodes added to a XMLConfiguration using the addNodes() method could lose
+  their value when the configuration was saved. This is now fixed.
+
+* [CONFIGURATION-291]
+  The addNodes() method of hierarchical file-based configurations now correctly
+  triggers an auto save.
+
+* [CONFIGURATION-287]
+  HierarchicalConfiguration.addNodes() now resets the reference property of all
+  nodes to be added. This fixes a problem with XMLConfiguration, which now
+  detects the added nodes as new and treats them correctly when the
+  configuration is saved.
+
+* [CONFIGURATION-283]
+  ConfigurationUtils.convertToHierarchical() now correctly deals with property
+  values containing escaped list delimiters. This also affects
+  CombinedConfiguration when sub configurations with such property values are
+  contained.
+
+* [CONFIGURATION-282]
+  The default expression engine used by HierarchicalConfiguration instances is
+  now lazily initialized. This avoids NullPointerExceptions in certain server
+  environments after a redeploy.
+
+* [CONFIGURATION-281]
+  Cycles in the JNDI tree no longer cause a stack overflow in
+  JNDIConfiguration.
+
+* [CONFIGURATION-280]
+  Using file-based configurations in auto-save mode together with a reloading
+  strategy could cause data loss. This has been fixed.
+
+* [CONFIGURATION-279]
+  A PropertiesConfiguration that was created from a non existing file lost its
+  content when it was saved. This problem has been solved.
+
+* [CONFIGURATION-275]
+  AbstractConfiguration.addProperty() now correctly deals with list and array
+  properties if delimiter parsing is disabled.
+
+* [CONFIGURATION-274]
+  PropertiesConfiguration now supports escaping the escape character for list
+  delimiters.
+
+* [CONFIGURATION-272]
+  New copy() and append() methods have been added to AbstractConfiguration.
+  They replace the methods with the same names in ConfigurationUtils, which do
+  not handle all features of AbstractConfiguration properly (e.g. list
+  delimiters in property values are incorrectly treated). To avoid such
+  problems, the new methods should be used.
+
+* [CONFIGURATION-270]
+  List properties and properties containing interpolated variables are now
+  properly saved by INIConfiguration.
+
+* [CONFIGURATION-269]
+  PropertiesConfiguration no longer escapes the list delimiter on saving if the
+  list delimiter has been disabled.
+
+* [CONFIGURATION-268]
+  When delimiter parsing was disabled for XMLConfiguration, saving and loading
+  the configuration accidently added escape characters to properties containing
+  the list delimiter character. This has been fixed. It is now also possible to
+  escape the escape character itself.
+
+* [CONFIGURATION-267]
+  INIConfiguration flushes the output at the end of a save operation.
+
+* [CONFIGURATION-263]
+  XMLConfiguration used to drop attributes when an element's value was a list.
+  This has been fixed.
+
+* [CONFIGURATION-253]
+  The return value of FileConfiguration.getFile() is now always consistent with
+  the result of getURL().
+
+* [CONFIGURATION-180]
+  Fixed a potential issue in DatabaseConfiguration where an error on closing a
+  statement would prevent the connection from being closed.
+
+* byte[] properties are properly saved as data fields in the plist
+  configurations (PropertyListConfiguration and XMLPropertyListConfiguration).
 
-IMPROVEMENTS IN 1.4
+IMPROVEMENTS IN 1.5
 ===================
-* [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
+* [CONFIGURATION-290]
+  A new method registerEntityId() was added to XMLConfiguration, which allows
+  to register URLs for entities. A new default implementation of the
+  EntityResolver interface handles these entities automatically.
+
+* [CONFIGURATION-284]
+  There is a new configuration implementation EnvironmentConfiguration,
+  which provides access to (OS) environment variables. On Java >= 1.5 this
+  class can be directly used; on earlier versions a dependency to ant is
+  required.
+
+* [CONFIGURATION-285]
+  DefaultConfigurationBuilder will now notify registered error listeners about
+  optional configuration sources that could not be created. Before exceptions
+  thrown by optional configurations were swallowed.
+
+* [CONFIGURATION-277]
+  The base implementation of clear() in AbstractConfiguration now checks for a
+  potential UnsupportedOperationException when iterating over the existing
+  properties.
+
+* [CONFIGURATION-273]
+  A new method interpolatedConfiguration() was added to AbstractConfiguration.
+  This method returns a configuration with the same type and content as the
+  original configuration, however all variables have been resolved.
+
+* [CONFIGURATION-265]
+  For hierarchical file-based configurations the auto-save mechanism is now
+  also triggered if a subnode configuration is changed. In such a case the new
+  event type EVENT_SUBNODE_CHANGED will be sent to registered listeners.
+
+* [CONFIGURATION-264]
+  A SubnodeConfiguration per default does not see certain changes of its parent
+  configuration (e.g. reloads). With a new boolean parameter of
+  HierarchicalConfiguration's configurationAt() method a mode can be enabled,
+  in which the subnode configuration checks for such changes and reconstructs
+  itself if necessary.
+
+* [CONFIGURATION-261]
+  Date objects are now supported in ASCII plist files.
+
+* [CONFIGURATION-249]
+  File configurations can now be saved to FTP URLs, or any other URL protocol
+  supporting data output.
+
+* [CONFIGURATION-215]
+  A new getSource() method was added to CompositeConfiguration and
+  CombinedConfiguration, which returns the child configuration, in which a
+  given property is defined.
+
+* DataConfiguration now supports java.net.InetAddress,
+  javax.mail.internet.InternetAddress, and Java 5 enumeration types. Properties
+  are converted to these types using the new generic getters.
+
+* Generic get methods have been added to DataConfiguration (get(), getArray()
+  and getList())
 
 OTHER CHANGES
 =============
+* [CONFIGURATION-266]
+  ConfigurationInterpolator now also invokes the default lookup object for
+  variables with a prefix that could not be resolved by their associated lookup
+  object.
+
+* INIConfiguration uses the platform's specific line separator instead of the
+  Windows line separator.
+
+* Fixed INIConfiguration to handle the quoted values and the lines containing a
+  value and a comment.
+
+* The object getters in DataConfiguration with no default value (i.e
+  getURL(key)) now throw a NoSuchElementException if the flag
+  throwExceptionOnMissing is set.
 
-* 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.
+* XMLPropertyListConfiguration no longer requires commons-digester and
+  commons-beanutils to work.
 
+* The dependencies to commons-codec and commons-jxpath have been marked as
+  optional. They are not required by the core classes.