Apache Commons Configuration Version 2.10.0 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Tools to assist in the reading of configuration/preferences files in various formats Minor release with new features and updated dependencies. Changes in this version include: New features ------------ * Add AbstractConfiguration.getKeysInternal(String, String) #300. Thanks to KeijoB, Gary Gregory. * Add ImmutableConfiguration.getKeys(String, String) #300. Thanks to KeijoB, Gary Gregory. * Add PrefixedKeysIterator.PrefixedKeysIterator(IteratorString< #137. Thanks to cigaly. * Use final #141. Thanks to Arturo Bernal. * Replace test asserts by simpler but equivalent calls. #139 Thanks to Arturo Bernal. * CONFIGURATION-764: Single Variable Interpolation #182. Thanks to Ning Zhang, Matt Juntunen, Bruno P. Kinoshita, Gary Gregory. * Implement proper concurrency in ConstantLookup. Thanks to Gary Gregory. * CONFIGURATION-813: Support new namespace jakarta.mail.* used by javamail 2.0+ (first release October 2020) #186. Thanks to Dependabot. Changes ------- * Unclosed file handle when reading config from JAR file URL. Add and use FileBasedBuilderProperties.setURL(URL, URLConnectionOptions). Thanks to Robin Jansohn, Gary Gregory, Rob Spoor. * Make default interpolation prefix lookups configurable via system property. Remove dns, url, and script lookups from defaults. If these lookups are required for use in AbstractConfiguration subclasses, they must be enabled via system property. See ConfigurationInterpolator.getDefaultPrefixLookups() for details. * Bump actions/cache from 2 to 3.0.4 #99, #151, #169. Thanks to Dependabot, Gary Gregory. * Bump actions/checkout from 1 to 3 #47, #62, #70, #85, #150, #163. Thanks to Dependabot. * Bump actions/setup-java from 1.4.0 to 3 #63, #65, #73, #174. Thanks to Dependabot, Gary Gregory. * Bump codeql-action from v1 to v2. Thanks to Dependabot, Matt Juntunen. * Bump Spring dependency versions: org.springframework:spring-beans 4.3.26.RELEASE -> 5.3.21 org.springframework:spring-context 4.3.26.RELEASE -> 5.3.21 org.springframework:spring-core 4.3.26.RELEASE -> 5.3.21 org.springframework:spring-test 4.3.26.RELEASE -> 5.3.21 #165, #172 Thanks to Dependabot, Matt Juntunen, kinow, Gary Gregory. * Bump commons-parent from 52 to 53. Thanks to Dependabot, Matt Juntunen. * CONFIGURATION-787: Bump Apache Commons Lang from 3.9 to 3.12.0. Thanks to Gary Gregory. * CONFIGURATION-790: Bump com.fasterxml.jackson.core:jackson-databind from 2.10.3 to 2.13.3, #60. Thanks to Gary Gregory, Dependabot. * Bump Slf4j test dependencies: org.slf4j:slf4j-api 1.7.26 -> 1.7.33, org.slf4j:slf4j-ext 1.7.26 -> 1.7.33, org.slf4j:slf4j-log4j12 1.7.26 -> 1.7.33, org.slf4j:slf4j-nop 1.7.26 -> 1.7.33. Thanks to Gary Gregory. * Bump commons-parent from 50 to 52. Thanks to Dependabot. * Bump mailapi from 1.6.4 to 1.6.7 #48. Thanks to Dependabot, Gary Gregory. * Bump spotbugs-maven-plugin from 3.1.12.2 to 4.7.0.0, #55, #75, #79, #93, #116, #183. Thanks to Dependabot, Gary Gregory. * Bump hsqldb from 2.5.0 to 2.5.2 #54, #128. Thanks to Dependabot. * Bump commons-text from 1.8 to 1.9. Thanks to Gary Gregory. * Bump servlet-api from 2.4 to 2.5 #58. Thanks to Gary Gregory. * Bump maven-checkstyle-plugin from 3.1.0 to 3.1.2, #57, #97. Thanks to Gary Gregory. * Bump commons-pool2 from 2.8.0 to 2.10.0, #61, #124. Thanks to Dependabot, Gary Gregory. * Bump optional commons-codec from 1.14 to 1.15. Thanks to Gary Gregory. * Bump checkstyle from 8.26 to 9.3, #66, #71, #90, #101, #118, #121, #132, #155. Thanks to Dependabot, Gary Gregory. * Bump commons.jacoco.version 0.8.5 to 0.8.8 (Fixes Java 15 builds). Thanks to Gary Gregory. * Bump tests from commons-pool2 2.10.0 to 2.11.1. Thanks to Gary Gregory. * Bump tests from commons-dbcp2 2.7.0 to 2.9.0. Thanks to Gary Gregory. * Bump snakeyaml from 1.26 to 1.30 #68, #126, #137. Thanks to Dependabot, Gary Gregory. * Bump commons.japicmp.version from 0.14.1 to 0.15.7. Thanks to Gary Gregory. * Bump junit from 4.13 to 4.13.2 #78. Thanks to Dependabot, Gary Gregory. * Bump Apache Commons VFS 2.6.0 -> 2.9.0. Thanks to Gary Gregory. * Bump jackson-databind from 2.11.3 to 2.13.2.2 ,#88, #94, #127, #159, #168, #173. Thanks to Dependabot. * Bump commons.animal-sniffer.version 1.19 -> 1.20. Thanks to Gary Gregory. * Bump commons.javadoc.version from 3.1.1 to 3.4.0. Thanks to Gary Gregory. * Bump org.dbunit:dbunit from 2.7.0 to 2.7.3, #167. Thanks to Gary Gregory, Dependabot. * Bump tests to hamcrest v2.2 #143. Thanks to John Patrick. * Bump slf4j.version from 1.7.33 to 1.7.36 #166. Thanks to Dependabot. * Bump mailapi from 1.6.6 to 2.0.1 #186. Thanks to Dependabot. * Use GitHub Actions setup-java Maven cache property #190. Thanks to sullis. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ Download it from https://commons.apache.org/proper/commons-configuration/download_configuration.cgi ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.7 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Tools to assist in the reading of configuration/preferences files in various formats Minor release with new features and updated dependencies. Changes in this version include: New features ------------ * CONFIGURATION-765: Refactor XMLConfiguration.write(Writer) to add XMLConfiguration.write(Writer, Transformer). Thanks to Gary Gregory. Fixed Bugs ---------- * CONFIGURATION-761: Single argument DataConfiguration APIs always create empty arrays. Thanks to Gary Gregory. * CONFIGURATION-767: NullPointerException in XMLConfiguration#createTransformer() when no FileLocator is set. Thanks to Gary Gregory. * CONFIGURATION-768: XMLConfiguration#write does not indent XML elements. Thanks to Gary Gregory. * CONFIGURATION-771: Update com.fasterxml.jackson.core:jackson-databind 2.10.0 -> 2.10.1. Thanks to Gary Gregory. * CONFIGURATION-773: User's Guide > Properties files > Saving - small documentation bugs #41. Thanks to Dan Dragut. Changes ------- * CONFIGURATION-762: Use variable arguments. Thanks to Gary Gregory. * Update ]com.puppycrawl.tools:checkstyle from 8.24 to 8.25. Thanks to Gary Gregory. * CONFIGURATION-763: Update com.fasterxml.jackson.core:jackson-databind from 2.9.9 to 2.10.0. Thanks to Gary Gregory. * [test] org.easymock:easymock 4.0.2 -> 4.1. Thanks to Gary Gregory. * CONFIGURATION-775: Update Apache Commons VFS from 2.4.1 to 2.5.0. Thanks to Gary Gregory. * CONFIGURATION-777: Update Apache Commons VFS from 2.5.0 to 2.6.0. Thanks to Gary Gregory. * CONFIGURATION-778: Update optional Apache Commons Codec from 1.13 to 1.14. Thanks to Gary Gregory. * Update tests from JUnit 4.12 to 4.13. Thanks to Gary Gregory. * CONFIGURATION-779: Update optional jackson-databind from 2.10.1 to 2.10.2. Thanks to Gary Gregory. * CONFIGURATION-783: Update com.fasterxml.jackson.core:jackson-databind from 2.10.2 to 2.10.3. Thanks to Gary Gregory. * CONFIGURATION-784: Update org.yaml:snakeyaml from 1.25 to 1.26 and tweak parser configuration. Thanks to Gary Gregory. * CONFIGURATION-785: Update org.springframework:spring-* from 4.3.25.RELEASE to 4.3.26.RELEASE. Thanks to Gary Gregory. * Update org.apache.commons:commons-parent from 48 to 50 Thanks to Rob Tompkins. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ Download it from https://commons.apache.org/proper/commons-configuration/download_configuration.cgi ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.6 Release Notes 2019-09-13 Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Tools to assist in the reading of configuration/preferences files in various formats Minor release with new features and updated dependencies. Changes in this version include: New features ------------ * Document "includeOptional" on the site. Thanks to Gary Gregory. * CONFIGURATION-756: Allow for custom behavior to handle errors loading included properties files. Thanks to Gary Gregory. Fixed Bugs ---------- * CONFIGURATION-750: XMLPropertyListConfiguration cannot set arrays in the correct plist form. Thanks to Jason Pickens, Gary Gregory, Emmanuel Bourg. * Fix Javadoc for org.apache.commons.configuration2.PropertiesConfiguration.getIncludeOptional(). Thanks to Gary Gregory. * CONFIGURATION-760: Properties file using cyclical includes cause a StackOverflowError instead of detecting the misconfiguration. Thanks to Gary Gregory. Changes ------- * CONFIGURATION-751: Update Apache Commons Text from 1.6 to 1.7. Thanks to Gary Gregory. * CONFIGURATION-752: Update Apache Commons VFS from 2.3 to 2.4.1. Thanks to Gary Gregory. * CONFIGURATION-754: Update Apache Commons Text from 1.7 to 1.8. Thanks to Gary Gregory. * CONFIGURATION-755: [CVE-2014-0114] Update Apache Commons BeanUtils from 1.9.3 to 1.9.4. Thanks to Gary Gregory. * Fix syntax in user guide documentation #33. Thanks to Kevin Wang. * CONFIGURATION-757: Update org.yaml:snakeyaml from 1.24 to 1.25. Thanks to Gary Gregory. * Update tests from org.apache.commons:commons-dbcp2 2.6.0 to 2.7.0. Thanks to Gary Gregory. * Update tests from org.apache.commons:commons-pool2 2.6.2 to 2.7.0. Thanks to Gary Gregory. * CONFIGURATION-758: Update commons-codec:commons-codec from 1.12 to 1.13. Thanks to Gary Gregory. * Update tests from org.hsqldb:hsqldb 2.4.1 to 2.5.0. Thanks to Gary Gregory. * Update tests from com.sun.mail:mailapi 1.6.3 to 1.6.4. Thanks to Gary Gregory. * CONFIGURATION-759: Update Spring from 4.3.24.RELEASE to 4.3.25.RELEASE. Thanks to Gary Gregory. * Update maven-checkstyle-plugin from 3.0.0 to 3.1.0. Thanks to Gary Gregory. * Use current version of Checkstyle: 6.18 to 8.24. Thanks to Gary Gregory. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ Download it from https://commons.apache.org/proper/commons-configuration/download_configuration.cgi ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.5 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Minor release with new features and updated dependencies. Changes in this version include: Fixed Bugs ---------- * CONFIGURATION-731: Allow user to specify the comments and separator chars. Thanks to Shuai Zhang, Gary Gregory. Changes ------- * CONFIGURATION-738: Update Jackson from 2.9.7 to 2.9.8. Thanks to Gary Gregory. * CONFIGURATION-739: Update Apache Commons Codec from 1.11 to 1.12. Thanks to Gary Gregory. * CONFIGURATION-740: Update Apache Commons VFS from 2.2 to 2.3. Thanks to Gary Gregory. * CONFIGURATION-741: Update Spring from 4.3.19 to 4.3.22. Thanks to Gary Gregory. * CONFIGURATION-743: Update optional library snakeyaml from 1.23 to 1.24. Thanks to Gary Gregory. * CONFIGURATION-747: Update Apache Commons Lang from 3.8.1 to 3.9. Thanks to Gary Gregory. * CONFIGURATION-746: Update Jackson from 2.9.8 to 2.9.9. Thanks to Gary Gregory. * CONFIGURATION-747: Update Spring from 4.3.22 to 4.3.24. Thanks to Gary Gregory. * CONFIGURATION-745: Add the special key "includeoptional" for properties files. Thanks to Gary Gregory. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.4 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Minor release with new features and updated dependencies. Changes in this version include: New Features ------------ * CONFIGURATION-712: FileHandlerReloadingDetector now has a new refresh() method to initialize the reloading state from the underlying file. This new method is called by DefaultReloadingDetectorFactory when a new detector instance is created. This makes sure that a changed configuration file is directly detected on the first invocation of the isReloadingRequired() method. Thanks to Rolland Hobbie. * CONFIGURATION-713: Configuration properties can now be converted to regular expressions. Thanks to Lars W. * CONFIGURATION-715: With JupIOFactory a new IOFactory implementation is now available that implements handling of whitespace in a way closer to java.util.Properties. This class can be used when stricter compatibility with Java standard methods for reading and writing properties files is needed. Thanks to Patrick Schmidt. * CONFIGURATION-716: JupIOFactory (introduced for CONFIGURATION-715) also implements handling of escape sequences in a way closer to java.util.Properties. Thanks to Patrick Schmidt. * CONFIGURATION-724: Add support for Commons Text 1.4 localhost string lookup as a default lookup. * CONFIGURATION-726: Add support for Commons Text 1.5 new string lookups as default lookups. Fixed Bugs ---------- * CONFIGURATION-710: Fixed numerous typos in user guides. Thanks to thc202. * CONFIGURATION-711: Update Apache Commons Lang from 3.7 to 3.8.1. * CONFIGURATION-727: org.apache.commons.configuration2.DatabaseConfiguration never closes result sets and statements. Changes ------- * CONFIGURATION-720: Replace use of deprecated Commons Lang string substitution code for Commons Text. * CONFIGURATION-694: Update Java requirement from version 7 to 8. * CONFIGURATION-721: Update Jackson from 2.9.6 to 2.9.7. * CONFIGURATION-722: Update optional dependency snakeyaml from 1.21 to 1.23. * CONFIGURATION-723: Update optional Spring dependencies from 4.3.18.RELEASE to 4.3.19.RELEASE. * CONFIGURATION-725: Update Apache Commons Text from 1.4 to 1.5. * CONFIGURATION-728: Update Apache Commons Text from 1.5 to 1.6. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.3 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Version 2.3 is another maintenance release for the Configuration 2.x series. It contains bug fixes and also a few new features like support for File and Path as data types. The release is fully source and binary compatible with version 2.2. Commons Configuration 2.3 requires Java 1.7 or higher. New features ------------ * CONFIGURATION-692 ConversionExceptions thrown when accessing the properties of a configuration now contain the original cause of the exception. * CONFIGURATION-693 Configuration properties can now be converted to the data types File and Path. * CONFIGURATION-698 Add org.apache.commons.configuration2.MapConfiguration.toString(). * CONFIGURATION-698 Add toString() methods here and there to help debugging. * CONFIGURATION-701 CompositeConfiguration now supports an addConfigurationFirst() method to add child configurations with a higher priority. Fixed Bugs ---------- * CONFIGURATION-652 Root node attributes are now updated correctly when loading XML configuration files. * CONFIGURATION-686 JSONConfiguration can now handle list structures with complex objects as elements. * CONFIGURATION-687 Fixed a memory leak in CombinedConfigurationBuilder. Builder for the child sources were created each time a new result configuration was requested; thus the list with child builders got longer and longer. This also had an impact on reloading because unnecessary reloading operations could be triggered. Now it is guaranteed that child builders are created only once. * CONFIGURATION-688 Fixed a bug related to the handling of multiple include files in PropertiesConfiguration. * CONFIGURATION-690 ExprLookup.getVariables() no longer returns null, but a copy of the current variables of this lookup object. * CONFIGURATION-691 ExprLookup now handles expressions that do not return a string result by converting them to string. * CONFIGURATION-703 XMLConfiguration now handles elements correctly whose value consists only of whitespace if the xml:space attribute is set to preserve. Other changes ------------- * CONFIGURATION-675 Added a .gitignore file to the project. * Some dependencies have been updated to their most recent versions. However, as no new features of these dependencies are used, the older versions should still work. The following dependencies are affected: o Update Apache Commons Lang dependency from 3.6 to 3.7. o Update Apache Commons VFS from 2.1 to 2.2. o Update Apache Commons Codec from 1.10 to 1.11. o Update Spring from 4.3.9.RELEASE to 4.3.18.RELEASE o Update optional dependency snakeyaml from 1.18 to 1.21. o Update optional dependency Jackson from 2.8.9 to 2.9.6. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.2 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Version 2.2 is another maintenance release for the Configuration 2.x series. It contains a number of bug fixes and also some new features. Among the highlights is the new support for JSON and YAML configurations. The release is fully source and binary compatible with version 2.1.1. Commons Configuration 2.2 requires Java 1.7 or higher. New features ------------ * CONFIGURATION-666 Add convenience ctor ConfigurationRuntimeException(String, Object...). * CONFIGURATION-665 Add org.apache.commons.configuration2.AbstractHierarchicalConfiguration.toString(). * CONFIGURATION-664 Add API org.apache.commons.configuration2.tree.ImmutableNode.getChildren(String). * CONFIGURATION-660 Add toString() methods here and there to help debugging. * CONFIGURATION-658 Add API org.apache.commons.configuration2.DataConfiguration.getURI(String) methods. * CONFIGURATION-656 Added new YAMLConfiguration class to support configuration files in YAML format. * CONFIGURATION-653 ConfigurationUtils and ConfigurationConverter now offer better support for immutable configurations. * CONFIGURATION-647 INIConfiguration can now be configured to use a custom separator between properties and values when writing an ini file. * CONFIGURATION-258 Added new JSONConfiguration class to support configuration files in JSON format. Fixed Bugs ---------- * CONFIGURATION-671 Fixed a NPE in INIConfiguration when saving a configuration with an empty section. * CONFIGURATION-669 The node model returned by SubnodeConfiguration.getNodeModel() has now the correct root node set. Other changes ------------- * CONFIGURATION-673 Added an Automatic-Module-Name header to the manifest for compatibility with the Java 9 module system. * CONFIGURATION-669 Update optional Spring dependency from 4.2.5.RELEASE to 4.3.9.RELEASE. * CONFIGURATION-667 Update Apache Commons Lang dependency from 3.3.2 to 3.6. * CONFIGURATION-663 Fixed a typo in the upgrade to 2.0 guide. * CONFIGURATION-661 Update platform requirement from Java 6 to 7. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.1.1 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. The release is fully source and binary compatible with version 2.1. Commons Configuration 2.1 requires Java 1.6 or higher. Fixed Bugs ---------- * CONFIGURATION-649 Improved the handling of lists defined by a string with delimiter characters in XMLConfiguration. Such lists now retain their original format when the configuration is saved. * CONFIGURATION-648 Made the IOFactory property of PropertiesBuilderParameter compatible with the most recent version of Commons BeanUtils. This version changed the handling of properties starting with multiple uppercase letters. * CONFIGURATION-646 PropertiesConfiguration now works correctly with the auto-save mode. * CONFIGURATION-644 PropertiesConfigurationLayout no longer duplicates a header comment if a file with another comment is loaded. Thanks to Andrew DeMaria. * CONFIGURATION-643 Documentation improvements for the user's guide. * CONFIGURATION-641 Improved documentation of FileBased interface. The Javadocs now state explicitly that the methods should not be called by client code. Exception handling in configuration classes implementing FileLocatorAware has been improved. * CONFIGURATION-640 PropertiesConfiguration now correctly unescapes some special characters that are always escaped in Java properties files. Other changes ------------- * CONFIGURATION-639 In the OSGi bundle manifest of the Commons Configuration bundle the package imports for Spring packages are now marked as optional. Thanks to Rico Neubauer. * CONFIGURATION-638 Improved handling of temporary files and folders in unit tests. Thanks to Ahmet Celik. * CONFIGURATION-627 Updated dependency to Commons BeanUtils to version 1.9.3. This fixes an issue with an exception stacktrace that was logged when a ConfigurationBuilder was used. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Commons Configuration Package Version 2.1 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This document contains the release notes for this version of the Commons Configuration component. It describes the changes since the previous version. The Commons Configuration software library provides a generic configuration interface which enables an application to read configuration data from a variety of sources. Version 2.1 is a first bug-fix release for the Configuration 2.x series and also adds a new feature related to the integration with the Spring framework. A list of all changes can be found below. The release is fully source and binary compatible with version 2.0. Commons Configuration 2.1 requires Java 1.6 or higher. New Features ------------ * CONFIGURATION-636 PropertiesConfigurationLayout now allows manipulating the order of keys when the properties file is written. * CONFIGURATION-624 Support Commons Configuration as PropertySource in Spring. Fixed Bugs ---------- * CONFIGURATION-634 HomeDirectoryLocationStrategy now works correctly in the mode that evaluates the FileLocator's base path. * CONFIGURATION-633 Interpolation was improved to better support properties with multiple values. * CONFIGURATION-632 The methods getStringArray() and getList() of CompositeConfiguration now support the interpolation of variables that reference properties with multiple values. * CONFIGURATION-622 Fixed a problem in INIConfiguration.write() with keys containing a separator character. This separator had been duplicated. Such keys are now handled correctly when the configuration is saved. Other changes ------------- * CONFIGURATION-628 Support for the ant build was dropped. * CONFIGURATION-626 ImmutableConfiguration.getArray() has been deprecated. Arrays can now be queried using the generic get() method in a type-safe way. * CONFIGURATION-631 Updated optional dependency to Apache Commons VFS from 2.0 to 2.1. (The older version still works.) * CONFIGURATION-635 Updated optional dependency to Apache Commons Codec from 1.9 to 1.10. (The older version still works.) Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.0 Release Notes Introducing Apache Commons Configuration ---------------------------------------- After a series of alpha and beta releases (please consult the corresponding release notes below), this is the first final release for Apache Commons Configuration 2.0. Version 2.0 is a complete redesign of the Configuration 1.x API with the aim to fix some limitations in the original design and make the library more flexible and powerful. Therefore, this release is not a drop-in replacement for Commons Configuration 1.x; there have been incompatible changes in many areas that require adaptations on client code. A migration guide is available at https://commons.apache.org/configuration/userguide/upgradeto2_0.html that describes all breaking changes and helps when upgrading to the new version. One obvious breaking change is the renaming of the main package (all classes are now located under org.apache.commons.configuration2) and the Maven coordinates (groupId: org.apache.commons, artifactId: commons-configuration2). This was necessary to allow both versions to coexist on the classpath without conflicts. The user's guide has been completely reworked to describe all features of the new version. It can be found at https://commons.apache.org/configuration/userguide/user_guide.html Changes ------- * CONFIGURATION-621: Moved ConfigurationLogger class to io package to avoid cyclic dependencies between packages. * CONFIGURATION-619: CombinedConfigurationBuilder now supports inheritance of its parameters to child configuration sources. This is enabled by default. * CONFIGURATION-615: Changed generic types in the signatures of a MapConfiguration constructor and AbstractConfiguration.getList(String, List). These changes were made in version 1.10 as fixes for CONFIGURATION-557 and CONFIGURATION-558. But it had been missed to merge them to trunk. Fixed Bugs ---------- * CONFIGURATION-620: Fixed two invalid examples in the user's guide for file-based configurations. * CONFIGURATION-618: When using immutable configurations exceptions thrown by the wrapped configuration came out as UndeclaredThrowableException. This has been fixed; now the correct original exception is thrown. Commons Configuration 2.0 requires Java 1.6 or higher. ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.0-beta2 Release Notes Introducing Apache Commons Configuration ---------------------------------------- After the first beta release in June 2015 there has been some feedback from the community resulting in (minor) adaptations of the API. In most cases, the return values of methods have been changed to be more generic. There has also been a change in the support for logging. Therefore, this second beta release is provided to make these changes more "official". This release also includes some bug fixes. The bugs addressed here have partly existed already in the Configuration 1.0 code base; so these fixes are not all related to changes introduced in the 2.0 version. Below is a list of all changes in this version. Please refer to the clirr report at https://commons.apache.org/proper/commons-configuration/clirr-report.html for information about changes which break binary compatibility. Changes ------- * CONFIGURATION-614: References to Commons Logging have been removed from the Configuration API. It is still possible to influence logging by making use of the new ConfigurationLogger abstraction. * CONFIGURATION-612: The return type of ConfigurationBuilder.getConfiguration() was changed from Configuration to ImmutableConfiguration because this is the base interface for all configuration objects. Thanks to Jon Weygand. * CONFIGURATION-608: Adapted the return type of ReloadingFileBasedConfigurationBuilder.configure(). Fixed Bugs ---------- * CONFIGURATION-609: Fixed a bug in PropertiesConfiguration related to the loading of include files. The FileHandler used for this purpose was not fully initialized. * CONFIGURATION-605: XMLConfiguration no longer drops keys when list delimiter characters occur in element values. * CONFIGURATION-604: Fixed a problem in the conversion of a flat configuration to a hierarchical one that could cause the loss of properties in a combined configuration constructed by an override combiner. Commons Configuration 2.0-beta2 requires Java 1.6 or higher. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.0-beta1 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This is the first beta release of Commons Configuration 2.0 after two alpha versions. There has not been much feedback so far and no requests for API changes. Therefore, we move forwards to a beta release indicating that the API can be considered more stable. However, at this stage, changes of the API can still not be fully excluded. Below is a list of all changes in this version. Compared to version 2.0-alpha2, there has only be a single change: an obsolete interface (which had been overlooked during a major refactoring) was removed. So applications that are using 2.0-alpha2 should be able to migrate to 2.0-beta1 without problems. Changes ------- * CONFIGURATION-598: Removed obsolete ConfigurationBuilder interface in the base package. ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.0-alpha2 Release Notes Introducing Apache Commons Configuration ---------------------------------------- After version 2.0-alpha1 has been out for a while (the corresponding release notes can be found below), this second alpha release contains a few number of improvements and new features whose implementation required some changes on existing interfaces. In most cases, new methods were added offering enhanced functionality. Because these are typically interfaces implemented by the library itself client code using the previous alpha version should hardly be affected. Below is a list of all changes in this version: New features ------------ * CONFIGURATION-574: DefaultExpressionEngine can now be customized to match configuration keys in a case-insensitive manner. This is useful for instance for dealing with Windows INI files. * CONFIGURATION-565: Added support for querying encoded properties. * CONFIGURATION-200: A size() method was added to the ImmutableConfiguration interface. Fixed Bugs ---------- * CONFIGURATION-564: PropertiesConfiguration now supports again properties without a value and a separator character. The keys of such properties are added to the configuration with an empty String as value. * CONFIGURATION-427: XMLPropertyListConfiguration can now save arrays in the correct form. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/ ----------------------------------------------------------------------------- Apache Commons Configuration Version 2.0-alpha1 Release Notes Introducing Apache Commons Configuration ---------------------------------------- This is the first alpha release for version 2.0 of Commons Configuration. Version 2 is a major redesign of the Configuration API. It breaks compatibility in many areas and, therefore, is not a drop-in replacement for Commons Configuration 1.x. To allow collaboration with an older version of the library (and to prevent jar and dependency hell), the top-level package and the Maven coordinates have been changed. There is an upgrade guide available at https://commons.apache.org/configuration/userguide/upgradeto2_0.html describing the most important breaking changes. Be sure to read this document if you want to switch from a 1.x version to this new version. The user's guide which can be found at https://commons.apache.org/configuration/userguide/user_guide.html has been reworked to cover all the new and changed features. The main purpose of this alpha release is to gather feedback from the community about the reworked API. IT IS NOT YET PRODUCTION READY. It is expected that there will still be some changes on the public API. Below is a list of all changes in this version: New features ------------ * CONFIGURATION-579: A migration guide has been created which supports when upgrading from version 1.x to 2.0. * CONFIGURATION-559: It is now possible to define default values for initialization properties of configurations. * CONFIGURATION-551: The data type conversion mechanism has been made extensible. There is a new interface ConversionHandler which controls the data type conversions available for a configuration object. By setting a custom implementation, conversions can be adapted or extended. * CONFIGURATION-550: Conversion to Character is now supported. * CONFIGURATION-541: Multi-file configurations are no longer restricted to XML configuration files. Arbitrary file-based configurations are now supported. * CONFIGURATION-535: DatabaseConfiguration now provides get methods for querying its properties defining the underlying database structures. * CONFIGURATION-533: DatabaseConfiguration now automatically converts CLOBs to strings if they appear in property values. * CONFIGURATION-525: PropertiesConfiguration now keeps a comment at the bottom of a properties file. A new footer property was added for reading and writing this footer comment. * CONFIGURATION-519: Configuration objects are now created via configuration builders. A new API for configuration builders has been added. * CONFIGURATION-517: Hierarchical configurations now provide methods to obtain sub configurations for all child elements of a given key. * CONFIGURATION-514: Bean declarations now support constructor invocations. * CONFIGURATION-512: It is now possible to obtain an immutable view on a Configuration or HierarchicalConfiguration object. New interfaces, ImmutableConfiguration, and ImmutableHierarchicalConfiguration have been introduced. * CONFIGURATION-508: Generic get() methods have been added to the Configuration interface. These methods expect a target class and try to convert the value of the specified property to this target class. * CONFIGURATION-204: With the new reloading mechanism automatic and periodic reloading checks can be performed. * CONFIGURATION-202: Reloading checks can now be performed in a background thread. Fixed Bugs ---------- * CONFIGURATION-582: Fixed a StringIndexOutOfBoundsException in PropertiesConfigurationLayout which was caused by lines containing only whitespace. * CONFIGURATION-572: When a CombinedConfiguration is cleared it removes itself as change listener from all child configurations. This fixes a possible memory leak. * CONFIGURATION-570: Fixed a possible ConcurrentModificationException when a SystemConfiguration instance is passed to the append() or copy() methods. * CONFIGURATION-567: XMLBeanDeclaration now escapes node names before they are used to determine nested properties. Thanks to Shen liang. Changes ------- * CONFIGURATION-591: Removed methods from ConfigurationConverter related to ExtendedProperties. This class is no longer supported by recent versions of Commons Collections. * CONFIGURATION-590: Removed Serializable interface from all configuration implementations. Some configuration classes declared this interface without being actually serializable. * CONFIGURATION-588: The name of the top-level package and the maven coordinates have been changed to allow a coexistence of Commons Configuration 1.x with 2.0. * CONFIGURATION-584: The event mechanism has been reworked. There is now a generic event listener interface which can be used to receive notifications from multiple types of event sources. * CONFIGURATION-578: The user's guide has been fully reworked to cover all new and enhanced features of version 2.0. * CONFIGURATION-577: The dependency to Commons Collections is no longer needed. * CONFIGURATION-576: A new abstract base class for hierarchical configurations was introduced which supports arbitrary hierarchical data structures. The type of the nodes used by the configuration can now be specified as a generic type argument. This makes the integration of other hierarchical structures easier. * CONFIGURATION-575: Hierarchical configurations now operate on immutable structures. Data is no longer represented by ConfigurationNode objects. The ImmutableNode class now serves as data container. * CONFIGURATION-573: XPathExpressionEngine can now deal with namespace prefixes in node and attribute names. * CONFIGURATION-563: The DefaultExpressionEngine class is now immutable. An instance can be shared between multiple configuration objects. * CONFIGURATION-562: Improved the API of ExprLookup. * CONFIGURATION-555: Fixed a bug in the handling of the xml:space attribute in XMLConfiguration. The attribute is now also applied to the current element, not only to sub elements. * CONFIGURATION-554: BeanHelper is no longer a static utility class. Instances can be created with a specific configuration of bean factories. There is still a default instance which can be obtained via the BeanHelper.INSTANCE field. * CONFIGURATION-553: The code for accessing configuration files has been reworked. Methods related to locating configuration files have been moved from ConfigurationUtils to a new FileLocatorUtils class. Customizable strategy classes (implementing the new FileLocationStrategy) can be used for searching for configuration files. * CONFIGURATION-546: BeanHelper can now process BeanDefinitions initializing properties of collection types of their target beans. Thanks to Justin Couch. * CONFIGURATION-544: Added missing dependencies to build.xml. Thanks to Oliver Kopp. * CONFIGURATION-542: The mechanism for synchronizing configurations has been completely redesigned. It is now based on Synchronizer objects which can be configured by client code. A new chapter was added to the user's guide regarding thread-safety of configurations. * CONFIGURATION-540: MapConfiguration now directly uses a Properties object passed to its constructor as data store rather than copying it. This allows SystemConfiguration to be connected to system properties; i.e. changing a property through SystemConfiguration immediately affects the corresponding system property. * CONFIGURATION-539: The deprecated INIConfiguration class was removed. HierarchicalINIConfiguration was renamed to INIConfiguration. * CONFIGURATION-537: The deprecated ConfigurationFactory class was removed. * CONFIGURATION-536: File-based configurations are now implemented in a different way. The interfaces FileConfiguration and ReloadingStrategy have been removed, also the base classes AbstractFileConfiguration and AbstractHierarchicalFileConfiguration. They are replaced by the FileBased interface and the FileHandler class which implements central I/O functionality. Reloading is now in the responsibility of configuration builders. * CONFIGURATION-534: The includesAllowed property of PropertyConfiguration is now independent from the existence of a base path. * CONFIGURATION-530: Concurrent access to configurations and reloading have been completely redesigned. Because reloading is now handled by configuration builders there is no need to acquire a lock in order to protected against a reload operations. * CONFIGURATION-527: AbstractConfiguration.clearPropertyDirect() is now abstract. Thanks to Matthias Richter. * CONFIGURATION-526: XMLPropertiesConfiguration now supports loading from and saving to DOM nodes. Thanks to Oliver Kopp. * CONFIGURATION-524: Interpolation now works correctly after a configuration was cloned. The ConfigurationInterpolator instance is now cloned, too. * CONFIGURATION-521: ConfigurationUtils.fileFromUrl() now correctly handles URL containing encoded percent characters. Thanks to Oliver Kopp. * CONFIGURATION-520: Support for reloading of configuration data has been reworked. * CONFIGURATION-518: Classes and interfaces related to interpolation have been slightly reworked. ConfigurationInterpolator is now thread-safe. There are multiple ways to define the ConfigurationInterpolator object to be used by an AbstractConfiguration instance. * CONFIGURATION-516: PropertiesConfiguration no longer escapes double quotes on saving. * CONFIGURATION-515: The visibility of some internal methods of PropertiesConfiguration.PropertiesWriter has been increased to protected. This simplifies the implementation of a custom escaping strategy. * CONFIGURATION-513: HierarchicalConfiguration is now an interface. The base implementation class is named BaseHierarchicalConfiguration. * CONFIGURATION-506: Removed obsolete nested classes Node and NodeVisitor of HierarchicalConfiguration. The related deprecated class ConfigurationKey was removed, too. * CONFIGURATION-505: XMLConfiguration no longer supports attributes with multiple values or list delimiter parsing in attributes. This feature was complex and error prone and brought little value to the user. * CONFIGURATION-504: SubnodeConfiguration now provides a new method for clearing it and removing its root node from the parent configuration. The method HierarchicalConfiguration.configurationsAt() now returns a list of SubnodeConfiguration so that it is easier to make direct use of this feature. * CONFIGURATION-500: XMLConfiguration now adds attributes of elements defining a list to all list nodes. * CONFIGURATION-496: Concurrent access to configurations and reloading have been completely redesigned. This should reduce the amount of synchronization. * CONFIGURATION-486: Removed some static fields for specifying global default values. Using static fields in this way is thread-hostile. There are now alternatives for setting default values. * CONFIGURATION-462: Updated dependency to Commons Lang from version 2.6 to 3.1. * CONFIGURATION-419: EventSource is now an interface. With BaseEventSource there is a default implementation. * CONFIGURATION-418: The handling of list delimiters and their escape characters has been reworked. A new ListDelimiterHandler interface was introduced allowing applications to customize the treatment of list delimiters. * CONFIGURATION-330: Concurrent access to configurations has been reworked. * CONFIGURATION-153: It is now possible to define the strategy used for locating configuration files. * CONFIGURATION-136: Reloading can no longer corrupt a configuration instance. This is now handled by a configuration builder; the original configuration instance is not modified. * CONFIGURATION-26: It is now possible to influence the conversion from a container object (a collection or an array) to a single value (e.g. what is returned by getString() if the current property has multiple values). Per default, the first value is returned. By overriding methods of the configuration's ConversionHandler, this behavior can be changed. Historical list of changes: https://commons.apache.org/proper/commons-configuration/changes-report.html For complete information on Apache Commons Configuration, including instructions on how to submit bug reports, patches, or suggestions for improvement, see the Apache Commons Configuration website: https://commons.apache.org/proper/commons-configuration/