blob: 4af3118293d8632975638d27d8f9a56daef2d320 [file] [log] [blame]
<?xml version="1.0"?>
<!--
Copyright 2004 The Apache Software Foundation
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<document>
<properties>
<title>Changes</title>
<author email="epugh@upstate.com">Eric Pugh</author>
</properties>
<body>
<release version="1.1-rc2" date="in CVS">
<action dev="oheger" type="update" issue="33814">
Updated documentation for FileConfiguration's load() methods. Fixed a
problem in XMLConfiguration with the output of the save() method when
multiple files were loaded.
</action>
<action dev="ebourg" type="update">
Fixed a bug in FileChangedReloadingStrategy preventing the detection
of a file change in some cases.
</action>
<action dev="ebourg" type="update">
Changed getXXXArray() and getXXXList() in DataConfiguration to return
an empty array/list for empty values.
</action>
<action dev="ebourg" type="update" issue="33524">
Fixed getLongArray(), getFloatArray() and getDoubleArray() in DataConfiguration,
the values were cast into integers.
</action>
</release>
<release version="1.1-rc1" date="2004-02-13">
<action dev="oheger" type="add" issue="33475">
ConfigurationFactory now always configures digester to use the context
classloader. This avoids problems in application server environments,
which use their own version of digester. Thanks to Mike Colbert for the
patch!
</action>
<action dev="ebourg" type="add" issue="32318">
Added a new configuration, XMLPropertiesConfiguration, supporting the
new XML format for java.util.Properties introduced in Java 1.5.
A 1.5 runtime is not required to use this class.
</action>
<action dev="ebourg" type="add" issue="26092">
Added a comment header to PropertiesConfiguration. The header is not
parsed when the file is loaded yet.
</action>
<action dev="ebourg" type="add">
Added the setEncoding(String) and the getEncoding() methods to the
FileConfiguration interface to control the encoding of the
configuration file.
</action>
<action dev="oheger" type="add" issue="31136">
Access to the top level element of the XML document is now provided. For
newly created configurations this element can be changed before the
document is written.
</action>
<action dev="oheger" type="update" issue="31429">
Merged the two XML related configuration classes into one new class
XMLConfiguration. This new class should provide the best of its
ancestors.
</action>
<action dev="ebourg" type="update">
Replaced the PropertyTokenizer inner class in AbstractConfiguration
with the split method in PropertyConverter. Also moved the method
building an iterator on the elements of a composite value in
PropertyConverter as toIterator().
</action>
<action dev="oheger" type="fix" issue="30858">
Some cleanup of the handling of the base path in file based configurations.
The base path is now always taken into account.
</action>
<action dev="ebourg" type="fix">
Calling getProperties on a JNDIConfiguration no longer throws an
UnsupportedOperationException.
</action>
<action dev="ebourg" type="remove">
Removed the getPropertyDirect method from AbstractConfiguration,
concrete configurations now implement directly the getProperty method
from the Configuration interface.
</action>
<action dev="oheger" type="add" issue="31130">
Added implementation of a save() method for HierarchicalXMLConfiguration.
</action>
<action dev="ebourg" type="update">
Constructing a file based configuration with a File no longer throws
an exception when the file doesn't exist.
</action>
<action dev="ebourg" type="add">
Saving a configuration now creates the path to the file if it doesn't exist.
</action>
<action dev="ebourg" type="update" issue="32020">
AbstractFileConfiguration.save(File) no longer fails silently when
an error occurs, a ConfigurationException is thrown instead.
</action>
<action dev="ebourg" type="fix">
ConfigurationUtils.locate() now checks if the URL based resources exist.
This fixes a bug preventing configuration files from being found if
the configuration descriptor is in a JAR file (reported by Grant Ingersoll).
</action>
<action dev="oheger" type="fix" issue="32236">
Fixed NPE that were caused in the constructors of file based
configurations if an invalid file name was specified.
</action>
<action dev="oheger" type="add" issue="31797">
Added support for optional configuration sources in definition files for
ConfigurationFactory. A new optional attribute allows to specify whether a
configuration source is mandatory or optional.
</action>
<action dev="ebourg" type="fix">
JNDIConfiguration.getKeys() now returns an empty iterator instead of
throwing a ConfigurationRuntimeException when a NamingException occurs.
The NamingExceptions are now logged.
</action>
<action dev="ebourg" type="fix">
DatabaseConfiguration.isEmpty() now returns true if an SQLException occurs.
</action>
<action dev="ebourg" type="add">
Added two methods copy(Configuration, Configuration) and
append(Configuration, Configuration) in ConfigurationUtils to copy
properties between configurations.
</action>
<action dev="ebourg" type="update">
Moved the constructors implementations from PropertiesConfiguration and
XMLConfiguration to AbstractFileConfiguration.
</action>
<action dev="epugh" type="remove">
Remove deprecated getVector() implementations.
</action>
<action dev="ebourg" type="add" issue="25661">
File based configurations can now be automatically reloaded when the
underlying file is modified.
</action>
<action dev="ebourg" type="add" issue="26102">
Added a clear() method to the Configuration interface to remove
all properties.
</action>
<action dev="ebourg" type="add" issue="26066">
Added a SystemConfiguration wrapping the system properties.
ConfigurationFactory recognizes the corresponding &lt;system/&gt;
element.
</action>
<action dev="ebourg" type="add">
Added a MapConfiguration to turn any Map into a Configuration. The
getConfiguration() methods in ConfigurationConverter now use
MapConfiguration, as a result the Configuration returned is always
synchronized with the underlying Properties or ExtendedProperties,
changes made to the Configuration are available in the Properties,
and reciprocally.
</action>
<action dev="ebourg" type="add" issue="31532">
The "autoSave" feature of XMLConfiguration has been generalized
to all file based configurations.
</action>
<action dev="ebourg" type="add" issue="28026">
Numeric properties can now be specified in hexadecimal format,
for example "number = 0xC5F0".
</action>
<action dev="oheger" type="fix" issue="31745">
Fixed HierarchicalConfiguration.getKeys(String), it returned an empty
iterator if the prefix string contained indices.
</action>
<action dev="ebourg" type="add">
Added a DataConfiguration decorator providing getters for all useful
types found in a configuration (URL, Locale, Date, Calendar, Color,
lists and arrays)
</action>
<action dev="ebourg" type="add">
Added 5 new configurations to be used in a web environment:
AppletConfiguration, ServletConfiguration, ServletContextConfiguration,
ServletRequestConfiguration, ServletFilterConfiguration.
</action>
</release>
<release version="1.0.1-dev" date="in CVS">
</release>
<release version="1.0" date="2004-10-11">
<action dev="ebourg" type="fix" issue="29616">
The getStringArray() method in CompositeConfiguration now interpolates
the strings.
</action>
<action dev="ebourg" type="fix" issue="31540">
SubsetConfiguration now shares the "throwExceptionOnMissing" property
with its parent.
</action>
<action dev="ebourg" type="fix">
Removed "file:" at the beginning of the base path when calling
setFile() on a FileConfiguration. This prevented auto saving an
XMLConfiguration loaded from a File (issue reported by Mark Roth).
</action>
<action dev="ebourg" type="update">
All NamingEnumerations in JNDIConfiguraiton are now properly closed (Suggested
by Eric Jung).
</action>
<action dev="ebourg" type="fix" issue="30799">
Properties added to an XMLConfiguration are no longer duplicated in the
resulting XML file.
</action>
</release>
<release version="1.0-rc2" date="2004-09-24">
<action dev="ebourg" type="update">
Unified the mechanisms for loading and saving file based configurations.
PropertiesConfiguration, XMLConfiguration and HierarchicalXMLConfiguration
now implement the same FileConfiguration interface. BasePathLoader,
BasePathConfiguration, ClassPropertiesConfiguration and
BasePropertiesConfiguration have been removed.
</action>
<action dev="ebourg" type="fix" issue="31346">
Replaced the calls to Boolean.booleanValue(boolean) in
AbstractConfiguration and ConfigurationDynaBean to be Java 1.3
compatible.
</action>
<action dev="ebourg" type="fix" issue="31345">
Changing the prefix of a JNDIConfiguration will now reset the base context used.
</action>
<action dev="ebourg" type="add" due-to="Eric Jung">
The context used by JNDIConfiguration can be specified in its
constructor or through the setContext() method. The context can be
accessed with the getContext() method which is now public.
</action>
<action dev="henning" type="add">
Make the behaviour on missing properties for the get methods that
return objects configurable. A property <code>throwExceptionOnMissing</code>
can be set and then the getters throw an <code>NoSuchElementException</code>.
The old default behaviour of returning a <code>null</code> value has
been restored.
</action>
<action dev="epugh" type="add" issue="29714">
Allow configurations extending AbstractConfiguration to change the
delimiter used from "," to something else.
</action>
<action dev="epugh" type="fix">
PropertiesConfiguration.save() method has issues with preserving the filename
</action>
<action dev="epugh" type="fix" issue="30597" due-to="Mark Woodman">
Test cases for HierarchicalConfigurationXMLReader stores comments as text nodes
</action>
<action dev="epugh" type="fix" issue="30545" due-to="Ricardo Gladwell">
Clarify for ConfigurationDynaBean that the get method should throw an
illegalArgumentException if there is no property specified.
</action>
<action dev="ebourg" type="fix" issue="30839">
Fixed a ClassCastException when adding a non String property to an XMLConfiguration.
</action>
<action dev="ebourg" type="fix" issue="30655" due-to="Oliver Heger">
Fixed the handling of attribute properties by HierarchicalConfigurationConverter.
</action>
<action dev="ebourg" type="fix" issue="30676">
Fixed a ClassCastException thrown on adding a non string property
in a DatabaseConfiguration.
</action>
<action dev="henning" type="add">
Bring back the getVector() methods in the Configuration interface.
These methods are needed for &quot;drop-on&quot; replacement of the
various pre-1.0 commons-configuration snapshots and are already
deprecated. These methods will be removed for 1.1.
</action>
</release>
<release version="1.0-rc1" date="2004-08-14">
<action dev="epugh" type="add" issue="30597" due-to="Oliver Heger">
HierarchicalConfigurationXMLReader stores comments as text nodes
</action>
<action dev="epugh" type="add" issue="30648" due-to="Ricardo Gladwell">
project.xml contains bad dependencies
</action>
<action dev="epugh" type="add" issue="30234" due-to="Brent Worden">
clearXmlProperty doesn't remove list properties completely
</action>
<action dev="epugh" type="add" issue="30545" due-to="Ricardo Gladwell">
new ConfigurationDynaBean
</action>
<action dev="epugh" type="add" issue="29611" due-to="Ricardo Gladwell">
new ConfigurationMap and ConfigurationSet
</action>
<action dev="epugh" type="fix" issue="30598" due-to="Ricardo Gladwell">
Problem adding property XMLConfiguration
</action>
<action dev="epugh" type="remove">
ConfigurationXMLDocument removed until post 1.0.
</action>
<action dev="epugh" type="fix" issue="29734">
DatabaseConfiguration doesn't support List properties.
</action>
<action dev="ebourg" type="fix">
Fixed several bugs related to XMLConfiguration:
<ul>
<li>30074 - Can't add a new property as an attribute in XMLConfiguration</li>
<li>30205 - XMLConfiguration doesn't support attribute names with a dot</li>
<li>30209 - XMLConfiguration doesn't ignore comments</li>
<li>30212 - XMLConfiguration.save() doesn't escape reserved characters</li>
</ul>
</action>
<action dev="ebourg" type="add">
Added save methods in XMLConfiguration similar to PropertiesConfiguration
to save the configuration to another file (bug 29721).
</action>
<action dev="ebourg" type="update">
Removed the DOM4J implementations in favor of the DOM ones.
DOMConfiguration has been renamed to XMLConfiguration, and
HierarchicalDOMConfiguration to HierarchicalXMLConfiguration. The
elements parsed by the ConfigurationFactory have been changed
accordingly.
</action>
<action dev="ebourg" type="add">
Added a save() method to PropertiesConfiguration and save(Writer out),
save(OutputStream out), save(OutputStream out, String encoding) to
BasePropertiesConfiguration.
</action>
<action dev="ebourg" type="fix">
List values are now properly stored as comma separated values in the
Properties object returned by ConfigurationConverter.getProperties()
(Bug 29607)
</action>
<action dev="ebourg" type="update">
Introduced a ConversionException thrown when the value of a property is
not compatible the type requested. It replaces the ClassCastException
and the NumberFormatException thrown previously.
</action>
<action dev="ebourg" type="fix">
Tokens like ${ref} in a PropertyConfiguration are now properly saved
(Bug 29366).
</action>
<action dev="ebourg" type="fix">
The getList() method of a CompositeConfiguration now returns the list
composed of the elements in the first matching configuration and the
additional elements found in the in memory configuration (Bug 28660).
</action>
<action dev="epugh" type="fix">
SubsetConfiguration returns a List on getList(). AbstractConfiguration
wouldn't properly deal with a List, only with a Container for getList()!
Thanks to jschaible for the unit test.
</action>
<action dev="jschaible" type="add">
Direct support of XML via DOM. New classes DOMConfiguration and HierarchicalDOMConfiguration.
</action>
<action dev="jschaible" type="update">
Update build to not include test configuration files in resulting jar.
</action>
<action dev="ebourg" type="update">
Refactored JNDIConfiguration to use AbstractConfiguration.
</action>
<action dev="ebourg" type="update">
Fixed bug 27427 by refactoring out the subset logic into a SubsetConfiguration.
</action>
<action dev="oheger" type="fix">
Reapply the ConfigurationXMLDocument that went missing during migration out of sandbox.
</action>
<action dev="epugh" type="update">
Apply ASL 2.0 license. Thanks to Jeff Painter for scripting the conversion!
</action>
<action dev="epugh" type="add">
Changed CompositeConfiguration to extend from AbstractConfiuration. This means that the behavior of
CompositeConfiguration is much similar to others like PropertiesConfiguration in handling of missing
keys, interpolation, etc.. Previously CompositeConfiguration had quite a few differences.
</action>
<action dev="epugh" type="update">
Removed "defaults" from BaseConfiguration. Defaults are now done via using a CompositeConfiguration, either
directly or via a ConfigurationFactory. if you want to save changes made to a Configuration, then you use
a CompositeConfiguration and get back the inMemoryConfiguration that has the delta of changes. Added a
bit of documentation on this.
</action>
<action dev="epugh" type="update">
Bugzilla 16504 Enhancement: Configuration Comparator
</action>
<action dev="epugh" type="update">
Bugzilla 26694 (BaseConfiguration: containsKey ignores default properties).
I have changed it so that now the defaults are paid attention to.
</action>
<action dev="ebourg" type="add">
The Configuration interface now supports BigDecimal and BigInteger numbers.
</action>
<action dev="epugh" type="add">
ConfigurationException is now thrown by public methods instead of Exception or
IOException or whatnot.
</action>
<action dev="ebourg" type="add">
For configuration based on properties files, allow characters like \n etc
to be escaped and unescaped.
</action>
<action dev="ebourg" type="add">
New DatabaseConfiguration that uses a database to store the properties.
It supports 2 table structures :
<ul>
<li>one table per configuration (2 colums key/value)</li>
<li>one table for multiple configurations (2 columns key/value + 1 column
for the name of the configuration)</li>
</ul>
</action>
<action dev="oheger" type="add">
ConfigurationFactory now supports the hierarchicalDom4j element in configuration
definition file
</action>
<action dev="ebourg" type="update">
Change all Vector objects to List objects.
</action>
<action dev="oheger" type="add">
ConfigurationFactory now supports two types of properties files, additional and
override. Additional properties add each other together. Override override each
other. This allows you to have a single property that is either aggregated from a
number of sources, or have a property that is overridden according to a specific
order of sources.
</action>
<action dev="oheger" type="update">
AbstractConfiguration addProperty now delegates to an abstract addPropertyDirect
implemented by BaseConfiguration.
</action>
<action dev="kshaposhnikov" type="update">
Changed getString() method to throw a NoSuchElementException instead of "" if the
configuration property doesn't exist.
</action>
<action dev="kshaposhnikov" type="add">
Added AbstractConfiguration to make it easier to create subclasses by only
having to implement the methods required.
</action>
<action dev="bdunbar" type="fix">
<strong>ClassPropertiesConfiguration Additions</strong>
<ul>
<li>Use the classloader of class that is provided by the constructor.</li>
<li>Add a constructor that indicates whether to use relative or absolute.</li>
<li>Change getPropertyStream to utilize the relative or absolute flag.</li>
<li>Add a test case that checks that absolute paths work.</li>
</ul>
</action>
<action dev="epugh" type="fix">
<strong>JNDIConfiguration.getKeys() Addition</strong>
The JNDIConfiguration.getKeys() method was returning an unsupported
operation error. However, this is an important method to have
supported.
</action>
<action dev="epugh" type="fix">
<strong>CompositeConfiguration.getKeys() Fix</strong>
The CompositeConfiguration.getKeys() method was returning an
unordered list of configuration values. However, many apps
expect the order that keys are returned to be the order they
are added into the properties file.
</action>
</release>
</body>
</document>