diff --git a/checkstyle.xml b/checkstyle.xml
new file mode 100644
index 0000000..8fdd4f3
--- /dev/null
+++ b/checkstyle.xml
@@ -0,0 +1,336 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/releasenotes/releasenotes-0.2.01.txt b/releasenotes/releasenotes-0.2.01.txt
index edc3f6f..7e3d482 100644
--- a/releasenotes/releasenotes-0.2.01.txt
+++ b/releasenotes/releasenotes-0.2.01.txt
@@ -1,11 +1,11 @@
-release notes databene-commons 0.2.01
--------------------------------------
-
-Purpose: This release only provides features needed for new releases of dependent projects
-
-Enhancements:
-- StringUtil.indexOfIgnoreCase()
-- StringUtil.lastChar(String)
-- StringUtil.capitalize(String)
-- IOUtil.copy(String srcUri, String dstUri)
+release notes databene-commons 0.2.01
+-------------------------------------
+
+Purpose: This release only provides features needed for new releases of dependent projects
+
+Enhancements:
+- StringUtil.indexOfIgnoreCase()
+- StringUtil.lastChar(String)
+- StringUtil.capitalize(String)
+- IOUtil.copy(String srcUri, String dstUri)
- DBUtil.close(Statement)
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.2.02.txt b/releasenotes/releasenotes-0.2.02.txt
index fed59a7..cc26bc2 100644
--- a/releasenotes/releasenotes-0.2.02.txt
+++ b/releasenotes/releasenotes-0.2.02.txt
@@ -1,18 +1,18 @@
-release notes databene-commons 0.2.02
--------------------------------------
-
-Purpose: This release only provides features needed for new releases of dependent projects
-
-Enhancements:
-- new method SystemInfo.fileEncoding()
-- new method SystemInfo.userLanguage()
-- new class org.databene.model.converter.MessageConverter
-- new method BeanUtil.hasProperty()
-- implemented StringLengthValidator.toString()
-- new class MessageConverter
-- new class MathUtil
-- improved logging
-- new method CollectionUtil.toArray(Collection source)
-- supporting file encodings in IOUtil.getReaderForUri() that abviate from System defaults
-- new method ParseUtil.isHex()
+release notes databene-commons 0.2.02
+-------------------------------------
+
+Purpose: This release only provides features needed for new releases of dependent projects
+
+Enhancements:
+- new method SystemInfo.fileEncoding()
+- new method SystemInfo.userLanguage()
+- new class org.databene.model.converter.MessageConverter
+- new method BeanUtil.hasProperty()
+- implemented StringLengthValidator.toString()
+- new class MessageConverter
+- new class MathUtil
+- improved logging
+- new method CollectionUtil.toArray(Collection source)
+- supporting file encodings in IOUtil.getReaderForUri() that abviate from System defaults
+- new method ParseUtil.isHex()
- CompositeValidator, AndValidator, OrValidator
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.2.03.txt b/releasenotes/releasenotes-0.2.03.txt
index 8670331..7ce693f 100644
--- a/releasenotes/releasenotes-0.2.03.txt
+++ b/releasenotes/releasenotes-0.2.03.txt
@@ -1,7 +1,7 @@
-release notes databene-commons 0.2.03
--------------------------------------
-
-Changes
-- new method ArrayFormat.formatStrings() as workaround for an Eclipse Java parser problem
-- renamed ArrayFormat.formatCharacterArray() to formatChars()
-- renamed ArrayFormat.formatIntArray() to formatInts()
+release notes databene-commons 0.2.03
+-------------------------------------
+
+Changes
+- new method ArrayFormat.formatStrings() as workaround for an Eclipse Java parser problem
+- renamed ArrayFormat.formatCharacterArray() to formatChars()
+- renamed ArrayFormat.formatIntArray() to formatInts()
diff --git a/releasenotes/releasenotes-0.2.04.txt b/releasenotes/releasenotes-0.2.04.txt
index 00b89ef..1ff625b 100644
--- a/releasenotes/releasenotes-0.2.04.txt
+++ b/releasenotes/releasenotes-0.2.04.txt
@@ -1,23 +1,23 @@
-release notes databene-commons 0.2.04
--------------------------------------
-
-Summary: Most enhancements are related to conversions of timestamps and arrays.
-A new Escalation strategy was introduced.
-
-
-Enhancements
-- New Escalation strategy with LoggerEscalatior implementation
-- New classes
- - ByteArrayToBase64Converter
- - Date2TimestampConverter
- - String2ByteArrayConverter
- - ArrayBuilder
- - Base64Codec
- - ObjectNotFoundException
-- ToArrayConverter: generic support of getBytes() methods
-- String2DateConverter: added support for java.sql.Timestamp creation
-- ArrayFormat.formatBytes()
-- FactoryConverter: added generic support for typeValue() methods, e.g. intValue(), stringValue()
-- new method StringUtil.uncapitalize()
-- RoundedNumberFormat: using number formatting in US Locale by default
-- ArrayUtil: new methods arrayType(), newInstance()
+release notes databene-commons 0.2.04
+-------------------------------------
+
+Summary: Most enhancements are related to conversions of timestamps and arrays.
+A new Escalation strategy was introduced.
+
+
+Enhancements
+- New Escalation strategy with LoggerEscalatior implementation
+- New classes
+ - ByteArrayToBase64Converter
+ - Date2TimestampConverter
+ - String2ByteArrayConverter
+ - ArrayBuilder
+ - Base64Codec
+ - ObjectNotFoundException
+- ToArrayConverter: generic support of getBytes() methods
+- String2DateConverter: added support for java.sql.Timestamp creation
+- ArrayFormat.formatBytes()
+- FactoryConverter: added generic support for typeValue() methods, e.g. intValue(), stringValue()
+- new method StringUtil.uncapitalize()
+- RoundedNumberFormat: using number formatting in US Locale by default
+- ArrayUtil: new methods arrayType(), newInstance()
diff --git a/releasenotes/releasenotes-0.3.0.txt b/releasenotes/releasenotes-0.3.0.txt
index 1ed2e89..fc2c540 100644
--- a/releasenotes/releasenotes-0.3.0.txt
+++ b/releasenotes/releasenotes-0.3.0.txt
@@ -1,24 +1,24 @@
-release notes databene-commons 0.3.0
-------------------------------------
-
-Changes
-- moved packages from org.databene.model to com.rapiddweller.commons
-
-Enhancements
-- StringUtil.trimAll()
-- BeanUtil.extractProperties()
-- StringCharacterIterator: new methods skipWhitespace(), parseLetters(), remainingText()
-- ParseUtil: New method parseAssignment()
-- IOUtil: Custom Properties file reader that supports preprocessing of entries.
-- BeanUtil: Added deprecation check and escalation on instantiation
-
-Bug Fixes
-- MinOperation returned max
-- MaxOperation returned min
-
-QA
-- Minimal JavaDoc added to all classes
-- Added tests
-
-Migration
-- rename class imports from org.databene.model.** to com.rapiddweller.commons.**
+release notes databene-commons 0.3.0
+------------------------------------
+
+Changes
+- moved packages from org.databene.model to com.rapiddweller.commons
+
+Enhancements
+- StringUtil.trimAll()
+- BeanUtil.extractProperties()
+- StringCharacterIterator: new methods skipWhitespace(), parseLetters(), remainingText()
+- ParseUtil: New method parseAssignment()
+- IOUtil: Custom Properties file reader that supports preprocessing of entries.
+- BeanUtil: Added deprecation check and escalation on instantiation
+
+Bug Fixes
+- MinOperation returned max
+- MaxOperation returned min
+
+QA
+- Minimal JavaDoc added to all classes
+- Added tests
+
+Migration
+- rename class imports from org.databene.model.** to com.rapiddweller.commons.**
diff --git a/releasenotes/releasenotes-0.3.1.txt b/releasenotes/releasenotes-0.3.1.txt
index ff06e2b..44858df 100644
--- a/releasenotes/releasenotes-0.3.1.txt
+++ b/releasenotes/releasenotes-0.3.1.txt
@@ -1,8 +1,8 @@
-release notes databene commons 0.3.1
-------------------------------------
-
-Changes
-- cleaned up commons package
-
-QA
-- Added tests
+release notes databene commons 0.3.1
+------------------------------------
+
+Changes
+- cleaned up commons package
+
+QA
+- Added tests
diff --git a/releasenotes/releasenotes-0.4.0.txt b/releasenotes/releasenotes-0.4.0.txt
index 58ed3f4..dd9b3fd 100644
--- a/releasenotes/releasenotes-0.4.0.txt
+++ b/releasenotes/releasenotes-0.4.0.txt
@@ -1,56 +1,56 @@
-release notes databene commons 0.4.0
-------------------------------------
-
-Changes
-- moved DBUtil to com.rapiddweller.commons
-- moved packages org.databene.platform.* -> com.rapiddweller.commons.*
-- Changed parameter order in ArrayUtil.contains()
-- moved collection related methods from ArrayUtil to CollectionUtil
-- Renamed AbstractTypedConverter to AbstractBidirectionalConverter
-- Added generic type for source to AnyConverter
-
-Enhancements
-- new methods in StringUtil
- - splitOnLastSeparator()
- - containsIgnoreCase()
- - startsWithIgnoreCase()
-- new Time creation methods in TimeUtil
-- Added configuration from file for the ComparatorFactory
-- new method ParseUtil.isNMToken()
-- new methods LocaleUtil.availableLocaleUrl() and reduceLocaleString()
-- new class MathUtil
-- IOUtil
- - improved properties file support by preprocessors
- - new method getBinaryContentOfUri()
-- Made Composite a generic type and added getComponents() method
-- new methods ArrayUtil.append(), equals() and isEmpty()
-- new operations:
- - AndOperation
- - ArrayIntersectionOperation
- - ConvertingOperation
- - FirstNonNullSelector
- - MaxNumberLiteral
- - MinNumberLiteral
- - OperationWrapper
- - OrOperation
-- new Converters:
- - ArrayTypeConverter
- - LiteralParser
- - String2NumberConverter
- - String2TimeConverter
- - DefaultEntryConverter
-- many many new XML utility methods in XMLUtil
-- new FlatXML2BeanConverter
-- Implemented parsing of arrays in ArrayFormat
-- new BeanUtil methods
- - findMethodsByAnnotation()
- - getGenericInterfaceParams()
- - findMethodsByName()
-- new class CompositeFormatter
-
-Bug fixes
-- UTF-8 support in IOUtil
-- added array support for StringConverter
-- converting null values with ArrayConverter
-- AnyMutator: auto-converting bean properties to the correct type
-- BeanUtil supports auto-conversion of invocation parameters to appropriate type
+release notes databene commons 0.4.0
+------------------------------------
+
+Changes
+- moved DBUtil to com.rapiddweller.commons
+- moved packages org.databene.platform.* -> com.rapiddweller.commons.*
+- Changed parameter order in ArrayUtil.contains()
+- moved collection related methods from ArrayUtil to CollectionUtil
+- Renamed AbstractTypedConverter to AbstractBidirectionalConverter
+- Added generic type for source to AnyConverter
+
+Enhancements
+- new methods in StringUtil
+ - splitOnLastSeparator()
+ - containsIgnoreCase()
+ - startsWithIgnoreCase()
+- new Time creation methods in TimeUtil
+- Added configuration from file for the ComparatorFactory
+- new method ParseUtil.isNMToken()
+- new methods LocaleUtil.availableLocaleUrl() and reduceLocaleString()
+- new class MathUtil
+- IOUtil
+ - improved properties file support by preprocessors
+ - new method getBinaryContentOfUri()
+- Made Composite a generic type and added getComponents() method
+- new methods ArrayUtil.append(), equals() and isEmpty()
+- new operations:
+ - AndOperation
+ - ArrayIntersectionOperation
+ - ConvertingOperation
+ - FirstNonNullSelector
+ - MaxNumberLiteral
+ - MinNumberLiteral
+ - OperationWrapper
+ - OrOperation
+- new Converters:
+ - ArrayTypeConverter
+ - LiteralParser
+ - String2NumberConverter
+ - String2TimeConverter
+ - DefaultEntryConverter
+- many many new XML utility methods in XMLUtil
+- new FlatXML2BeanConverter
+- Implemented parsing of arrays in ArrayFormat
+- new BeanUtil methods
+ - findMethodsByAnnotation()
+ - getGenericInterfaceParams()
+ - findMethodsByName()
+- new class CompositeFormatter
+
+Bug fixes
+- UTF-8 support in IOUtil
+- added array support for StringConverter
+- converting null values with ArrayConverter
+- AnyMutator: auto-converting bean properties to the correct type
+- BeanUtil supports auto-conversion of invocation parameters to appropriate type
diff --git a/releasenotes/releasenotes-0.4.1.txt b/releasenotes/releasenotes-0.4.1.txt
index 810b1a7..4cb4b52 100644
--- a/releasenotes/releasenotes-0.4.1.txt
+++ b/releasenotes/releasenotes-0.4.1.txt
@@ -1,15 +1,15 @@
-release notes databene commons 0.4.1
-------------------------------------
-
-Changes
-- restructured CompositeFormatter from static utility class to instance class
-
-Enhancements
-- new methods in StringUtil class: endsWithIgnoreCase(), normalizeName() and unescape()
-- StringUtil: Added logic for null-value handling in starts/endsWithIgnoreCase()
-- AnyConverter, ToStringConverter: Added support for datePattern
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
-- 1937404 IOUtil.readProperties does not support \n \r \t
-- 1936931 LiteralParser parses 01234 as number, should be string
-- ParseUtil: catching null input in parseAssignment
+release notes databene commons 0.4.1
+------------------------------------
+
+Changes
+- restructured CompositeFormatter from static utility class to instance class
+
+Enhancements
+- new methods in StringUtil class: endsWithIgnoreCase(), normalizeName() and unescape()
+- StringUtil: Added logic for null-value handling in starts/endsWithIgnoreCase()
+- AnyConverter, ToStringConverter: Added support for datePattern
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+- 1937404 IOUtil.readProperties does not support \n \r \t
+- 1936931 LiteralParser parses 01234 as number, should be string
+- ParseUtil: catching null input in parseAssignment
diff --git a/releasenotes/releasenotes-0.4.2.txt b/releasenotes/releasenotes-0.4.2.txt
index 9050813..6429400 100644
--- a/releasenotes/releasenotes-0.4.2.txt
+++ b/releasenotes/releasenotes-0.4.2.txt
@@ -1,13 +1,13 @@
-release notes databene commons 0.4.2
-------------------------------------
-
-Changes
-- renamed Composite.setComponentValue() to setComponent()
-- renamed toArray(Class componentType, T ... values) to buildArrayOfType(Class componentType, T ... values)
-- added toArray(T ... values)
-
-Enhancements
-- new OrderedNameMap with capitalization support
-- new Long2IntegerConverter
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+release notes databene commons 0.4.2
+------------------------------------
+
+Changes
+- renamed Composite.setComponentValue() to setComponent()
+- renamed toArray(Class componentType, T ... values) to buildArrayOfType(Class componentType, T ... values)
+- added toArray(T ... values)
+
+Enhancements
+- new OrderedNameMap with capitalization support
+- new Long2IntegerConverter
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
diff --git a/releasenotes/releasenotes-0.4.3.txt b/releasenotes/releasenotes-0.4.3.txt
index d982e49..651b3ac 100644
--- a/releasenotes/releasenotes-0.4.3.txt
+++ b/releasenotes/releasenotes-0.4.3.txt
@@ -1,34 +1,34 @@
-release notes databene commons 0.4.3
-------------------------------------
-
-Summary
--------
-Bug fix release guided by crap4j.
-Now, each method with a cyclomatic complexity of 5 or more is unit-tested.
-
-Changes
-- moved DBUtil to com.rapiddweller.commons.db
-- Made UpdateFailedException and unchecked exception
-- Deprecated ArrayUtil.equals()
-- Deprecated ParseUtil.parseUnit()
-
-Enhancements
-- added HSQLUtil class
-- added runScript(), executeUpdate() and query() to DBUtil
-- Timespan: Added equals() and hashcode()
-- ArrayUtil.lastElement()
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
-- OrderedMap.equalsIgnoreOrder(): Comparison with sub set is broken
-- StringUtil.splitOnLastSeparator(): Bug fix for expressions like /a or a/
-- XMLUtil: Bug fix in getText(Element -> Node)
-- ConditionalMutator: Bug fix in exception type RuntimeException -> UpdateFailedException
-- NullsafeFormat: using NumberFormats to parse a String for a non-long number
-- TreeIterator: backward iteration
-- HTML2XML: handling malformed HTML
-- LocaleUtil: Handling 3+level locales
-- UntypedPropertyMutator: handling missing or read-only properties
-- ArrayComparator: comparing null values
-- LiteralParser: parsing dates and fractions
-- StringConverter: converting null and empty values
-- ToArrayConverter: converting null values
+release notes databene commons 0.4.3
+------------------------------------
+
+Summary
+-------
+Bug fix release guided by crap4j.
+Now, each method with a cyclomatic complexity of 5 or more is unit-tested.
+
+Changes
+- moved DBUtil to com.rapiddweller.commons.db
+- Made UpdateFailedException and unchecked exception
+- Deprecated ArrayUtil.equals()
+- Deprecated ParseUtil.parseUnit()
+
+Enhancements
+- added HSQLUtil class
+- added runScript(), executeUpdate() and query() to DBUtil
+- Timespan: Added equals() and hashcode()
+- ArrayUtil.lastElement()
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+- OrderedMap.equalsIgnoreOrder(): Comparison with sub set is broken
+- StringUtil.splitOnLastSeparator(): Bug fix for expressions like /a or a/
+- XMLUtil: Bug fix in getText(Element -> Node)
+- ConditionalMutator: Bug fix in exception type RuntimeException -> UpdateFailedException
+- NullsafeFormat: using NumberFormats to parse a String for a non-long number
+- TreeIterator: backward iteration
+- HTML2XML: handling malformed HTML
+- LocaleUtil: Handling 3+level locales
+- UntypedPropertyMutator: handling missing or read-only properties
+- ArrayComparator: comparing null values
+- LiteralParser: parsing dates and fractions
+- StringConverter: converting null and empty values
+- ToArrayConverter: converting null values
diff --git a/releasenotes/releasenotes-0.4.4.txt b/releasenotes/releasenotes-0.4.4.txt
index 8153595..3a26bf9 100644
--- a/releasenotes/releasenotes-0.4.4.txt
+++ b/releasenotes/releasenotes-0.4.4.txt
@@ -1,11 +1,11 @@
-toStringrelease notes databene commons 0.4.4
-------------------------------------
-
-Enhancements
-------------
-- BeanUtil
- - new method toString(bean)
- - explicit strictness in proprty getters
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
----------
+toStringrelease notes databene commons 0.4.4
+------------------------------------
+
+Enhancements
+------------
+- BeanUtil
+ - new method toString(bean)
+ - explicit strictness in proprty getters
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+---------
diff --git a/releasenotes/releasenotes-0.4.5.txt b/releasenotes/releasenotes-0.4.5.txt
index 6bc17e5..a086747 100644
--- a/releasenotes/releasenotes-0.4.5.txt
+++ b/releasenotes/releasenotes-0.4.5.txt
@@ -1,44 +1,44 @@
-release notes databene commons 0.4.5
-------------------------------------
-
-Changes
--------
-- NamedValueList: renamed put() to set()
-
-Enhancements
-------------
-- new StringUtil methods
- - equalsIgnoreCase()
- - replaceTokens()
-- new methods
- - Assert.notEmpty()
- - Assert.instanceOf()
- - Assert.isTrue()
- - Assert.found()
-- improved StringUtil.getChars()
-- improved namespace support in XMLUtil
-- new class NamedValueList for name-value-assignmments with non-unique names
-- new class NumberFormatConverter
-- added TimeUtil.createDefaultDateFormat()
-- new method NullSafeComparator.hashCode()
-- new method MathUtil.sumOfDigits()
-- new classes
- - ShellUtil
- - I18NSupport
- - ErrorHandler
- - SQLScriptException
-- new interfaces
- - Named
- - LogCategories
- - CharacterRangeValidator
- - StringValidator
- - ObservableBean
- - AbstractObservableBean
- - ObservableFactory
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
----------
-- ToStringConverter and CompositeFormatter fail on byte[] and char[]
-- BeanUtil.typesMatch()
-- Handling of Heavyweight sources in ConvertingIterable
+release notes databene commons 0.4.5
+------------------------------------
+
+Changes
+-------
+- NamedValueList: renamed put() to set()
+
+Enhancements
+------------
+- new StringUtil methods
+ - equalsIgnoreCase()
+ - replaceTokens()
+- new methods
+ - Assert.notEmpty()
+ - Assert.instanceOf()
+ - Assert.isTrue()
+ - Assert.found()
+- improved StringUtil.getChars()
+- improved namespace support in XMLUtil
+- new class NamedValueList for name-value-assignmments with non-unique names
+- new class NumberFormatConverter
+- added TimeUtil.createDefaultDateFormat()
+- new method NullSafeComparator.hashCode()
+- new method MathUtil.sumOfDigits()
+- new classes
+ - ShellUtil
+ - I18NSupport
+ - ErrorHandler
+ - SQLScriptException
+- new interfaces
+ - Named
+ - LogCategories
+ - CharacterRangeValidator
+ - StringValidator
+ - ObservableBean
+ - AbstractObservableBean
+ - ObservableFactory
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+---------
+- ToStringConverter and CompositeFormatter fail on byte[] and char[]
+- BeanUtil.typesMatch()
+- Handling of Heavyweight sources in ConvertingIterable
- Bug fix for SQL lines that end with white space after ;
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.4.6.txt b/releasenotes/releasenotes-0.4.6.txt
index ac7134d..d2ec617 100644
--- a/releasenotes/releasenotes-0.4.6.txt
+++ b/releasenotes/releasenotes-0.4.6.txt
@@ -1,25 +1,25 @@
-release notes databene commons 0.4.6
-------------------------------------
-
-Changes
--------
-- Renamed Nullsafe... to NullSafe...
-- Renamed PropertyMutator.getPropertyName() to getName()
-
-Enhancements
-------------
-- new classes
- - ToHashCodeConverter
- - NamedMutator
- - HeavyweightIterableAdapter
- - HeavyweightIteratorAdapter
- - AbstractValidator
- - ClassProvider, DefaultClassProvider, ClassCache
-- AnyConverter supports conversion boolean -> number (0/1)
-- new mthods
- - CollectionUtil.getCaseInsensitive(String key, Map map)
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
----------
-- Entries returned from OrderedMap.entrySet() now have the expected behavior of updating the original data on setValue()
+release notes databene commons 0.4.6
+------------------------------------
+
+Changes
+-------
+- Renamed Nullsafe... to NullSafe...
+- Renamed PropertyMutator.getPropertyName() to getName()
+
+Enhancements
+------------
+- new classes
+ - ToHashCodeConverter
+ - NamedMutator
+ - HeavyweightIterableAdapter
+ - HeavyweightIteratorAdapter
+ - AbstractValidator
+ - ClassProvider, DefaultClassProvider, ClassCache
+- AnyConverter supports conversion boolean -> number (0/1)
+- new mthods
+ - CollectionUtil.getCaseInsensitive(String key, Map map)
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+---------
+- Entries returned from OrderedMap.entrySet() now have the expected behavior of updating the original data on setValue()
- Bug fix in setting boolean properties in BeanUtils.setProperty()
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.4.8.txt b/releasenotes/releasenotes-0.4.8.txt
index 80af95a..a0147ce 100644
--- a/releasenotes/releasenotes-0.4.8.txt
+++ b/releasenotes/releasenotes-0.4.8.txt
@@ -1,14 +1,14 @@
-release notes databene commons 0.4.8
-------------------------------------
-
-Changes
--------
-Interface change of SytemInfo and VMInfo
-
-Enhancements
-------------
-Several improvements in StringUtil and IOUtil, new LogCategories
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-2687567 Error in non-latin language support
+release notes databene commons 0.4.8
+------------------------------------
+
+Changes
+-------
+Interface change of SytemInfo and VMInfo
+
+Enhancements
+------------
+Several improvements in StringUtil and IOUtil, new LogCategories
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+2687567 Error in non-latin language support
diff --git a/releasenotes/releasenotes-0.4.9-SR1.txt b/releasenotes/releasenotes-0.4.9-SR1.txt
index 10ef5a1..cd3e87d 100644
--- a/releasenotes/releasenotes-0.4.9-SR1.txt
+++ b/releasenotes/releasenotes-0.4.9-SR1.txt
@@ -1,19 +1,19 @@
-release notes databene commons 0.4.9-SR1
-----------------------------------------
-
-Summary
--------
-This is a bug fix release
-
-Improvements
-------------
-- JDBC drivers are instantiated by the context ClassLoader
-- new methods BeanUtil.createJarClassLoader() and BeanUtil.executeInJarClassLoader()
-- new method StringUtil.new method nullToEmpty()
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-- 2805254 milliseconds setting ignored in DateTimeGenerator
-- NullPointer by default JDBCDriverInfo.urlPattern
-- Bug fix in Eclipse ClassLoader exception handling in forName(),
-- Bug fix in getPropertyValue(), avoiding NullPointerException for non-strict access to non-existing properties
+release notes databene commons 0.4.9-SR1
+----------------------------------------
+
+Summary
+-------
+This is a bug fix release
+
+Improvements
+------------
+- JDBC drivers are instantiated by the context ClassLoader
+- new methods BeanUtil.createJarClassLoader() and BeanUtil.executeInJarClassLoader()
+- new method StringUtil.new method nullToEmpty()
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+- 2805254 milliseconds setting ignored in DateTimeGenerator
+- NullPointer by default JDBCDriverInfo.urlPattern
+- Bug fix in Eclipse ClassLoader exception handling in forName(),
+- Bug fix in getPropertyValue(), avoiding NullPointerException for non-strict access to non-existing properties
diff --git a/releasenotes/releasenotes-0.4.9.txt b/releasenotes/releasenotes-0.4.9.txt
index 618e5af..b706ac7 100644
--- a/releasenotes/releasenotes-0.4.9.txt
+++ b/releasenotes/releasenotes-0.4.9.txt
@@ -1,11 +1,11 @@
-release notes databene commons 0.4.9
-------------------------------------
-
-Summary
--------
-This is a bug fix release
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
+release notes databene commons 0.4.9
+------------------------------------
+
+Summary
+-------
+This is a bug fix release
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
2702433 Exception in the NumberFormatConverter
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.0.txt b/releasenotes/releasenotes-0.5.0.txt
index f263ae7..f62d10d 100644
--- a/releasenotes/releasenotes-0.5.0.txt
+++ b/releasenotes/releasenotes-0.5.0.txt
@@ -1,67 +1,67 @@
-release notes databene commons 0.5.0
-------------------------------------
-
-Summary
--------
-
-
-Improvements
-------------
-- new BeanUtil methods:
- - isIntegralNumber(className)
- - isDecimalNumber(className)
- - clone(Object)
-- new DBUtil methods:
- - logMetaData()
- - connect(JDBCConnectData)
- - queryScalarArray()
-- IOUtil: Unified close() and flush() methods to work on any Closeable and Flushable
-- new Converters
- - PrintfConverter
- - PropertyExtractor
- - String2DateFormatConverter
- - String2GregorianCalendarConverter
- - String2NumberFormatConverter
- - String2PatternConverter
- - RegexReplacer
-- new Validators
- - RegexValidator
-- new test helper class SimpleValidatorTest
-- new LoggingProxyFactory that creates logging wrappers for arbitrary classes which implement an interface
-- AnyConverter supports timePattern and timestampPattern
-- BeanUtil: new methods getFieldValue() for object attribute access
-- FeatureAccessor can read normal and static attributes
-- LiteralParser supports time literals
-- test support methods:
- - TimeUtil.runInTimeZone(Runnable)
- - TimeUtil.callInTimeZone(Callable)
- - LocaleUtil.runInLocale(Runnable)
- - LocaleUtil.callInLocale(Callable)
- - BeanUtil.runWithJarClassLoader(File, Runnable)
- - BeanUtil.callWithJarClassLoader(File, Callable)
- - SysUtil.runiWithSysProp(String, String, Runnable)
- - SysUtil.callWithSysProp(String, String, Callable)
-- new methods TimeUtil.month() ...dayOfMonth()
-- new class BoolenConverter
-- new method DBUtil.queryLong()
-- BeanUtil:
- - new method commonSuperType()
- - new method commonSubType()
-- New interfaces:
- - ContextAware, Resettable
-- New Enums:
- - ThreadSupport
-- New method NumberUtil.maxValue()
-
-
-Changes
--------
-- Replaced Heavyweight with Closeable
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-- fixed support for String-to-Class conversion in AnyConverter and StringConverter
-- Bug fixe in handling and converting Time and Timestamp values
-- 2879250 Error processing C:\\temp
+release notes databene commons 0.5.0
+------------------------------------
+
+Summary
+-------
+
+
+Improvements
+------------
+- new BeanUtil methods:
+ - isIntegralNumber(className)
+ - isDecimalNumber(className)
+ - clone(Object)
+- new DBUtil methods:
+ - logMetaData()
+ - connect(JDBCConnectData)
+ - queryScalarArray()
+- IOUtil: Unified close() and flush() methods to work on any Closeable and Flushable
+- new Converters
+ - PrintfConverter
+ - PropertyExtractor
+ - String2DateFormatConverter
+ - String2GregorianCalendarConverter
+ - String2NumberFormatConverter
+ - String2PatternConverter
+ - RegexReplacer
+- new Validators
+ - RegexValidator
+- new test helper class SimpleValidatorTest
+- new LoggingProxyFactory that creates logging wrappers for arbitrary classes which implement an interface
+- AnyConverter supports timePattern and timestampPattern
+- BeanUtil: new methods getFieldValue() for object attribute access
+- FeatureAccessor can read normal and static attributes
+- LiteralParser supports time literals
+- test support methods:
+ - TimeUtil.runInTimeZone(Runnable)
+ - TimeUtil.callInTimeZone(Callable)
+ - LocaleUtil.runInLocale(Runnable)
+ - LocaleUtil.callInLocale(Callable)
+ - BeanUtil.runWithJarClassLoader(File, Runnable)
+ - BeanUtil.callWithJarClassLoader(File, Callable)
+ - SysUtil.runiWithSysProp(String, String, Runnable)
+ - SysUtil.callWithSysProp(String, String, Callable)
+- new methods TimeUtil.month() ...dayOfMonth()
+- new class BoolenConverter
+- new method DBUtil.queryLong()
+- BeanUtil:
+ - new method commonSuperType()
+ - new method commonSubType()
+- New interfaces:
+ - ContextAware, Resettable
+- New Enums:
+ - ThreadSupport
+- New method NumberUtil.maxValue()
+
+
+Changes
+-------
+- Replaced Heavyweight with Closeable
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+- fixed support for String-to-Class conversion in AnyConverter and StringConverter
+- Bug fixe in handling and converting Time and Timestamp values
+- 2879250 Error processing C:\\temp
- Bug fix for avoiding duplicate logs
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.10.txt b/releasenotes/releasenotes-0.5.10.txt
index 35f45dc..8a25c95 100644
--- a/releasenotes/releasenotes-0.5.10.txt
+++ b/releasenotes/releasenotes-0.5.10.txt
@@ -1,6 +1,6 @@
-release notes databene commons 0.5.10
--------------------------------------
-
-Enhancements
-------------
-- created ZipUtil class
+release notes databene commons 0.5.10
+-------------------------------------
+
+Enhancements
+------------
+- created ZipUtil class
diff --git a/releasenotes/releasenotes-0.5.12.txt b/releasenotes/releasenotes-0.5.12.txt
index b5a2208..334eb87 100644
--- a/releasenotes/releasenotes-0.5.12.txt
+++ b/releasenotes/releasenotes-0.5.12.txt
@@ -1,12 +1,12 @@
-release notes databene commons 0.5.12
--------------------------------------
-
-Enhancements
-------------
-- new method CollectionUtil.formatCommaSeparatedList(List)
-- new method NameUtil.sort(List)
-- new method TimeUtil.formatDuration()
-
-Bug Fixes
----------
+release notes databene commons 0.5.12
+-------------------------------------
+
+Enhancements
+------------
+- new method CollectionUtil.formatCommaSeparatedList(List)
+- new method NameUtil.sort(List)
+- new method TimeUtil.formatDuration()
+
+Bug Fixes
+---------
- OrderedMap.values() returns reference to internal values list
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.13.txt b/releasenotes/releasenotes-0.5.13.txt
index 10f7a38..846427d 100644
--- a/releasenotes/releasenotes-0.5.13.txt
+++ b/releasenotes/releasenotes-0.5.13.txt
@@ -1,6 +1,6 @@
-release notes databene commons 0.5.13
--------------------------------------
-
-Enhancements
-------------
-- moved UI classes from Benerator's gui library to commons library
+release notes databene commons 0.5.13
+-------------------------------------
+
+Enhancements
+------------
+- moved UI classes from Benerator's gui library to commons library
diff --git a/releasenotes/releasenotes-0.5.14.txt b/releasenotes/releasenotes-0.5.14.txt
index 9e693e0..abb9689 100644
--- a/releasenotes/releasenotes-0.5.14.txt
+++ b/releasenotes/releasenotes-0.5.14.txt
@@ -1,8 +1,8 @@
-release notes databene commons 0.5.14
--------------------------------------
-
-Enhancements
-------------
-- New method NameUtil.find(List list, Filter filter)
-- New Collection classes which allow to mark each entry: MarkedList, MarkedMap
+release notes databene commons 0.5.14
+-------------------------------------
+
+Enhancements
+------------
+- New method NameUtil.find(List list, Filter filter)
+- New Collection classes which allow to mark each entry: MarkedList, MarkedMap
- New class ArrayWithIdentity
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.15.txt b/releasenotes/releasenotes-0.5.15.txt
index b188394..9a95d57 100644
--- a/releasenotes/releasenotes-0.5.15.txt
+++ b/releasenotes/releasenotes-0.5.15.txt
@@ -1,7 +1,7 @@
-release notes databene commons 0.5.15
--------------------------------------
-
-Enhancements
-------------
-- IOUtil: New methods isFileUri(String uri) and stripOffProtocolFromUri(String uri)
+release notes databene commons 0.5.15
+-------------------------------------
+
+Enhancements
+------------
+- IOUtil: New methods isFileUri(String uri) and stripOffProtocolFromUri(String uri)
- BeanUtil: getClasses() filters out inner classes
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.16.txt b/releasenotes/releasenotes-0.5.16.txt
index da1f646..fb0f687 100644
--- a/releasenotes/releasenotes-0.5.16.txt
+++ b/releasenotes/releasenotes-0.5.16.txt
@@ -1,22 +1,22 @@
-release notes databene commons 0.5.16
--------------------------------------
-
-Enhancements
-------------
-- String2DateConverter supports datetime formats without 'T'
-- new method Date TimeUtil.parse(String dateOrTimeSpec)
-- new method StrimgUtil.equalsIgnoreCase(Set, Set)
-- new class NameMap
-
-
-Changes
--------
-- Using newer libraries
- - slf4j 1.6.4
- - log4j 1.2.16
- - junit 4.10
-
-
-Bug Fixes
----------
-- NullPointerException on empty directory in FileUtil.getFileIgnoreCase()
+release notes databene commons 0.5.16
+-------------------------------------
+
+Enhancements
+------------
+- String2DateConverter supports datetime formats without 'T'
+- new method Date TimeUtil.parse(String dateOrTimeSpec)
+- new method StrimgUtil.equalsIgnoreCase(Set, Set)
+- new class NameMap
+
+
+Changes
+-------
+- Using newer libraries
+ - slf4j 1.6.4
+ - log4j 1.2.16
+ - junit 4.10
+
+
+Bug Fixes
+---------
+- NullPointerException on empty directory in FileUtil.getFileIgnoreCase()
diff --git a/releasenotes/releasenotes-0.5.18.txt b/releasenotes/releasenotes-0.5.18.txt
index a704262..72961a4 100644
--- a/releasenotes/releasenotes-0.5.18.txt
+++ b/releasenotes/releasenotes-0.5.18.txt
@@ -1,22 +1,22 @@
-release notes databene commons 0.5.18
--------------------------------------
-
-Enhancements
-------------
-- Improved serialization support: ObservableBean, Interval
-- New Swing support classes: AbstractTreeModel, SimpleDialog, ExpandOrCollapseTreeNodeAction
-- New Swing features in SwingUtil
-- New method MathUtil.isIntegralValue()
-
-
-Changes
--------
-- Upgraded code to Java 6
-- Improved use of Generics in Visitor interface
-
-
-Bug Fixes
----------
-- IndexOutOfBoundsException in SelectiveTabularIterator
-- Ambiguities in BeanUtil API
-- supporting names like "Karl Heinz", "Hans-Georg", "O'Hara" in StringUtil.normalizeName()
+release notes databene commons 0.5.18
+-------------------------------------
+
+Enhancements
+------------
+- Improved serialization support: ObservableBean, Interval
+- New Swing support classes: AbstractTreeModel, SimpleDialog, ExpandOrCollapseTreeNodeAction
+- New Swing features in SwingUtil
+- New method MathUtil.isIntegralValue()
+
+
+Changes
+-------
+- Upgraded code to Java 6
+- Improved use of Generics in Visitor interface
+
+
+Bug Fixes
+---------
+- IndexOutOfBoundsException in SelectiveTabularIterator
+- Ambiguities in BeanUtil API
+- supporting names like "Karl Heinz", "Hans-Georg", "O'Hara" in StringUtil.normalizeName()
diff --git a/releasenotes/releasenotes-0.5.19.txt b/releasenotes/releasenotes-0.5.19.txt
index 5046c70..6255605 100644
--- a/releasenotes/releasenotes-0.5.19.txt
+++ b/releasenotes/releasenotes-0.5.19.txt
@@ -1,19 +1,19 @@
-release notes databene commons 0.5.19
--------------------------------------
-
-Enhancements
-------------
-- Improved classpath support in IOUtil.isURIAvailable() and IOUtil.getResourceAsStream()
-- new method ZipUtil.printContent(File zipFile)
-
-
-Changes
--------
--
-
-
-Bug Fixes
----------
-- resource leak in FileUtil.equalContent(File, File)
-- resource leak in IOUtil.isURIAvailable(String)
+release notes databene commons 0.5.19
+-------------------------------------
+
+Enhancements
+------------
+- Improved classpath support in IOUtil.isURIAvailable() and IOUtil.getResourceAsStream()
+- new method ZipUtil.printContent(File zipFile)
+
+
+Changes
+-------
+-
+
+
+Bug Fixes
+---------
+- resource leak in FileUtil.equalContent(File, File)
+- resource leak in IOUtil.isURIAvailable(String)
- resource leak in PrintfConverter.convert(Object)
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.2.txt b/releasenotes/releasenotes-0.5.2.txt
index 2d667bd..e87ec41 100644
--- a/releasenotes/releasenotes-0.5.2.txt
+++ b/releasenotes/releasenotes-0.5.2.txt
@@ -1,7 +1,7 @@
-release notes databene commons 0.5.2
-------------------------------------
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-3006883 Read-only database accepts 'SELECT INTO'
+release notes databene commons 0.5.2
+------------------------------------
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+3006883 Read-only database accepts 'SELECT INTO'
2998010 'select into' causes exception
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.20.txt b/releasenotes/releasenotes-0.5.20.txt
index 61f79ce..679558a 100644
--- a/releasenotes/releasenotes-0.5.20.txt
+++ b/releasenotes/releasenotes-0.5.20.txt
@@ -1,19 +1,19 @@
-release notes databene commons 0.5.20
--------------------------------------
-
-Enhancements
-------------
-- Improved classpath support in IOUtil.isURIAvailable() and IOUtil.getResourceAsStream()
-- new method ZipUtil.printContent(File zipFile)
-
-
-Changes
--------
--
-
-
-Bug Fixes
----------
-- ArrayFormat renders null values as empty strings
-- Inappropriate minValue calculation for floating point types (float, double, BigDecimal)
+release notes databene commons 0.5.20
+-------------------------------------
+
+Enhancements
+------------
+- Improved classpath support in IOUtil.isURIAvailable() and IOUtil.getResourceAsStream()
+- new method ZipUtil.printContent(File zipFile)
+
+
+Changes
+-------
+-
+
+
+Bug Fixes
+---------
+- ArrayFormat renders null values as empty strings
+- Inappropriate minValue calculation for floating point types (float, double, BigDecimal)
- ToStringConverter renders Long.MAX_VALUE for BigDecimals that are greater than Long.MAX_VALUE
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.21.txt b/releasenotes/releasenotes-0.5.21.txt
index bf1a082..1153a73 100644
--- a/releasenotes/releasenotes-0.5.21.txt
+++ b/releasenotes/releasenotes-0.5.21.txt
@@ -1,35 +1,35 @@
-release notes databene commons 0.5.21
--------------------------------------
-
-
-Enhancements
-------------
-- Created Date2TimeConverter
-- New method ExceptionUtil.containsException()
-- New method FileUtil.newFile() which resolves paths like ~/data.txt
-- ElapsedTimeFormatter supports internationalization of time units
-- new method ArrayUtil.append(T[] newValues, T[] array)
-- new method BeanUtil.getTypes(Object... objects) -> Class>[]
-- New TimeUtil methods: hour(Date), minute(Date), second(Date)
-- New method: ParseUtil.parseBoolean(String s)
-- New method CollectionUtil.toListOfType()
-- OrderedNameMap:
- - Improved performance
- - Added method elementAt(int index)
-- New method SwingUtil.bindKeyToAction
-- New class NullSafeFormat
-
-
-Changes
--------
-- Deprecated class String2ConverterConverter
-- Made String2BooleanConverter more restrictive
-- ClassCache: Allowing import overrides
-- Made ContextStack an interface, moved former implementation to SimpleContextStack and removed locks
-
-
-Bug Fixes
----------
-- DependencyModel fails on self-referencing nodes with clients
-- StringUtil.splitLine() ignores empty lines in between
+release notes databene commons 0.5.21
+-------------------------------------
+
+
+Enhancements
+------------
+- Created Date2TimeConverter
+- New method ExceptionUtil.containsException()
+- New method FileUtil.newFile() which resolves paths like ~/data.txt
+- ElapsedTimeFormatter supports internationalization of time units
+- new method ArrayUtil.append(T[] newValues, T[] array)
+- new method BeanUtil.getTypes(Object... objects) -> Class>[]
+- New TimeUtil methods: hour(Date), minute(Date), second(Date)
+- New method: ParseUtil.parseBoolean(String s)
+- New method CollectionUtil.toListOfType()
+- OrderedNameMap:
+ - Improved performance
+ - Added method elementAt(int index)
+- New method SwingUtil.bindKeyToAction
+- New class NullSafeFormat
+
+
+Changes
+-------
+- Deprecated class String2ConverterConverter
+- Made String2BooleanConverter more restrictive
+- ClassCache: Allowing import overrides
+- Made ContextStack an interface, moved former implementation to SimpleContextStack and removed locks
+
+
+Bug Fixes
+---------
+- DependencyModel fails on self-referencing nodes with clients
+- StringUtil.splitLine() ignores empty lines in between
- Version info not found
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.22.txt b/releasenotes/releasenotes-0.5.22.txt
index 3296f43..6266021 100644
--- a/releasenotes/releasenotes-0.5.22.txt
+++ b/releasenotes/releasenotes-0.5.22.txt
@@ -1,8 +1,8 @@
-release notes databene commons 0.5.22
--------------------------------------
-
-
-Bug Fixes
----------
-- Windows issue: ConfigurationError: Resource not found: org\databene\commons\time\timeUnits.properties
+release notes databene commons 0.5.22
+-------------------------------------
+
+
+Bug Fixes
+---------
+- Windows issue: ConfigurationError: Resource not found: org\databene\commons\time\timeUnits.properties
- Duplicate exception stack traces when nesting ErrorHandler usage recursively
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.23.txt b/releasenotes/releasenotes-0.5.23.txt
index fb9499c..25c4260 100644
--- a/releasenotes/releasenotes-0.5.23.txt
+++ b/releasenotes/releasenotes-0.5.23.txt
@@ -1,28 +1,28 @@
-release notes databene commons 0.5.23
--------------------------------------
-
-
-Enhancements
-------------
-- new methods in class BeanUtil: getPropertyValues() and setPropertyValues()
- to set a bean's properties to the name-value-pairs of a Map
-- IOUtil.writeProperties() accepts Maps with non-String values
-- new method MathUtil.digitCount()
-- new method FileUtil.isXMLFile()
-- new class BufferedInfoPrinter
-- Added Assert methods: notNegative() and that()
-- Defined OffsetPushbackReader class
-- new method CollectionUtil.toSortedList()
-- new method TimeUtil.isLeapYear()
-- ToStringConverter supports Calendar class
-- new method ConsoleInfoPrinter.printFile(String uri)
-
-
-Changes
--------
-- Renamed MathUtil.prefixDigits() to MathUtil.prefixDigitCount()
-
-
-Bug Fixes
----------
-- Error when using BeanUtil.invoke() with varargs argument of length 0
+release notes databene commons 0.5.23
+-------------------------------------
+
+
+Enhancements
+------------
+- new methods in class BeanUtil: getPropertyValues() and setPropertyValues()
+ to set a bean's properties to the name-value-pairs of a Map
+- IOUtil.writeProperties() accepts Maps with non-String values
+- new method MathUtil.digitCount()
+- new method FileUtil.isXMLFile()
+- new class BufferedInfoPrinter
+- Added Assert methods: notNegative() and that()
+- Defined OffsetPushbackReader class
+- new method CollectionUtil.toSortedList()
+- new method TimeUtil.isLeapYear()
+- ToStringConverter supports Calendar class
+- new method ConsoleInfoPrinter.printFile(String uri)
+
+
+Changes
+-------
+- Renamed MathUtil.prefixDigits() to MathUtil.prefixDigitCount()
+
+
+Bug Fixes
+---------
+- Error when using BeanUtil.invoke() with varargs argument of length 0
diff --git a/releasenotes/releasenotes-0.5.24.txt b/releasenotes/releasenotes-0.5.24.txt
index b586db3..4a0d549 100644
--- a/releasenotes/releasenotes-0.5.24.txt
+++ b/releasenotes/releasenotes-0.5.24.txt
@@ -1,18 +1,18 @@
-release notes databene commons 0.5.24
--------------------------------------
-
-
-Enhancements
-------------
-- Mapping of Properties structures to XML files and vice-versa
-- Merging simple and XML-formed properties files
-- Created RecursiveMapIterator
-- Created Formatter and PercentageFormatter as data formatting utilities
-- TimeUtil: firstDayOfWeek(), lastDayOfWeek()
-- Implemented Timespan.dayIterator()
-
-
-Bug Fixes
----------
-- Fixed StringUtil.splitOnFirstSeparator()
-- Timespan.contains() does not include startDate and endDate
+release notes databene commons 0.5.24
+-------------------------------------
+
+
+Enhancements
+------------
+- Mapping of Properties structures to XML files and vice-versa
+- Merging simple and XML-formed properties files
+- Created RecursiveMapIterator
+- Created Formatter and PercentageFormatter as data formatting utilities
+- TimeUtil: firstDayOfWeek(), lastDayOfWeek()
+- Implemented Timespan.dayIterator()
+
+
+Bug Fixes
+---------
+- Fixed StringUtil.splitOnFirstSeparator()
+- Timespan.contains() does not include startDate and endDate
diff --git a/releasenotes/releasenotes-0.5.25.txt b/releasenotes/releasenotes-0.5.25.txt
index 44b1ba3..cedf805 100644
--- a/releasenotes/releasenotes-0.5.25.txt
+++ b/releasenotes/releasenotes-0.5.25.txt
@@ -1,17 +1,17 @@
-release notes databene commons 0.5.25
--------------------------------------
-
-Enhancements
-------------
-- Created Tag support classes: TagUtil, TagSupport, AbstractTagged
-- Created LockFile
-- Created TimeUtil.mostRecentBusinessDay()
-- New method XMLUtil.saveDocument(Document document, String encoding, FileOutputStream out)
-- Created TextIcon class
-
-
-Bug Fixes
----------
-- String2EnumConverter used Enum.toString() instead of Enum.name()
-- Avoiding NPEs in FileChooser classes
-- Bug fix: XMLUtil.format() ignores text content
+release notes databene commons 0.5.25
+-------------------------------------
+
+Enhancements
+------------
+- Created Tag support classes: TagUtil, TagSupport, AbstractTagged
+- Created LockFile
+- Created TimeUtil.mostRecentBusinessDay()
+- New method XMLUtil.saveDocument(Document document, String encoding, FileOutputStream out)
+- Created TextIcon class
+
+
+Bug Fixes
+---------
+- String2EnumConverter used Enum.toString() instead of Enum.name()
+- Avoiding NPEs in FileChooser classes
+- Bug fix: XMLUtil.format() ignores text content
diff --git a/releasenotes/releasenotes-0.5.26.txt b/releasenotes/releasenotes-0.5.26.txt
index f74ad52..d0cb1a8 100644
--- a/releasenotes/releasenotes-0.5.26.txt
+++ b/releasenotes/releasenotes-0.5.26.txt
@@ -1,17 +1,17 @@
-release notes databene commons 0.5.26
--------------------------------------
-
-Enhancements
-------------
-- Improved PropertiesFileMerger to support lists of elements with the same same
-- new method TimeUtil.julianDay(Date date)
-- new methods XMLUtil.queryNodes() and XMLUtil.query()
-- Created DoubleArrayBuilder
-- New method MathUtil.min(double... args)
-- New method GUIUtil.takeScreenshot()
-
-Bug Fixes
----------
-- XMLUtil.format()
-- LockFile: Assuring that parent directory of lock file exists
-- OrderedMap.equals()
+release notes databene commons 0.5.26
+-------------------------------------
+
+Enhancements
+------------
+- Improved PropertiesFileMerger to support lists of elements with the same same
+- new method TimeUtil.julianDay(Date date)
+- new methods XMLUtil.queryNodes() and XMLUtil.query()
+- Created DoubleArrayBuilder
+- New method MathUtil.min(double... args)
+- New method GUIUtil.takeScreenshot()
+
+Bug Fixes
+---------
+- XMLUtil.format()
+- LockFile: Assuring that parent directory of lock file exists
+- OrderedMap.equals()
diff --git a/releasenotes/releasenotes-0.5.27.txt b/releasenotes/releasenotes-0.5.27.txt
index 51f5975..fe5f602 100644
--- a/releasenotes/releasenotes-0.5.27.txt
+++ b/releasenotes/releasenotes-0.5.27.txt
@@ -1,16 +1,16 @@
-release notes databene commons 0.5.27
--------------------------------------
-
-Enhancements
-------------
-- New method TimeUtil.formatCurrentDateTime()
-- New method XMLUtil.queryString()
-
-Changes
--------
-- Unified 'required' and 'autoConvert' mechanism in PropertyMutator classes
-
-Bug Fixes
----------
-- NPE when calling BeanUtil.getPropertyDescriptor() for a non-existing property
-- Infinite recursion in ExceptionUtil.getRootCause() in case of an UnsupportedOperationException
+release notes databene commons 0.5.27
+-------------------------------------
+
+Enhancements
+------------
+- New method TimeUtil.formatCurrentDateTime()
+- New method XMLUtil.queryString()
+
+Changes
+-------
+- Unified 'required' and 'autoConvert' mechanism in PropertyMutator classes
+
+Bug Fixes
+---------
+- NPE when calling BeanUtil.getPropertyDescriptor() for a non-existing property
+- Infinite recursion in ExceptionUtil.getRootCause() in case of an UnsupportedOperationException
diff --git a/releasenotes/releasenotes-0.5.28.txt b/releasenotes/releasenotes-0.5.28.txt
index 53b6ee2..4d99483 100644
--- a/releasenotes/releasenotes-0.5.28.txt
+++ b/releasenotes/releasenotes-0.5.28.txt
@@ -1,16 +1,16 @@
-release notes databene commons 0.5.28
--------------------------------------
-
-Enhancements
-------------
-- new method NumberUtil.numberFormat()
-
-
-Changes
--------
-- redesigned PadFormat and created StringPadder Converter class
-
-
-Bug Fixes
----------
--
+release notes databene commons 0.5.28
+-------------------------------------
+
+Enhancements
+------------
+- new method NumberUtil.numberFormat()
+
+
+Changes
+-------
+- redesigned PadFormat and created StringPadder Converter class
+
+
+Bug Fixes
+---------
+-
diff --git a/releasenotes/releasenotes-0.5.29.txt b/releasenotes/releasenotes-0.5.29.txt
index 1272df9..881103f 100644
--- a/releasenotes/releasenotes-0.5.29.txt
+++ b/releasenotes/releasenotes-0.5.29.txt
@@ -1,37 +1,37 @@
-release notes databene commons 0.5.29
--------------------------------------
-
-Enhancements
-------------
-- AnyMutator: Added direct access to public attributes
-- XMLUtil: new xpath query methods:
- - applying queries to XML elements
- - maping results to lists of elements
-- Assert: new methods
- - startsWith()
- - endsWith()
-- BeanUtil: new method hasWriteableProperty()
-- XMLUtil: New methods
- - toElementArray(NodeList)
- - toElementList(NodeList)
-- Formatter: New method format(Date date, String pattern)
-- TimeUtil: new methods
- - lastDayOfMonth(Calendar)
- - midnightOf(Calendar)
-- FileUtil: new method prependFilePrefix()
-- New class XPathSupport for supporting namespaces in XPath queries
-
-
-Changes
--------
-- FormatFormatConverter: Removed special handling of null values in
-- StringUtil: normalizeSpace() now normalizes NBSPs too
-- Removed XPath query methods from XMLUtil and put them into the new class XPathUtil
-
-Bug Fixes
----------
-- handling of read-only bean property with public attribute in AnyMutator
-- NPE in NullSafeConverterProxy
-- Handling null values in PadFormat
-- IOUtil.readTextLines() trims content lines
-- IOUtil.isAbsoluteRef() breaks on references to absolute windows paths
+release notes databene commons 0.5.29
+-------------------------------------
+
+Enhancements
+------------
+- AnyMutator: Added direct access to public attributes
+- XMLUtil: new xpath query methods:
+ - applying queries to XML elements
+ - maping results to lists of elements
+- Assert: new methods
+ - startsWith()
+ - endsWith()
+- BeanUtil: new method hasWriteableProperty()
+- XMLUtil: New methods
+ - toElementArray(NodeList)
+ - toElementList(NodeList)
+- Formatter: New method format(Date date, String pattern)
+- TimeUtil: new methods
+ - lastDayOfMonth(Calendar)
+ - midnightOf(Calendar)
+- FileUtil: new method prependFilePrefix()
+- New class XPathSupport for supporting namespaces in XPath queries
+
+
+Changes
+-------
+- FormatFormatConverter: Removed special handling of null values in
+- StringUtil: normalizeSpace() now normalizes NBSPs too
+- Removed XPath query methods from XMLUtil and put them into the new class XPathUtil
+
+Bug Fixes
+---------
+- handling of read-only bean property with public attribute in AnyMutator
+- NPE in NullSafeConverterProxy
+- Handling null values in PadFormat
+- IOUtil.readTextLines() trims content lines
+- IOUtil.isAbsoluteRef() breaks on references to absolute windows paths
diff --git a/releasenotes/releasenotes-0.5.3.txt b/releasenotes/releasenotes-0.5.3.txt
index 689a3a3..d4901b8 100644
--- a/releasenotes/releasenotes-0.5.3.txt
+++ b/releasenotes/releasenotes-0.5.3.txt
@@ -1,16 +1,16 @@
-release notes databene commons 0.5.3
-------------------------------------
-0.5.3 primarily is a bug fix release
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-3028976: IllegalArgumentException on enum comparison
-3029298: Default Id generation limited to 127 elements
-3029926: Benerator does not validate descriptor files
-3029944: Benerator does not build on Windows
-3037947: Wrong handling of zero-based date calculation
-String2CharConverter does not support conversion of null values
-NumberUtil.maxValue() provides wrong results for short, int and long
-Error in constructor evaluation of BeanUtil.newInstance()
+release notes databene commons 0.5.3
+------------------------------------
+0.5.3 primarily is a bug fix release
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+3028976: IllegalArgumentException on enum comparison
+3029298: Default Id generation limited to 127 elements
+3029926: Benerator does not validate descriptor files
+3029944: Benerator does not build on Windows
+3037947: Wrong handling of zero-based date calculation
+String2CharConverter does not support conversion of null values
+NumberUtil.maxValue() provides wrong results for short, int and long
+Error in constructor evaluation of BeanUtil.newInstance()
Error in GeneratorFactory's generic getInstance() method handling
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.30.txt b/releasenotes/releasenotes-0.5.30.txt
index 7ed7f34..fe54b1b 100644
--- a/releasenotes/releasenotes-0.5.30.txt
+++ b/releasenotes/releasenotes-0.5.30.txt
@@ -1,23 +1,23 @@
-release notes databene commons 0.5.30
--------------------------------------
-
-
-Enhancements
-------------
-- StringPadder: Improved error messaging
-- PropertyMutatorFactory: Improved untyped getPropertyMutator()
-- StringUtil: new methods
- - limitLength(String text, int maxLength)
- - limitLengthWithEllipsis(String text, int maxLength)
-- FileChooser: new method setTitle(String)
-
-
-Changes
--------
-- VersionInfo:
- - separated and improved handling of name, file path and version key
- - improved error tolerance
-
-
-Bug Fixes
----------
+release notes databene commons 0.5.30
+-------------------------------------
+
+
+Enhancements
+------------
+- StringPadder: Improved error messaging
+- PropertyMutatorFactory: Improved untyped getPropertyMutator()
+- StringUtil: new methods
+ - limitLength(String text, int maxLength)
+ - limitLengthWithEllipsis(String text, int maxLength)
+- FileChooser: new method setTitle(String)
+
+
+Changes
+-------
+- VersionInfo:
+ - separated and improved handling of name, file path and version key
+ - improved error tolerance
+
+
+Bug Fixes
+---------
diff --git a/releasenotes/releasenotes-0.5.31.txt b/releasenotes/releasenotes-0.5.31.txt
index 0284f86..d3f6ff7 100644
--- a/releasenotes/releasenotes-0.5.31.txt
+++ b/releasenotes/releasenotes-0.5.31.txt
@@ -1,7 +1,7 @@
-release notes databene commons 0.5.31
--------------------------------------
-
-
-Enhancements
-------------
-- VersionInfo: Made dependency parsing optional
+release notes databene commons 0.5.31
+-------------------------------------
+
+
+Enhancements
+------------
+- VersionInfo: Made dependency parsing optional
diff --git a/releasenotes/releasenotes-0.5.32.txt b/releasenotes/releasenotes-0.5.32.txt
index db88862..1bace31 100644
--- a/releasenotes/releasenotes-0.5.32.txt
+++ b/releasenotes/releasenotes-0.5.32.txt
@@ -1,11 +1,11 @@
-release notes databene commons 0.5.32
--------------------------------------
-
-
-Enhancements
-------------
-- StringUtil: New method replaceOptionalSuffix()
-- XMLUtil:
- - new method getChildElementAtPath()
- - new method resolveEntities()
- - improved namespace support
+release notes databene commons 0.5.32
+-------------------------------------
+
+
+Enhancements
+------------
+- StringUtil: New method replaceOptionalSuffix()
+- XMLUtil:
+ - new method getChildElementAtPath()
+ - new method resolveEntities()
+ - improved namespace support
diff --git a/releasenotes/releasenotes-0.5.33.txt b/releasenotes/releasenotes-0.5.33.txt
index dcbe512..91f39e9 100644
--- a/releasenotes/releasenotes-0.5.33.txt
+++ b/releasenotes/releasenotes-0.5.33.txt
@@ -1,18 +1,18 @@
-release notes databene commons 0.5.33
--------------------------------------
-
-
-Enhancements
-------------
-- StringUtil: New method replaceOptionalSuffix()
-- XMLUtil:
- - new method getChildElementAtPath()
- - new method resolveEntities()
- - improved namespace support
-- New Class CloseWindowAction for closing a window, dialog or frame
-
-
-Bug Fixes
----------
-- FeatureAccessor: Tolerating absence of generic get(String) method
-- StringUtil.splitLines() inserts empty lines when using Windows line separator (CRLF)
+release notes databene commons 0.5.33
+-------------------------------------
+
+
+Enhancements
+------------
+- StringUtil: New method replaceOptionalSuffix()
+- XMLUtil:
+ - new method getChildElementAtPath()
+ - new method resolveEntities()
+ - improved namespace support
+- New Class CloseWindowAction for closing a window, dialog or frame
+
+
+Bug Fixes
+---------
+- FeatureAccessor: Tolerating absence of generic get(String) method
+- StringUtil.splitLines() inserts empty lines when using Windows line separator (CRLF)
diff --git a/releasenotes/releasenotes-0.5.4.txt b/releasenotes/releasenotes-0.5.4.txt
index 2fc30ce..759e41c 100644
--- a/releasenotes/releasenotes-0.5.4.txt
+++ b/releasenotes/releasenotes-0.5.4.txt
@@ -1,32 +1,32 @@
-release notes databene commons 0.5.4
-------------------------------------
-
-
-
-Enhancements
-------------
-- new DownloadCache
-- new NameUtil and NameComparator
-- IOUtil.download(URL url, File targetFile)
-- ArrayUtil.removeElement(T[] array, T item)
-- Supporting varargs in BeanUtil
-- new method StringUtil.buildPhrase()
-- new classes
- - DoubleRect
- - IntRange
- - CompressedIntSet
- - ConcurrentDecimalFormat
-- FileUtil.relativePath()
-- XMLUtil.formatText()
-- TreeLogger logs the structure of implementors of the databene TreeModel interface
-- HashCodeBuilder class facilitates the calculation of hash codes
-
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-- 3089073: Bug in Timestamp format for second resolution
-- Fixed reported path on resource file lookup error ('/')
-- Postfix error in TimestampFormatter
-- NullPointerException when trying to convert a String object to instance of Number.class
-- ConverterManager's tryToCreateFactoryConverter() method: Value() approach and to-String-conversion
+release notes databene commons 0.5.4
+------------------------------------
+
+
+
+Enhancements
+------------
+- new DownloadCache
+- new NameUtil and NameComparator
+- IOUtil.download(URL url, File targetFile)
+- ArrayUtil.removeElement(T[] array, T item)
+- Supporting varargs in BeanUtil
+- new method StringUtil.buildPhrase()
+- new classes
+ - DoubleRect
+ - IntRange
+ - CompressedIntSet
+ - ConcurrentDecimalFormat
+- FileUtil.relativePath()
+- XMLUtil.formatText()
+- TreeLogger logs the structure of implementors of the databene TreeModel interface
+- HashCodeBuilder class facilitates the calculation of hash codes
+
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+- 3089073: Bug in Timestamp format for second resolution
+- Fixed reported path on resource file lookup error ('/')
+- Postfix error in TimestampFormatter
+- NullPointerException when trying to convert a String object to instance of Number.class
+- ConverterManager's tryToCreateFactoryConverter() method: Value() approach and to-String-conversion
diff --git a/releasenotes/releasenotes-0.5.5.txt b/releasenotes/releasenotes-0.5.5.txt
index 2c4c1ad..4426248 100644
--- a/releasenotes/releasenotes-0.5.5.txt
+++ b/releasenotes/releasenotes-0.5.5.txt
@@ -1,20 +1,20 @@
-release notes databene commons 0.5.5
-------------------------------------
-
-
-
-Enhancements
-------------
-- Char2StringConverter
-- EscapingConverter
-- Number2CharConverter
-
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-- 3089196: The POM for xerces:XercesImpl:jar:2.9.1 is missing
-- 3089073: Bug in Timestamp format for second resolution
-- Cloning support of MultiConverterWrapper and ConverterChain
-- Grouping and decimal precision support in PadFormat
+release notes databene commons 0.5.5
+------------------------------------
+
+
+
+Enhancements
+------------
+- Char2StringConverter
+- EscapingConverter
+- Number2CharConverter
+
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+- 3089196: The POM for xerces:XercesImpl:jar:2.9.1 is missing
+- 3089073: Bug in Timestamp format for second resolution
+- Cloning support of MultiConverterWrapper and ConverterChain
+- Grouping and decimal precision support in PadFormat
- containsKey() and get() ignore the configured case sensitivity
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.6.txt b/releasenotes/releasenotes-0.5.6.txt
index 5d0959b..b3ff6c7 100644
--- a/releasenotes/releasenotes-0.5.6.txt
+++ b/releasenotes/releasenotes-0.5.6.txt
@@ -1,25 +1,25 @@
-release notes databene commons 0.5.6
-------------------------------------
-
-
-Enhancements
-------------
-- String2DateConverter supports custom date patterns
-- Improved string (un)escaping support in StringUtil
-- Introduced dateCapitalization and timestampCapitalization in ToStringConverter
-- MapValueIterable gives access to a Map's values through the Iterable interface
-- FileSizeComparator
-- FileSizeFormatter
-- FileTreeModel supports Visitor pattern
-- MultiVisitor wraps a collection of other visitors to be used like a single one
-- ExpressionBasedFilter, FilterExIterator, FilterExIterable
-- EmptyStringToNullConverter, NullToEmptyStringConverter
-- Interval, Intervals
-- VersionNumberParser, Versions
-- Parser interface
-- IntParser
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
+release notes databene commons 0.5.6
+------------------------------------
+
+
+Enhancements
+------------
+- String2DateConverter supports custom date patterns
+- Improved string (un)escaping support in StringUtil
+- Introduced dateCapitalization and timestampCapitalization in ToStringConverter
+- MapValueIterable gives access to a Map's values through the Iterable interface
+- FileSizeComparator
+- FileSizeFormatter
+- FileTreeModel supports Visitor pattern
+- MultiVisitor wraps a collection of other visitors to be used like a single one
+- ExpressionBasedFilter, FilterExIterator, FilterExIterable
+- EmptyStringToNullConverter, NullToEmptyStringConverter
+- Interval, Intervals
+- VersionNumberParser, Versions
+- Parser interface
+- IntParser
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
None
\ No newline at end of file
diff --git a/releasenotes/releasenotes-0.5.7.txt b/releasenotes/releasenotes-0.5.7.txt
index 2850c48..66083ce 100644
--- a/releasenotes/releasenotes-0.5.7.txt
+++ b/releasenotes/releasenotes-0.5.7.txt
@@ -1,11 +1,11 @@
-release notes databene commons 0.5.7
-------------------------------------
-
-
-Enhancements
-------------
-
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
+release notes databene commons 0.5.7
+------------------------------------
+
+
+Enhancements
+------------
+
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
diff --git a/releasenotes/releasenotes-0.5.8.txt b/releasenotes/releasenotes-0.5.8.txt
index 700885a..b744b12 100644
--- a/releasenotes/releasenotes-0.5.8.txt
+++ b/releasenotes/releasenotes-0.5.8.txt
@@ -1,19 +1,19 @@
-release notes databene commons 0.5.8
-------------------------------------
-
-
-Enhancements
-------------
-- generic version configuration and dependency verification
-- Debug switch, activatable by -Ddebug
-- Resource monitoring mechanism
-- new methods TimeUtil.firstDayOfMonth() and lastDayOfMonth()
-- Defined regular expression based filters
-- moved Expression and Arithmetic classes from Benerator to commons
-- Extended varargs support in generic invocation to methods mit multiple parameters
-- New class FilePrintWriter
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-- Unit test fail on Windows: IOUtil, StringUtil
+release notes databene commons 0.5.8
+------------------------------------
+
+
+Enhancements
+------------
+- generic version configuration and dependency verification
+- Debug switch, activatable by -Ddebug
+- Resource monitoring mechanism
+- new methods TimeUtil.firstDayOfMonth() and lastDayOfMonth()
+- Defined regular expression based filters
+- moved Expression and Arithmetic classes from Benerator to commons
+- Extended varargs support in generic invocation to methods mit multiple parameters
+- New class FilePrintWriter
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+- Unit test fail on Windows: IOUtil, StringUtil
diff --git a/releasenotes/releasenotes-0.5.9.txt b/releasenotes/releasenotes-0.5.9.txt
index 0119a36..b751012 100644
--- a/releasenotes/releasenotes-0.5.9.txt
+++ b/releasenotes/releasenotes-0.5.9.txt
@@ -1,21 +1,21 @@
-release notes databene commons 0.5.9
-------------------------------------
-
-
-Enhancements
-------------
-- new NumberUtil methods: isLimited(numberType), minValue(numberType)
-- new method ConverterManager.convertAll(Collection sourceValues, Converter converter)
-- new Interval properties min, minInclusive, max, maxInclusive
-- new method StringUtil.quoteIfNotNull()
-- new class ConditionalConverter
-- Added TimeUtil.addDays(), addMonths(), addYears(), midnightOf()
-- new Validator classes:
- - SubStringValidator
- - PrefixValidator
- - SuffixValidator
-
-
-Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
---------------------------------------------------------------------------------------------
-- Unit tests fail on Windows: IOUtil, StringUtil
+release notes databene commons 0.5.9
+------------------------------------
+
+
+Enhancements
+------------
+- new NumberUtil methods: isLimited(numberType), minValue(numberType)
+- new method ConverterManager.convertAll(Collection sourceValues, Converter converter)
+- new Interval properties min, minInclusive, max, maxInclusive
+- new method StringUtil.quoteIfNotNull()
+- new class ConditionalConverter
+- Added TimeUtil.addDays(), addMonths(), addYears(), midnightOf()
+- new Validator classes:
+ - SubStringValidator
+ - PrefixValidator
+ - SuffixValidator
+
+
+Bug fixes (find the tracker at http://sourceforge.net/tracker/?group_id=222964&atid=1057386)
+--------------------------------------------------------------------------------------------
+- Unit tests fail on Windows: IOUtil, StringUtil
diff --git a/releasenotes/releasenotes-1.0.0.txt b/releasenotes/releasenotes-1.0.0.txt
index 26a5c55..234ce1d 100644
--- a/releasenotes/releasenotes-1.0.0.txt
+++ b/releasenotes/releasenotes-1.0.0.txt
@@ -1,17 +1,17 @@
-release notes databene commons 1.0.0
-------------------------------------
-
-
-Enhancements
-------------
-- Assert Class: New method notEmpty(Object[] array, String message)
-- AnyMutator creates missing property path nodes on the fly
-- Created facility for converting arrays of property values to JavaBeans: PropertyArray2JavaBeanConverter
-
-
-Changes
--------
-
-
-Bug Fixes
----------
+release notes databene commons 1.0.0
+------------------------------------
+
+
+Enhancements
+------------
+- Assert Class: New method notEmpty(Object[] array, String message)
+- AnyMutator creates missing property path nodes on the fly
+- Created facility for converting arrays of property values to JavaBeans: PropertyArray2JavaBeanConverter
+
+
+Changes
+-------
+
+
+Bug Fixes
+---------
diff --git a/releasenotes/releasenotes-1.0.1.txt b/releasenotes/releasenotes-1.0.1.txt
index 6c0d15d..7be0a51 100644
--- a/releasenotes/releasenotes-1.0.1.txt
+++ b/releasenotes/releasenotes-1.0.1.txt
@@ -1,18 +1,18 @@
-release notes databene commons 1.0.1
-------------------------------------
-
-
-Enhancements
-------------
-- new method StringUtil.trimmedEmptyToNull(String)
-- Added precondition checks to PropertyArray2JavaBeanConverter's constructor
-
-Changes
--------
-
-
-Bug Fixes
----------
-- NPE in FeatureAccessor.getValue() when querying public attribute which is also available as property without reader method
-- PropertyArray2JavaBeanConverter.haveTargetObject() recreates and replaces existing objects
+release notes databene commons 1.0.1
+------------------------------------
+
+
+Enhancements
+------------
+- new method StringUtil.trimmedEmptyToNull(String)
+- Added precondition checks to PropertyArray2JavaBeanConverter's constructor
+
+Changes
+-------
+
+
+Bug Fixes
+---------
+- NPE in FeatureAccessor.getValue() when querying public attribute which is also available as property without reader method
+- PropertyArray2JavaBeanConverter.haveTargetObject() recreates and replaces existing objects
- String2DateConverter does not map a whitespace-only strings to an empty (null) Date object
\ No newline at end of file
diff --git a/releasenotes/releasenotes-1.0.10.txt b/releasenotes/releasenotes-1.0.10.txt
index b5efb6a..ab5b848 100644
--- a/releasenotes/releasenotes-1.0.10.txt
+++ b/releasenotes/releasenotes-1.0.10.txt
@@ -1,30 +1,30 @@
-release notes databene commons 1.0.10
--------------------------------------
-
-
-Enhancements
-------------
-- New methods in class XMLUtil:
- - formatStartTag(): Renders a start tag as string
- - getChildComments(Node parent): provides the comments under a given node
- - getParentNode(Node node): determines the parent node for different XML related Node classes
- - xpathTo(Node node): calculates an xpath from the document root to the node using indexes like /root/item[3]
- - nodePathTo(Node node): provides an array of Node objects from the root document to the node itself
-- New method XPathUtil.isValidXPath(String expression)
-- New method FileHistory.addFileAndSave(File file)
-- New class MethodCallAction
-- New class SquareButton
-- New class TextDialog
-- New class TextOverlayIcon
-- New methods in SwingUtil:
- - getDirectoryIcon()
- - getHardDriveIcon()
-
-Changes
--------
-
-
-Bug Fixes
----------
-- Improved handling of different Node types in class XMLNode2StringConverter
+release notes databene commons 1.0.10
+-------------------------------------
+
+
+Enhancements
+------------
+- New methods in class XMLUtil:
+ - formatStartTag(): Renders a start tag as string
+ - getChildComments(Node parent): provides the comments under a given node
+ - getParentNode(Node node): determines the parent node for different XML related Node classes
+ - xpathTo(Node node): calculates an xpath from the document root to the node using indexes like /root/item[3]
+ - nodePathTo(Node node): provides an array of Node objects from the root document to the node itself
+- New method XPathUtil.isValidXPath(String expression)
+- New method FileHistory.addFileAndSave(File file)
+- New class MethodCallAction
+- New class SquareButton
+- New class TextDialog
+- New class TextOverlayIcon
+- New methods in SwingUtil:
+ - getDirectoryIcon()
+ - getHardDriveIcon()
+
+Changes
+-------
+
+
+Bug Fixes
+---------
+- Improved handling of different Node types in class XMLNode2StringConverter
- Fixed y-position of text in TextIcon class
\ No newline at end of file
diff --git a/releasenotes/releasenotes-1.0.11.txt b/releasenotes/releasenotes-1.0.11.txt
index e424f49..96ea562 100644
--- a/releasenotes/releasenotes-1.0.11.txt
+++ b/releasenotes/releasenotes-1.0.11.txt
@@ -1,23 +1,23 @@
-release notes databene commons 1.0.11
--------------------------------------
-
-
-Enhancements
-------------
-- Defined the generic classes Factory and Consumer
-- Defined ConsumerAction for generic Swing support of processing a predefined element
-- new method Assert.lessOrEqual()
-- Created ClassComboBox and ClassListCellRenderer for class selection in Swing
-- Created RecentFilesMenu and RecentFilesPopupButton for accessing a file history in Swing
-- New methods for transparent button creation in SwingUtil
-- Created Swing XPathField to entering and validating an XPath expression
-- Created XmlNodeTableCellRenderer for rendering object of type org.w3c.dom.Node and its child classes in Swing table cells
-
-Changes
--------
-- FileHistory: Presenting newest files first in the history and set the maximum supported history length to 50
-
-
-Bug Fixes
----------
+release notes databene commons 1.0.11
+-------------------------------------
+
+
+Enhancements
+------------
+- Defined the generic classes Factory and Consumer
+- Defined ConsumerAction for generic Swing support of processing a predefined element
+- new method Assert.lessOrEqual()
+- Created ClassComboBox and ClassListCellRenderer for class selection in Swing
+- Created RecentFilesMenu and RecentFilesPopupButton for accessing a file history in Swing
+- New methods for transparent button creation in SwingUtil
+- Created Swing XPathField to entering and validating an XPath expression
+- Created XmlNodeTableCellRenderer for rendering object of type org.w3c.dom.Node and its child classes in Swing table cells
+
+Changes
+-------
+- FileHistory: Presenting newest files first in the history and set the maximum supported history length to 50
+
+
+Bug Fixes
+---------
- Restricted the stored history length
\ No newline at end of file
diff --git a/releasenotes/releasenotes-1.0.12.txt b/releasenotes/releasenotes-1.0.12.txt
index 2cb0984..80317a5 100644
--- a/releasenotes/releasenotes-1.0.12.txt
+++ b/releasenotes/releasenotes-1.0.12.txt
@@ -1,21 +1,21 @@
-release notes databene commons 1.0.12
--------------------------------------
-
-
-Enhancements
-------------
-- Defined Assert.notZero()
-- Added method TimeUtil.nthDayOfWeekInMonth()
-- Created RingBuffer class
-- Created class DoubleRingBuffer
-- String2BooleanConverter now can configured with individual aliases for true and false as well as for case sensitivity
-- Added method XMLUtil.String[] getTexts(Element[] nodes)
-
-Changes
--------
--
-
-
-Bug Fixes
----------
-- Fixed generics use in CollectionUtil.toArray(Collection extends T> source)
+release notes databene commons 1.0.12
+-------------------------------------
+
+
+Enhancements
+------------
+- Defined Assert.notZero()
+- Added method TimeUtil.nthDayOfWeekInMonth()
+- Created RingBuffer class
+- Created class DoubleRingBuffer
+- String2BooleanConverter now can configured with individual aliases for true and false as well as for case sensitivity
+- Added method XMLUtil.String[] getTexts(Element[] nodes)
+
+Changes
+-------
+-
+
+
+Bug Fixes
+---------
+- Fixed generics use in CollectionUtil.toArray(Collection extends T> source)
diff --git a/releasenotes/releasenotes-1.0.2.txt b/releasenotes/releasenotes-1.0.2.txt
index 3e4b4e5..4e1384a 100644
--- a/releasenotes/releasenotes-1.0.2.txt
+++ b/releasenotes/releasenotes-1.0.2.txt
@@ -1,15 +1,15 @@
-release notes databene commons 1.0.2
-------------------------------------
-
-
-Enhancements
-------------
-- Checking preconditions in AnyMutator's constructor
-- Created tests for PropertyArray2JavaBeanConverter
-
-Changes
--------
-
-
-Bug Fixes
----------
+release notes databene commons 1.0.2
+------------------------------------
+
+
+Enhancements
+------------
+- Checking preconditions in AnyMutator's constructor
+- Created tests for PropertyArray2JavaBeanConverter
+
+Changes
+-------
+
+
+Bug Fixes
+---------
diff --git a/releasenotes/releasenotes-1.0.3.txt b/releasenotes/releasenotes-1.0.3.txt
index 61a0dd3..8ca8d5d 100644
--- a/releasenotes/releasenotes-1.0.3.txt
+++ b/releasenotes/releasenotes-1.0.3.txt
@@ -1,15 +1,15 @@
-release notes databene commons 1.0.3
-------------------------------------
-
-
-Enhancements
-------------
-
-
-Changes
--------
-
-
-Bug Fixes
----------
-- ArrayIndexOutOfBoundsException in PropertyArray2JavaBeanConverter.convert() if propertyArray is too short
+release notes databene commons 1.0.3
+------------------------------------
+
+
+Enhancements
+------------
+
+
+Changes
+-------
+
+
+Bug Fixes
+---------
+- ArrayIndexOutOfBoundsException in PropertyArray2JavaBeanConverter.convert() if propertyArray is too short
diff --git a/releasenotes/releasenotes-1.0.4.txt b/releasenotes/releasenotes-1.0.4.txt
index b95600d..b1208ea 100644
--- a/releasenotes/releasenotes-1.0.4.txt
+++ b/releasenotes/releasenotes-1.0.4.txt
@@ -1,15 +1,15 @@
-release notes databene commons 1.0.4
-------------------------------------
-
-
-Enhancements
-------------
-
-
-Changes
--------
-
-
-Bug Fixes
----------
-- SubstringExtractor fails on short strings
+release notes databene commons 1.0.4
+------------------------------------
+
+
+Enhancements
+------------
+
+
+Changes
+-------
+
+
+Bug Fixes
+---------
+- SubstringExtractor fails on short strings
diff --git a/releasenotes/releasenotes-1.0.5.txt b/releasenotes/releasenotes-1.0.5.txt
index 9a5b89d..3b1abc5 100644
--- a/releasenotes/releasenotes-1.0.5.txt
+++ b/releasenotes/releasenotes-1.0.5.txt
@@ -1,18 +1,18 @@
-release notes databene commons 1.0.5
-------------------------------------
-
-
-Enhancements
-------------
-- Introduced ByteArray class
-
-
-Changes
--------
-
-
-Bug Fixes
----------
-- NullPointerException in FileUtil.deleteDirectory() when deleting empty directories
-- SpeechUtil speaks German on a German Mac OS X Yosemite
+release notes databene commons 1.0.5
+------------------------------------
+
+
+Enhancements
+------------
+- Introduced ByteArray class
+
+
+Changes
+-------
+
+
+Bug Fixes
+---------
+- NullPointerException in FileUtil.deleteDirectory() when deleting empty directories
+- SpeechUtil speaks German on a German Mac OS X Yosemite
- ObservableFactoryTest fails on Java 1.8
\ No newline at end of file
diff --git a/releasenotes/releasenotes-1.0.6.txt b/releasenotes/releasenotes-1.0.6.txt
index e66f6d8..87ee2da 100644
--- a/releasenotes/releasenotes-1.0.6.txt
+++ b/releasenotes/releasenotes-1.0.6.txt
@@ -1,31 +1,31 @@
-release notes databene commons 1.0.6
-------------------------------------
-
-
-Enhancements
-------------
-- New method XMLUtil.format(Document)
-- Tolerating non-version entries in version.properties
-- New methods in TimeUtil:
- - nextBusinessDay()
- - indexOfDate(Date, Date[])
-- New class ConverterBasedFormat Format implementation that uses a to-String-Converter for formatting objects
-- Created IntArrayBuilder
-- CollectionUtil.formatCommaSeparatedList() now supports arbitrary collections
-- New Assertions: Assert.negative() and Assert.notEquals()
-- New method BeanUtil.getRWPropertyValues()New method BeanUtil.getRWPropertyValues()
-- new FileUtil methods: read/writeTextFileContent()
-- new method: IOUtil.encodeUrl()
-- new method NameUtil.findByName()
-- new Timespan factory methods: Timespan.recentDays(int) & Timespan.futureDays(int)
-- SwingUtil: new methods semiTransparentColor(Color) and applyAlpha(Color, int)
-- Created XMLNode2StringConverter and using it in ToStringConverter
-
-Changes
--------
-- Using File object for LockFile instead of a String (with a path)
-- XPathUtil: Simplified existing methods, cleaned up and generified interface
-
-Bug Fixes
----------
+release notes databene commons 1.0.6
+------------------------------------
+
+
+Enhancements
+------------
+- New method XMLUtil.format(Document)
+- Tolerating non-version entries in version.properties
+- New methods in TimeUtil:
+ - nextBusinessDay()
+ - indexOfDate(Date, Date[])
+- New class ConverterBasedFormat Format implementation that uses a to-String-Converter for formatting objects
+- Created IntArrayBuilder
+- CollectionUtil.formatCommaSeparatedList() now supports arbitrary collections
+- New Assertions: Assert.negative() and Assert.notEquals()
+- New method BeanUtil.getRWPropertyValues()New method BeanUtil.getRWPropertyValues()
+- new FileUtil methods: read/writeTextFileContent()
+- new method: IOUtil.encodeUrl()
+- new method NameUtil.findByName()
+- new Timespan factory methods: Timespan.recentDays(int) & Timespan.futureDays(int)
+- SwingUtil: new methods semiTransparentColor(Color) and applyAlpha(Color, int)
+- Created XMLNode2StringConverter and using it in ToStringConverter
+
+Changes
+-------
+- Using File object for LockFile instead of a String (with a path)
+- XPathUtil: Simplified existing methods, cleaned up and generified interface
+
+Bug Fixes
+---------
- SplitUtil.trimAndSplit() performed uppercase transformations
\ No newline at end of file
diff --git a/releasenotes/releasenotes-1.0.7.txt b/releasenotes/releasenotes-1.0.7.txt
index 59ee331..fa34f24 100644
--- a/releasenotes/releasenotes-1.0.7.txt
+++ b/releasenotes/releasenotes-1.0.7.txt
@@ -1,25 +1,25 @@
-release notes databene commons 1.0.7
-------------------------------------
-
-
-Enhancements
-------------
-- new convenience methods for calculations with nullable Doubles (which count as 0):
- - Double nullableProduct(Double... factors)
- - Double nullableDivision(Double dividend, Double... divisors)
- - Double nullableSum(Double... summands)
- - Double nullableSubtraction(Double minuend, Double... subtrahends)
-- NullSafeFormat: supporting null as source argument in parseObject()
-
-
-Changes
--------
-- UntypedPropertyAccessor: Made propertyType default to null
-
-
-Bug Fixes
----------
-- Workaround for JDK bug http://bugs.java.com/view_bug.do?bug_id=8016153
-- PropertyGraphAccessor breaks if intermediate property node resolves to null
-- TypedAccessorChain breaks if intermediate result is null
+release notes databene commons 1.0.7
+------------------------------------
+
+
+Enhancements
+------------
+- new convenience methods for calculations with nullable Doubles (which count as 0):
+ - Double nullableProduct(Double... factors)
+ - Double nullableDivision(Double dividend, Double... divisors)
+ - Double nullableSum(Double... summands)
+ - Double nullableSubtraction(Double minuend, Double... subtrahends)
+- NullSafeFormat: supporting null as source argument in parseObject()
+
+
+Changes
+-------
+- UntypedPropertyAccessor: Made propertyType default to null
+
+
+Bug Fixes
+---------
+- Workaround for JDK bug http://bugs.java.com/view_bug.do?bug_id=8016153
+- PropertyGraphAccessor breaks if intermediate property node resolves to null
+- TypedAccessorChain breaks if intermediate result is null
- ParseUtil.isNMToken() allows '.' and '-' as first character
\ No newline at end of file
diff --git a/releasenotes/releasenotes-1.0.8.txt b/releasenotes/releasenotes-1.0.8.txt
index febbb73..34dd91d 100644
--- a/releasenotes/releasenotes-1.0.8.txt
+++ b/releasenotes/releasenotes-1.0.8.txt
@@ -1,15 +1,15 @@
-release notes databene commons 1.0.8
-------------------------------------
-
-
-Enhancements
-------------
-- New convenience method SystemInfo.getCurrentDirFile()
-- Implemented FileHistory mechanism
-
-Changes
--------
-
-
-Bug Fixes
----------
+release notes databene commons 1.0.8
+------------------------------------
+
+
+Enhancements
+------------
+- New convenience method SystemInfo.getCurrentDirFile()
+- Implemented FileHistory mechanism
+
+Changes
+-------
+
+
+Bug Fixes
+---------
diff --git a/releasenotes/releasenotes-1.0.9.txt b/releasenotes/releasenotes-1.0.9.txt
index 5ac1651..47d8a26 100644
--- a/releasenotes/releasenotes-1.0.9.txt
+++ b/releasenotes/releasenotes-1.0.9.txt
@@ -1,17 +1,17 @@
-release notes databene commons 1.0.9
-------------------------------------
-
-
-Enhancements
-------------
-- New JTextField Actions:
- - CopyFromTextFieldAction
- - PasteToTextFieldAction
-
-
-Changes
--------
-
-
-Bug Fixes
----------
+release notes databene commons 1.0.9
+------------------------------------
+
+
+Enhancements
+------------
+- New JTextField Actions:
+ - CopyFromTextFieldAction
+ - PasteToTextFieldAction
+
+
+Changes
+-------
+
+
+Bug Fixes
+---------
diff --git a/src/main/assembly/dist-assembly.xml b/src/main/assembly/dist-assembly.xml
index cb29fb1..cf52293 100644
--- a/src/main/assembly/dist-assembly.xml
+++ b/src/main/assembly/dist-assembly.xml
@@ -1,75 +1,75 @@
-
- dist
-
- zip
- tar.gz
-
- true
-
-
-
-
- /
-
- LICENSE.TXT
-
-
-
-
- target/site/apidocs
- doc/api
-
- __MACOSX
-
-
-
-
- src/main/java
- src
-
- __MACOSX
-
-
-
- src/main/resources
- src
-
- __MACOSX
-
-
-
-
- src/test/java
- test
-
- __MACOSX
-
-
-
- src/test/resources
- test
-
- __MACOSX
-
-
-
- target
- lib
-
- *.jar
-
-
- *-sources.jar
- __MACOSX
-
-
-
-
-
-
- false
- lib
- false
-
-
+
+ dist
+
+ zip
+ tar.gz
+
+ true
+
+
+
+
+ /
+
+ LICENSE.TXT
+
+
+
+
+ target/site/apidocs
+ doc/api
+
+ __MACOSX
+
+
+
+
+ src/main/java
+ src
+
+ __MACOSX
+
+
+
+ src/main/resources
+ src
+
+ __MACOSX
+
+
+
+
+ src/test/java
+ test
+
+ __MACOSX
+
+
+
+ src/test/resources
+ test
+
+ __MACOSX
+
+
+
+ target
+ lib
+
+ *.jar
+
+
+ *-sources.jar
+ __MACOSX
+
+
+
+
+
+
+ false
+ lib
+ false
+
+
\ No newline at end of file
diff --git a/src/main/java/com/rapiddweller/common/Accessor.java b/src/main/java/com/rapiddweller/common/Accessor.java
index ec2dbae..e5b51bd 100644
--- a/src/main/java/com/rapiddweller/common/Accessor.java
+++ b/src/main/java/com/rapiddweller/common/Accessor.java
@@ -12,16 +12,24 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.rapiddweller.common;
/**
* Models an object that queries an object of type C for an object of type V.
* Created: 07.01.2005 11:49:23
+ *
* @param the object type to access
* @param the type of the value to get from the object
- * @since 0.1
* @author Volker Bergmann
+ * @since 0.1
*/
public interface Accessor {
- V getValue(C target);
+ /**
+ * Gets value.
+ *
+ * @param target the target
+ * @return the value
+ */
+ V getValue(C target);
}
diff --git a/src/main/java/com/rapiddweller/common/ArrayBuilder.java b/src/main/java/com/rapiddweller/common/ArrayBuilder.java
index 4f5118e..7726b76 100644
--- a/src/main/java/com/rapiddweller/common/ArrayBuilder.java
+++ b/src/main/java/com/rapiddweller/common/ArrayBuilder.java
@@ -12,110 +12,171 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.rapiddweller.common;
-import java.lang.reflect.Array;
+package com.rapiddweller.common;
import com.rapiddweller.common.converter.ToStringConverter;
+import java.lang.reflect.Array;
+
/**
* Helper class for building arrays.
+ *
* @param the component type of the array
* @author Volker Bergmann
* @since 0.2.04
*/
public class ArrayBuilder {
-
- private static final int DEFAULT_INITIAL_CAPACITY = 10;
-
- private static final Escalator escalator = new LoggerEscalator();
-
- private final Class componentType;
- private E[] buffer;
- private int elementCount;
-
- public ArrayBuilder(Class componentType) {
- this(componentType, DEFAULT_INITIAL_CAPACITY);
- }
-
- public ArrayBuilder(Class componentType, int initialCapacity) {
- this.componentType = componentType;
- this.buffer = createBuffer(initialCapacity);
- }
- /** @deprecated replaced with add(Element)
- * @param element the element to append
- * @return this */
- @Deprecated
- public ArrayBuilder append(E element) {
- escalator.escalate(getClass().getName() + ".append() is deprecated, please use the add() method",
- getClass(), null);
- return add(element);
+ private static final int DEFAULT_INITIAL_CAPACITY = 10;
+
+ private static final Escalator escalator = new LoggerEscalator();
+
+ private final Class componentType;
+ private E[] buffer;
+ private int elementCount;
+
+ /**
+ * Instantiates a new Array builder.
+ *
+ * @param componentType the component type
+ */
+ public ArrayBuilder(Class componentType) {
+ this(componentType, DEFAULT_INITIAL_CAPACITY);
+ }
+
+ /**
+ * Instantiates a new Array builder.
+ *
+ * @param componentType the component type
+ * @param initialCapacity the initial capacity
+ */
+ public ArrayBuilder(Class componentType, int initialCapacity) {
+ this.componentType = componentType;
+ this.buffer = createBuffer(initialCapacity);
+ }
+
+ /**
+ * Append array builder.
+ *
+ * @param element the element to append
+ * @return this array builder
+ * @deprecated replaced with add(Element)
+ */
+ @Deprecated
+ public ArrayBuilder append(E element) {
+ escalator.escalate(getClass().getName() + ".append() is deprecated, please use the add() method",
+ getClass(), null);
+ return add(element);
+ }
+
+ /**
+ * Add array builder.
+ *
+ * @param element the element
+ * @return the array builder
+ */
+ public ArrayBuilder add(E element) {
+ if (buffer == null) {
+ throw new UnsupportedOperationException("ArrayBuilder cannot be reused after invoking toArray()");
}
-
- public ArrayBuilder add(E element) {
- if (buffer == null)
- throw new UnsupportedOperationException("ArrayBuilder cannot be reused after invoking toArray()");
- if (elementCount >= buffer.length - 1) {
- E[] newBuffer = createBuffer(buffer.length * 2);
- System.arraycopy(buffer, 0, newBuffer, 0, buffer.length);
- buffer = newBuffer;
- }
- buffer[elementCount++] = element;
- return this;
+ if (elementCount >= buffer.length - 1) {
+ E[] newBuffer = createBuffer(buffer.length * 2);
+ System.arraycopy(buffer, 0, newBuffer, 0, buffer.length);
+ buffer = newBuffer;
}
-
- @SafeVarargs
- public final void addAllIfNotContained(E... elements) {
- for (E element : elements)
- addIfNotContained(element);
- }
-
- public void addIfNotContained(E element) {
- if (!contains(element))
- add(element);
- }
-
- public boolean contains(E element) {
- for (int i = 0; i < elementCount; i++)
- if (NullSafeComparator.equals(buffer[i], element))
- return true;
- return false;
- }
-
- public void addAll(E[] elements) {
- for (E element : elements)
- add(element);
+ buffer[elementCount++] = element;
+ return this;
+ }
+
+ /**
+ * Add all if not contained.
+ *
+ * @param elements the elements
+ */
+ @SafeVarargs
+ public final void addAllIfNotContained(E... elements) {
+ for (E element : elements) {
+ addIfNotContained(element);
}
-
- public E[] toArray() {
- E[] result = ArrayUtil.newInstance(componentType, elementCount);
- System.arraycopy(buffer, 0, result, 0, elementCount);
- elementCount = 0;
- buffer = null;
- return result;
+ }
+
+ /**
+ * Add if not contained.
+ *
+ * @param element the element
+ */
+ public void addIfNotContained(E element) {
+ if (!contains(element)) {
+ add(element);
}
-
- public int size() {
- return elementCount;
+ }
+
+ /**
+ * Contains boolean.
+ *
+ * @param element the element
+ * @return the boolean
+ */
+ public boolean contains(E element) {
+ for (int i = 0; i < elementCount; i++) {
+ if (NullSafeComparator.equals(buffer[i], element)) {
+ return true;
+ }
}
-
- @Override
- public String toString() {
- StringBuilder builder = new StringBuilder();
- for (int i = 0; i < elementCount; i++) {
- if (i > 0)
- builder.append(", ");
- builder.append(ToStringConverter.convert(buffer[i], "[NULL]"));
- }
- return builder.toString();
+ return false;
+ }
+
+ /**
+ * Add all.
+ *
+ * @param elements the elements
+ */
+ public void addAll(E[] elements) {
+ for (E element : elements) {
+ add(element);
}
+ }
+
+ /**
+ * To array e [ ].
+ *
+ * @return the e [ ]
+ */
+ public E[] toArray() {
+ E[] result = ArrayUtil.newInstance(componentType, elementCount);
+ System.arraycopy(buffer, 0, result, 0, elementCount);
+ elementCount = 0;
+ buffer = null;
+ return result;
+ }
+
+ /**
+ * Size int.
+ *
+ * @return the int
+ */
+ public int size() {
+ return elementCount;
+ }
- // private helpers -------------------------------------------------------------------------------------------------
-
- @SuppressWarnings("unchecked")
- private E[] createBuffer(int initialCapacity) {
- return (E[]) Array.newInstance(componentType, initialCapacity);
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ for (int i = 0; i < elementCount; i++) {
+ if (i > 0) {
+ builder.append(", ");
+ }
+ builder.append(ToStringConverter.convert(buffer[i], "[NULL]"));
}
+ return builder.toString();
+ }
+
+ // private helpers -------------------------------------------------------------------------------------------------
+
+ @SuppressWarnings("unchecked")
+ private E[] createBuffer(int initialCapacity) {
+ return (E[]) Array.newInstance(componentType, initialCapacity);
+ }
}
diff --git a/src/main/java/com/rapiddweller/common/ArrayFormat.java b/src/main/java/com/rapiddweller/common/ArrayFormat.java
index bdd2c1c..8c6d217 100644
--- a/src/main/java/com/rapiddweller/common/ArrayFormat.java
+++ b/src/main/java/com/rapiddweller/common/ArrayFormat.java
@@ -12,170 +12,307 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
package com.rapiddweller.common;
+import com.rapiddweller.common.converter.AnyConverter;
+import com.rapiddweller.common.converter.ToStringConverter;
+
import java.io.IOException;
import java.lang.reflect.Array;
import java.text.FieldPosition;
import java.text.Format;
import java.text.ParsePosition;
-import com.rapiddweller.common.converter.AnyConverter;
-import com.rapiddweller.common.converter.ToStringConverter;
-
/**
* java.lang.text.Format implementation for formatting and parsing arrays.
* Created: 20.06.2007 07:04:37
+ *
* @author Volker Bergmann
*/
public class ArrayFormat extends Format {
- // defaults --------------------------------------------------------------------------------------------------------
+ // defaults --------------------------------------------------------------------------------------------------------
- private static final long serialVersionUID = 290320869220307493L;
-
- private static final String DEFAULT_SEPARATOR = ", ";
- private static final Converter