Editing Commons.unkrig.de

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 1: Line 1:
<meta name="keywords" content="versatile, library, java, commons"></meta>
<meta name="keywords" content="versatile, library, java, commons"></meta>
<meta name="description" content="A versatile library that implements many useful container and utility classes"></meta>
<meta name="description" content="A versatile library that implements many useful container and utility classes"></meta>
<tt>de.unkrig.commons</tt> is a versatile Java&trade; library that implements many useful container and utility classes.
<tt>de.unkrig.commons</tt> is a versatile Java&trade; library that implements many useful container and utility classes
It extends and integrates seamlessly with the standard JDK library.


== Overview ==
== Overview ==
Line 15: Line 14:


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-asm/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-asm/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&e=pom Maven POM]
=== commons-doclet ===
Helper classes that are useful for those who write [http://docs.oracle.com/javase/8/docs/technotes/guides/javadoc/doclet/overview.html doclets].
''Resources:''
[http://commons.unkrig.de/commons-asm/apidocs/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-asm&v=LATEST&e=pom Maven POM]


Line 33: Line 21:


Functionality for
Functionality for
[http://commons.unkrig.de/commons-file/apidocs/index.html?de/unkrig/commons/file/fileprocessing/package-summary.html processing]
[http://commons.unkrig.de/javadoc/commons-file/index.html?de/unkrig/commons/file/fileprocessing/package-summary.html processing]
or
or
[http://commons.unkrig.de/commons-file/apidocs/index.html?de/unkrig/commons/file/filetransformation/package-summary.html transforming]
[http://commons.unkrig.de/javadoc/commons-file/index.html?de/unkrig/commons/file/filetransformation/package-summary.html transforming]
trees of directories, files, compressed and archive files, and even nested compressed and archive files. Supports more than a dozen compression and archive formats.
trees of directories, files, compressed and archive files, and even nested compressed and archive files. Supports more than a dozen compression and archive formats.


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-file/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-file/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-file&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-file&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-file&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-file&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-file&v=LATEST&e=pom Maven POM]


=== commons-io ===
=== commons-io ===


Functionality around byte streams and readers/writers, e.g. for converting a byte stream into a hex dump, or formatting an XML document.
Functionality around byte streams and readers/writers, e.g. for converting a byte stream into a hex dump, or formatting an XML document


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-io/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-io/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&e=pom Maven POM]
=== commons-junit4 ===
Assertions etc. for those who write tests with JUNIT 4.
''Resources:''
[http://commons.unkrig.de/commons-io/apidocs/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-io&v=LATEST&e=pom Maven POM]


=== commons-lang ===
=== commons-lang ===


* Utility classes for [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/ExceptionUtil.html exceptions], [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/ThreadUtil.html threads] and [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/RunnableUtil.html runnables]
* Utility classes for [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/ExceptionUtil.html exceptions], [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/ThreadUtil.html threads] and [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/RunnableUtil.html runnables]
* [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/protocol/package-summary.html "Protocol" interfaces] like [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/protocol/Producer.html Producer], [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/protocol/Consumer.html Consumer], [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/protocol/Predicate.html Predicate], [http://commons.unkrig.de/commons-lang/apidocs/index.html?de/unkrig/commons/lang/protocol/Transformer.html Transformer]
* [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/protocol/package-summary.html "Protocol" interfaces] like [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/protocol/Producer.html Producer], [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/protocol/Consumer.html Consumer], [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/protocol/Predicate.html Predicate], [http://commons.unkrig.de/javadoc/commons-lang/index.html?de/unkrig/commons/lang/protocol/Transformer.html Transformer]


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-lang/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-lang/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-lang&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-lang&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-lang&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-lang&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-lang&v=LATEST&e=pom Maven POM]


=== commons-math ===
=== commons-math ===


[http://commons.unkrig.de/commons-math/apidocs/index.html?de/unkrig/commons/math/package-summary.html de.unkrig.commons.math]: A linear congruential generator; a [http://commons.unkrig.de/commons-math/apidocs/index.html?de/unkrig/commons/math/Sequences.html random sequence generator]
[http://commons.unkrig.de/javadoc/index.html?de/unkrig/commons/math/package-summary.html de.unkrig.commons.math]: A linear congruential generator; a [http://commons.unkrig.de/javadoc/index.html?de/unkrig/commons/math/Sequences.html random sequence generator]


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-math/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-math/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-math&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-math&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-math&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-math&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-math&v=LATEST&e=pom Maven POM]


=== commons-net ===
=== commons-net ===


* [http://commons.unkrig.de/commons-net/apidocs/index.html?de/unkrig/commons/net/http/package-summary.html HTTP] and [http://commons.unkrig.de/commons-net/apidocs/index.html?de/unkrig/commons/net/ftp/package-summary.html FTP] servers and clients
* [http://commons.unkrig.de/javadoc/commons-net/index.html?de/unkrig/commons/net/http/package-summary.html HTTP] and [http://commons.unkrig.de/javadoc/commons-net/index.html?de/unkrig/commons/net/ftp/package-summary.html FTP] servers and clients
* Various networking tools like [http://commons.unkrig.de/commons-net/apidocs/index.html?de/unkrig/commons/net/tool/tcpmon/package-summary.html TCPMON], [http://commons.unkrig.de/commons-net/apidocs/index.html?de/unkrig/commons/net/tool/ftpmon/package-summary.html FTPMON], [http://commons.unkrig.de/commons-net/apidocs/index.html?de/unkrig/commons/net/tool/telnet/package-summary.html TELNET]
* Various networking tools like [http://commons.unkrig.de/javadoc/commons-net/index.html?de/unkrig/commons/net/tool/tcpmon/package-summary.html TCPMON], [http://commons.unkrig.de/javadoc/commons-net/index.html?de/unkrig/commons/net/tool/ftpmon/package-summary.html FTPMON], [http://commons.unkrig.de/javadoc/commons-net/index.html?de/unkrig/commons/net/tool/telnet/package-summary.html TELNET]


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-net/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-net/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-net&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-net&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-net&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-net&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-net&v=LATEST&e=pom Maven POM]
=== commons-nullanalysis ===
* Annotations and utility classes for ECLIPSE annotation-base "null analysis".
''Resources:''
[http://commons.unkrig.de/commons-nullanalysis/apidocs/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-nullanalysis&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-nullanalysis&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-nullanalysis&v=LATEST&e=pom Maven POM]


=== commons-reflect ===
=== commons-reflect ===


Various utilities for Java's reflection API.
Various utilities for Java's reflection API


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-reflect/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-reflect/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-reflect&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-reflect&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-reflect&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-reflect&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-reflect&v=LATEST&e=pom Maven POM]


=== commons-text ===
=== commons-text ===


* An [http://commons.unkrig.de/commons-text/apidocs/index.html?de/unkrig/commons/text/expression/ExpressionEvaluator.html expression evaluator]
* An [http://commons.unkrig.de/javadoc/commons-text/index.html?de/unkrig/commons/text/expression/ExpressionEvaluator.html expression evaluator]
* A small framework for creating [http://commons.unkrig.de/commons-text/apidocs/index.html?de/unkrig/commons/text/scanner/package-summary.html scanners] and [http://commons.unkrig.de/commons-text/apidocs/index.html?de/unkrig/commons/text/parser/package-summary.html parsers]
* A small framework for creating [http://commons.unkrig.de/javadoc/commons-text/index.html?de/unkrig/commons/text/scanner/package-summary.html scanners] and [http://commons.unkrig.de/javadoc/commons-text/index.html?de/unkrig/commons/text/parser/package-summary.html parsers]
* A [http://commons.unkrig.de/commons-text/apidocs/index.html?de/unkrig/commons/text/pattern/Glob.html Glob] class that combines the widely known elements of UNIX file name globbing with the power of regular expressions
* A [http://commons.unkrig.de/javadoc/commons-text/index.html?de/unkrig/commons/text/pattern/Glob.html Glob] class that combines the widely known elements of UNIX file name globbing with the power of regular expressions


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-text/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-text/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-text&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-text&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-text&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-text&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-text&v=LATEST&e=pom Maven POM]


=== commons-util ===
=== commons-util ===


* [http://commons.unkrig.de/commons-util/apidocs/index.html?de/unkrig/commons/util/CommandLineOptions.html CommandLineOptions] makes parsing and documentation of command line options (e.g. for "<code>public static void main(String[])</code>") easy; see the [[CommandLineOptions tutorial|tutorial]].
* [http://commons.unkrig.de/javadoc/commons-util/index.html?de/unkrig/commons/util/CommandLineOptions.html CommandLineOptions] makes parsing and documentation of command line options (e.g. for "<code>public static void main(String[])</code>") easy; see the [[CommandLineOptions tutorial|tutorial]].
* [http://commons.unkrig.de/commons-util/apidocs/index.html?de/unkrig/commons/util/TimeTable.html TimeTable] parses and implements a CRON-like specification string
* [http://commons.unkrig.de/javadoc/commons-util/index.html?de/unkrig/commons/util/TimeTable.html TimeTable] parses and implements a CRON-like specification string
* Various [http://commons.unkrig.de/commons-util/apidocs/index.html?de/unkrig/commons/util/logging/filter/package-summary.html filters], [http://commons.unkrig.de/commons-util/apidocs/index.html?de/unkrig/commons/util/logging/handler/package-summary.html handlers] and [http://commons.unkrig.de/commons-util/apidocs/index.html?de/unkrig/commons/util/logging/formatter/package-summary.html formatters] for <tt>java.util.logging</tt>
* Various [http://commons.unkrig.de/javadoc/commons-util/index.html?de/unkrig/commons/util/logging/filter/package-summary.html filters], [http://commons.unkrig.de/javadoc/commons-util/index.html?de/unkrig/commons/util/logging/handler/package-summary.html handlers] and [http://commons.unkrig.de/javadoc/commons-util/index.html?de/unkrig/commons/util/logging/formatter/package-summary.html formatters] for <tt>java.util.logging</tt>
* The [http://commons.unkrig.de/commons-util/apidocs/index.html?de/unkrig/commons/util/logging/SimpleLogging.html SimpleLogging] facility for easy integration of <tt>java.util.logging</tt> within command line tools
* The [http://commons.unkrig.de/javadoc/commons-util/index.html?de/unkrig/commons/util/logging/SimpleLogging.html SimpleLogging] facility for easy integration of <tt>java.util.logging</tt> within command line tools


''Resources:''
''Resources:''
[http://commons.unkrig.de/commons-util/apidocs/index.html JAVADOC],
[http://commons.unkrig.de/javadoc/commons-util/index.html JAVADOC],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-util&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-util&v=LATEST&e=jar JAR file Download],
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-util&v=LATEST&c=sources Source code Download]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-util&v=LATEST&e=pom Maven POM]
[http://oss.sonatype.org/service/local/artifact/maven/redirect?r=releases&g=de.unkrig.commons&a=commons-util&v=LATEST&e=pom Maven POM]


== Source Code ==
== Source Code ==


The source code is available through GITHUB:
The source code is available through SVN:


     https://github.com/aunkrig/commons/
     https://svn.code.sf.net/p/loggifier/code/de.unkrig.commons/


== License ==
== License ==
Line 152: Line 112:


== Change Log ==
== Change Log ==
; Version 1.2.18 2022-12-28:
:* de.unkrig.commons.file.resourceprocessing.ResourceProcessings: Added "ResourceProcessings.STDIN_URL".
:* de.unkrig.commons.file.resourceprocessing.ResourceProcessings: ZZDIFF can now handle "-" (stdin) as one of its two inputs.
:* de.unkrig.commons.text.scanner: Added "setInput(input, int start, int end)" for scanning partial strings.
:* de.unkrig.commons.text.expression.ExpressionEvaluator: Added "parsePart(String spec, int[] offset, int end)" for parsing partial strings.
:* de.unkrig.commons.text.pattern.ExpressionMatchReplacer: Added "\Q...\E" and "\Q...".
:* ExpressionMatchReplacer.parseExt(): Added "\xhh", "\uhhhh", "\x{h...h}" and "normal" escapes ("\r", "\n", asf.).
; Version 1.2.17 2022-07-22:
:* d.u.c.lang.Characters: Small fixes of character classes for JRE 8 backwards compatibility.
:* d.u.c.lang.PrettyPrinter: Fixed one NPE in "PrettyPrinter.getPrettyClassName()" (handling of classes without a canonical name).
:* d.u.c.lang.StringUtil: Added multi-needle variants of "boyerMooreHorspoolIndexOf()", e.g. "needle1|[Nn]eedle2".
:* Added tests for "MapUtil.lazyMap()".
:* d.u.c.util.collections.MapUtil: Created a brother method "MapUtil.lazyMap(Map<K, Producer<? extends V>> valueGetters)" for "MapUtil.lazyMap(Map<K, Function<? super I, ? extends V>> valueGetters, @Nullable final I in)".
:* d.u.c.util.collections.IteratorUtil: Added "IteratorUtil.concat(List<Iterator>)".
:* d.u.c.util.CommandLineOptionException: Include "toString()" of the cause into the OptionProcessingException's message, because the cause's "getMessage()" is often not verbose enough.
:* d.u.c.text.expression.ExpressionEvaluator: Implemented the special attributes "_attributes", "_properties", "_staticAttributes" and "_staticProperties".
:* d.u.c.text.expression.ExpressionEvaluator: Arrays are now silently pretty-printed in all places.
:* Added "ObjectUtil.arrayToString(Object)".
:* d.u.c.lang.protocol.ConsumerUtil: Moved "Grep.lineCounter()" to "ConsumerUtil".
:* d.u.c.text.pattern.PatternUtil: Added to the "patternFinderWriter()" method family some more with a "Runnable flush" parameter.
:* d.u.c.text.pattern.Finders: Added to the "patternFinder()" method family some more with a "Runnable flush" parameter.
:* d.u.c.lang.protocol.Functions: Added "Functions.constant(O)".
:* d.u.c.io.ConsumingWriter: Added the "ConsumingWriter".
:* d.u.c.text.pattern.Substitutor: The Substitutor is now based on the Finders.patternFinder().
:* d.u.c.text.pattern.PatternUtil: The object returned by "replacementStringMatchReplacer()" didn't have a proper "toString()" method.
:* d.u.c.file.org.apache.commons.compress.archivers: "ArchiveFormat.forArchiveOutputStream(ArchiveOutputStream)" didn't work in all cases.
; Version 1.2.16 2022-03-21:
:* Iff the field "Throwable.message" cannot be made accessible, print a useful warning message on STDERR instead of throwing an exception.
:* Gave up on Java 6 compatibility... now Java 8.
:* Added "setPassword()", in addition to the system property.
:* Gave up on Java 6 compatibility... now Java 8.
:* Added "MavenUtil".
:* Reverted the commit of "Glob.java" of 2021-12-01 19:22: "%" is *not* a valid suffix; otherwise all compressed contents (e.g. "dir/file.gz%") would match a pattern like "***foo".
:* Added test case for "FileProcessings.starterFile(String regex)".
:* Added "ContentProcessings.glob()".
:* Added "PatternUtil.constantPrefix()".
:* Added "FileProcessings.glob()".
:* Added "OutputStreams.newOverwritingFileOutputStream(File)": "$xyz" was handled differently from "${xyz}" and caused an NPE.
:* Added "AbstractParser.readEnum()".
:* Gave up on backwards compatibility with Java 6 and 7 (removed substitutes for java.util.Base64).
:* Added "Readers.readFully()".
:* Added "InputStreams.readFully()".
:* Set "useTransparentBounds(true)" when scanning, so token regexes can use lookaheads and lookbehinds.
:* Eliminated the terrible hack where STORED zip archive entries were silently transformed into DEFLATED (because STORED entries need a correct SIZE and CRC, and these were difficult to calculate). Implemented this with a temporary storage using an "elastic pipe".
:* Added "OutputStreams.updatesChecksum(final Checksum checksum) => OutputStream".
:* The substitution count was wrong (*2 value).
:* Typo in "elasticPipe()" caused an IllegalStateException.
:* Added "ArchiveFormat.getCompressionMethod(ArchiveEntry)", which returns a string representation of the compression method used for the archive entry.
:* Generating TAR archives: The "long file mode" (determines the handling of file names longer than 100 characters) can now be controlled with a system property "TarArchiveFormat.longFileMode"; the default is now "GNU" (and not, as before, "ERROR").
:* Added "Numbers.unsignedCompareToByte/Short/Int/Long()".
:* Added the "Relation" interface and the "Relations" utility class.
; Version 1.2.15 2020-11-06:
:* commons-file: Implemented decryption of encrypted 7ZIP archives with a sysem property "sevenZInputFilePassword".
:* commons-file: Directory processing: JRE11+MS WINDOWS replace colons (#003A) in member names with #F03A, for whatever reason.
:* commons-net: For method CONNECT, the second word of the request line is not a URI, but only an authority (host:port).
:* commons-file: Handle AR archive entriy with empty name: Silently rename it to "__ROOT".
:* commons-net: Fixed one resource leak.
:* commons-file: "apache.commons.compress" no longer seems to miss the dependency on "org.tukaani" -- removed the workaround.
:* commons-file: Augmented all content processing with an optional "lastModifiedDate" parameter.
:* commons-file: Added (read-only) support for the "rpm" archive format. (An PM file is actually a compressed CPIO archive preceeded by some binary metadata.)
:* commons-util: Added "MapUtil.lazyMap()".
:* commons-text: Added "Notation.Phrase.size()" and "Notation.Phrase.get()".
:* commons-io: Fixed an endless loop in "MarkableFileInputtream.skip()".
:* commons-io: Fixed a ConcurrentModificationException.
:* commons-text: Replaced single quotes in many messages with (the typographically more correct) double quotes.
:* commons-util: Wrap exceptions that occur during option processing with the new "OptionProcessingException" (instead of an AssertionError).
:* commons-io: Added "Writers.autoFlushing()" and "OutputStreams.autoFlushing()". Added "Readers.wye(Reader, Writer)" and marked "WyeReader" as deprecated.
:* commons-io, commons-lang: Added tons of "? super" and "? extends" clauses.
; Version 1.2.14 2019-10-11:
:* Fixed an IllegalArgumentException in "Pattern2.compile(String, int)" and "Glob.compile(String, int)".
:* StringStream: Made "next()" and "consume()" public.
:* OptionalMethods: All methods get an additional first parameter "@Nullable String message", which, if non-null, is used for the UnsupportedOperationException.
:* Added "XmlUtil.parse(DocumentBuilder, InputStream, String publicId, String encoding)".
:* Added "Writers.tee(Writer... delegates)".
:* ArArchiveFormat: Catch an NPE thrown by ArArchiveInputStream.
:* ArArchiveFOrmat: Catch a NumberFormatException in ArArchiveInputStream.
:* Work around "ZipException: uncompressed size is required for STORED method when not writing to a file"
:* commons.doclet.Html: Changed fragment style from Java 7 to Java 8+.
:* ResourceProcessings: "isFile()" did not decode %xx escape sequences in URLs.
:* commons.lang.Comparators: Added "Comparators.keyComparator()" and ".valueComparator()".
:* FileProcessings.directoryProcessor(): The "pathPredicate" was applied wrong for *files* (as opposed to directories). As a result, "zzgrep --include '***.class'" did not match .class files *in archives*.
:* InputStreams: Added "EventCounter", "ExponentiallyLoggingEventCounter" and "InputStreams.statisticsInputStream()" for real-time IO statistics.
:* Optimize archive file and compressed file reading by replacing small file READs with large file READs.
:* Added input stream statistics in "CompressUtil" and "FileContentsProcessor".
:* Fatal bug in "ConsumerUtil.head()" fixed!
:* Added "commons.lang.protocolTuple2", "Tuple3" and "Tuple4".
:* ExpressionMatchReplacer: Replaced "imports" with "singleImports" and "onDemandImports".
:* ExpressionEvaluator: Added scanning of MULTI-LINE C-style comments. Added scanning of C++-style comments.
:* Added "de.unkrig.commons.file.resourceprocessing", in symmetry with "fileprocessing" and "contentsprocessing", to process *resources* (designated by URLs) in addition to files and InputStreams.
:* commons.file: Compressed file names and compressed contents paths are now suffixed with '%' (instead of '!') to circumvent problems with "Glob"'s directory prefix mechanism.
:* Java 9 added "@Override public final CharBuffer CharBuffer.rewind() { ..." -- leads easily to a "NoSuchMethodError: java.nio.CharBuffer.rewind()Ljava/nio/CharBuffer"; a cast to "Buffer" is the workaround.
:* Added "LineUtil.lineAndColumnTracker()".
:* Added "Readers.onFirstChar()" and "Readers.trackLineAndColumn(Reader)".
:* Added "Writers.onFirstChar()" and "Writers.trackLineAndColumn(Writer)".
:* Removed unnecessary dependency on "de.unkrig.commons:commons-junit4".
:* CommandLineOptions: Convert "any" to InetAddr "null" ("wildcard address").
; Version 1.2.13 2018-11-23:
:* In analogy with the "Substitutor", the new "Search" class finds pattern matches in a sequence of chunks in a "sliding" manner. Instead of a "match replacer", it invokes a "match handler".
:* Breaking change: A "match replacer" is no longer a "FunctionWhichThrows<Matcher, String, EX>", but a "FunctionWhichThrows<MatchResult, String, EX>".
:* Added support for HTTP method "OPTIONS".
:* Refined the logic that checks for "Socket closed" exceptions.
; Version 1.2.12 2018-10-29:
:* ChunkedInputStream: Reading of blank line after last chunk was missing.
:* Added "LevelFilteredPrinter.setNoErrors()".
:* Added "evaluateExpressionTo(@Nullable String[] imports, String input,Class<T> targetType, Mapping<String, ?> variables)".
:* Added convenience methods with a parameter "Object... variableNamesAndValues" for all methods with a parameter "Mapping<String, ?> variables".
:* Added "or(PredicateWhichThrows<? super T, ? extends EX> lhs, PredicateWhichThrows<? super T, ? extends EX> rhs)" as a brother of "or(Predicate<? super T> lhs, Predicate<? super T> rhs)".
:* Added "containsKeyPredicateWhichThrows(final Mapping<K, V>)".
:* Removed the "<EX>" type parameter from "ExpressionEvaluator.parser(String spec)".
:* Optimized "toPredicate()" and "constantExpression()" for the special cases "true", "false" and "null".
:* Replaced "HttpAuthenticationServlett(String realm, String userName, String password)" with "HttpAuthenticationServlett(String realm, UserNamePasswordPredicate)".
:* Added "removeParameter()".
:* Added test cases for "de.unkrig.commons.util.Enums".
:* Optimized performance of "Enums.valueOf(String, Class<? extends Enum>)".
:* Added "enumSetFromString(String, Class<? extends Enum>)" and "valueOf(String, Class<? extends Enum>)".
:* Started implementation of "IndexOf.indexOf(CharSequence haystack, int minIndex, int maxIndex, int limit)" for partial terminal matches.
:* Added method "toCharArray(CharSequence cs)".
:* Added "of(T... values)", "union(Set<? extends T> lhs, Set<? extends T> rhs)" and "intersection(Set<? extends T> lhs, Set<? extends T> rhs)".
:* Added "toCharArray(Set<Character>)" and "toIntArray(Set<Integer>)".
:* Added "append(char[] a, char... values)" and "mirror(char[][])".
:* Fixed up several bugs in "boyerMooreHorspool...()".
:* Renamed methods "knuthMorrisPratt...()" to "boyerMooreHolbrook...()".
:* Fixed up the Knuth-Morris-Pratt "lastIndexOf()" method.
:* More optimization on the "knuthMorrisPratt()" index-of algorithm.
:* Renamed the "...Index" parameters of the "IndexOf.(indexOf|lastIndexOf)()" methods from "(from|to)Index" to "(min|max)Index", because "from" and "to" are very confusing for "lastIndexOf()".
:* Utility functionality related to {@link HttpsURLConnection}s.
:* Added "ExpressionEvaluator.parsePart()".
:* Added "ExpressionEvaluator.parsePart()".
:* "getMostSpecificMethod()": Didn't find some methods declared in superinterfaces.
:* Added "containsKeyPredicate(Mapping)".
:* The non-"...WhichThrows" protocol classes now declare the EX type parameter as "NoException" (was "RuntimeException") to make any code more self-documenting.
:* "isLessSpecific()": The synthetic methods that are generated for covariant return values were regarded as "ambiguous".
:* The "transformer" argument is now allowed to throw IOExceptions.
:* "copyAndTransform()" now declares an "EX" type parameter.
:* Added the "assertFind()" methods.
:* Added "StringUtil.asJavaLiteral(String)".
:* Added "IterableUtil.addAllElementsTo(Iterable, Collection)" and "IteratorUtil.addAllElementsTo(Iterator, Collection)".
:* Moved "EMPTY_SORTED_SET" and "emptySortedSet()" from "CollectionUtil" to "Sets", leaving (deprecated) wrappers behind.
; Version 1.2.11 2017-08-23:
:* Added methods "Rule.goTo(S)", "Rule.push(S)" and "Rule.pop()", making many of the "StatefulScanner.addRule(...)" methods DEPRECATED.
:* Added utility class "OptionalMethods".
:* Made JRE 7's methods "isAlphabetic(int)" and "isIdeographic(int)" available for all JRE versions.
:* "Token.captured" is no longer @Nullable; this is much more practical.
:* Added "PrettyPrinter.codePointToString(int)".
:* Added the following methods, and the plethora of predicates that implement them:
:** javaCharacterClassFromName(String)
:** unicodeCategoryFromName(String)
:** unicodeBinaryPropertyFromName(String)
:** unicodePredefinedCharacterClassFromName(String)
:** posixCharacterClassFromName(String)
:* Improved the "unexpected character" exception message by adding information about the current scanner state.
:* Added the "de.unkrig.commons.util.EnhancedServiceLoader".
:* Added appropriate "toString()" methods on "IndexOf" implementations.
:* Extended the "StringUtil.IndexOf" interface with various "lastIndexOf()" methods.
:* Added "StringUtil.newIndexOf(final String infix)" which implements the Knuth-Morris-Pratt algorithm.
; Version 1.2.10 2017-07-30:
:* Added method "MD5.of(InputStream)".
:* Added utility class "de.unkrig.commons.lang.Comparators".
:* CompressUtil: The "UnsupportedZipFeatureException" was not properly wrapped because it has none of the "usual" constructors that "ExceptionUtil.wrap()" requires.
:* Added "InputStreams.readAll(InputStream, boolean closeInputStream)".
:* de.unkrig.commons.util.collections.Peekerators: Introduced the concept of the "peekerator" - an Iterator with a "peek()" method.
:* IterableUtil: Added "IterableUtil.NATURALS" and "NATURALS0".
:* de.unkrig.commons.util.collections: Added methods "IteratorUtil.foR(...)" and "IterableUtil.foR(...)".
:* de.unkrig.commons.util.collections: Moved "iteratorWithContext()" from IterableUtil to IteratorUtil.
:* de.unkrig.commons.util.collections: Made "ElementWithContext" a top-level type, because it is now used by two compilation units (IteratorUtil and IterableUtil).
:* commons-net and commons-util: Moved the "CustomAuthenticator" (and its fellows "CredentialsSpec", "JPasswordFields" and "Regex" from the ANTOLOGY project to the "de.unkrig.commons.net" project, where it belongs.
:* CommandLineOptions: Gave "printResource(Class, String relativeResourceName, ...)" a sibling method "printResource(ClassLoader, String resourceName, ...)".
:* de.unkrig.commons.net.http.HttpMessage: In "attempt unstreaming" mode, the body was written TWICE (caused IllegalStateExceptions).
:* de.unkrig.commons.net.http: Added support for the "CONNECT" method.
:* Added to many methods parameter(s) "xxxLoggingPrefix" so that one can customize the logging messages. By default, logging messages related to incoming data are prefixed with ">>> ", and logging messages related to outgoing data with "<<< ".
:* HttpMessage: The "attempt unstreaming" feature can now be switched off (important for the CONNECT method).
:* "IoUtil.copy()" now flushes the output stream when the next READ from the input stream will block.
:* de.unkrig.commons.text.expression: Added support for nested types.
:* Changed the return types of "Expression.evaluateTo[Primitive](...)" from "Object" to "T".
:* AuthenticateHeaderParser: Implemented BASIC authentication for the "HttpClient" - useful to configure HTTP proxies that handle authentication.
:* unkrig.commons/text/scanner: Added "String[] Token.captured" for access to input subsequences that were captured during the token match.
:* ConsumerUtil: Added methods "head(m)" and "tail(n)".
:* "Transformer" now extends "TransformerWhichThrows&lt;I, O, RuntimeException>", as it always should have done.
:* Added "BooleanProducer ProducerUtil.once()".
:* Added the "de.unkrig.commons.text.scanner.XmlScanner" class and tests.
:* Added "StringUtil.containsAny(String subject, String characters)", which checks whether the subject contains any of the characters.
:* Added the "FilterAppendable", very much in anaolgy with the "java.io.FilterWriter".
:* Added "CharSequences.from(char[])" and "CharSequences.from(char[], int off, int len)".
:* Added the "Appendables" utility class.
:* de.unkrig.commons.doclet.html.Html: Added support for {@value} on enum constants.
:* de.unkrig.commons.doclet.html.Html: STANDARD_LINK_MAKER: Added support for links to enum constants.
:* de.unkrig.commons.text.expression.ExpressionEvaluator: Breaking API change: "evaluateTo(..)" now returns a _nullable_ result.
:* ConsumerUtil: Added various "store()" and "cumulate()" methods.
:* de.unkrig.commons.net.http.HttpMessage: Added method "body(final ProducerWhichThrows&lt;InputStream, IOException> in)".
:* Automatic XML formatting is now not only active for content type "text/xml", but for any content type with an infix "xml".
:* de.unkrig.commons.io.ReaderInputStream: First implementation of the "ReaderInputStream" as the complement of the "WriterOutputStream"; as of now supports only char set ISO8859-1.
:* TransformingFilterReader: Bug fixed: "TransformingFilterReader.read()" returned -1 on the first pattern match.
:* de.unkrig.commons.doclet.html.Html: @value: The argument was not SGML-Escaped.
:* TransformerUtil: Added "cache(final Transformer&lt;? super I, O> delegate, final Map&lt;I, O> cache)".
:* ContentsProcessings.processArchive(): "Directory archive entries" are now silently ignored, because they have no contents and thus it makes no sense to process them with the "contentsProcessor".
:* FileUtil: Added a workaround for MS WINDOWS 7: Read-protected directory produces: isDirectory() => true; canRead() => true; list() => null; listFiles() => null (Caused NPEs.)
:* PasswordAuthenticationStores: "..customAuthenticator_credentials,orig" file was not deleted after saving the credentials properties file.
; Version 1.2.9 2017-02-02:
:* de.unkrig.commons.crypto/security: Gave up on the concept of "DestroyableString"s - they cause more confusion than they are helpful.
:* ProducerUtil: Fixed a serious bug in "cacheAsynchronously()": ExecutionExceptions thrown by the Future were not handled properly and caused the cache to "hang".
:* Added "roundRobin()".
; Version 1.2.8 2017-01-27:
:* New utility class "AssertString": Provides methods like "assertContains(String expectedInfix, String actual)".
:* Added a new package "de.unkrig.commons.lang.crypto", and moved many classes from "lang.security" to there.
:* Extracted the UserNamePasswordStore from "de.unkrig.antology.task.SetAuthenticatorTask" to here.
:* Added "StatefulScanner.getCurrentState()" and "setCurrentState()" so that the state of the scanner can be changed from outside admidst scanning.
:* Added "AbstractScanner.suppress(TT)" and "suppress(EnumSet&lt;TT>)".
:* Added "ProducterUtil.filter(Producer, Predicate)".
:* StatefulScanner: Declared a constant "REMAIN" for the "addRule()" methods that have a final "nextState" parameter.
:* AbstractParser: End-of-input handling was brooken in "read(Object... tokenTypeOrText)".
:* Added the "de.unkrig.commons.lang.Characters" utility class.
:* The first parameter of methods "StatefulScanner.addRule(EnumSet&lt;S>, ...)" is now NULLABLE, where "null" means "any state, including the default state".
:* Added a constructor "StatefulScanner(StatefulScanner)" that clones the configuration, but not the state.
:* StatefulScanner: Added methods "addRule(@Nullable EnumSet&lt;S> states, String regex, TT tokenType)" and "addRule(@Nullable EnumSet&lt;S> states, String regex, TT tokenType, S nextState)", which make it easier to declare rules that apply in more than one non-default states.
:* Fixed one major design error in "CommandLineOptions": Method "applyCommandLineOption()" now gets a "Method" as its second parameter, instead of, previously, a "CommandLineOption" object.
; Version 1.2.7 2016-12-12:
:* IoUtil: Added "singlingFilterReader()" and "singlingInputStream()".
:* PatternUtil: Fixed several bugs in "PatternUtil.replaceAll()".
:* PatternUtil: Added "replaceAllFilterReader()".
:* PatternUtil: Added "replaceAllFilterWriter()".
:* Moved many, many methods from "IoUtil" to the new utility classes "InputStreams", "OutputStreams", "Readers", "Writers" and "FransformingFilter(Reader|Writer)".
:* Added "StringTransformers", a collection of simple "Transformer&lt;CharSequence, CharSequence>"s.
:* Added TransformerUtil.chain(Transformer...)".
:* Extracted "PatternUtil.replaceAllFilterReader()" as the new "Substitutor" class.
:* Adapted to the refactoring of "IoUtil".
:* Added unit tests for the "Substitutor".
:* "IoUtil.findOnPath()": The search stopped at the FIRST archive file.
; Version 1.2.6 2016-11-30:
:* commons-io: Added the "CharFilter", "CharFilterReader" and "CharFilterWrite", which are the char-wise equivalent of "ByteFilter(InputStream|OutputStream)?".
:* Glob: Added the "" special case for the "container match".
:* FileProcessings, ContentsProcessings: The "pathPredicate" was missing from content processors.
; Version 1.2.5 2016-11-28:
:* Printers: Added "Printers.redirectToFile(Level|EnumSet&lt;Level>)".
; Version 1.2.4 2016-11-25:
:* IoUtil: Fixed one MalformedURLException.
:* Added the "ByteFilterOutputStream", as a complement to the "ByteFilterInputStream".
:* ContentsTransformations: Added methods "chain(ContentsTransformer, ContentsTransformer)", "asInputStream(InputStream delegate, ContentsTransformer, String)" and "asOutputStream(ContentsTransformer, OutputStream delegate, name)".
:* Added "SelectiveContentsTransformer.create()", which can conduct many optimizations.
:* Workover of the "Printers" API: A lot of functionality went from "Printers" to "AbstractPrinter"; the old methods, however, remain, and are now marked as @deprecated.
:* IoUtil: Added methods "findOnPath(File[], String resourceName)" and "copyTree(URL, File)".
:* Added "de.unkrig.commons.lang.ClassLoaders".
:* Slightly clarified the wording of the license: Replaced "author" with "copyright holder and its contributors".
; Version 1.2.3, 2016-11-07:
:* commons-file: The "formats" files didn't make it into the JAR, because they were in "src/main/java" instead of "src/main/resource".
; Version 1.2.2, 2016-11-07:
:* XmlUtil.parse(): Detect and throw IOExceptions (esp. FileNotFoundException) properly.
:* commons-junit4: Removed the unnecessary dependency on "org.apache.commons:commons-compress".
:* For unknown reasons, the POM of org.apache.commons:commons-compress fails to declare the dependency on "org.tukaani:xz", although it definitely depends on it. Thus added the dependency in "de.unkrig.commons:commons-file"'s POM.
:* "IoUtil.parallel()", as a side effect, caused the JVM to not terminate when it is shut down orderly (i.e. "main()" returns or "System.exit()" is invoked).
:* Added "ThreadUtil.DAEMON_THREAD_FACTORY".


; Version 1.2.1, 2016-10-30:
; Version 1.2.1, 2016-10-30:
Line 449: Line 142:
:* Added "PredicateUtil.always(boolean)".
:* Added "PredicateUtil.always(boolean)".
:* Added "PredicateUtil.xor()".
:* Added "PredicateUtil.xor()".
:* "Predicate&lt;T>" now extends "PredicateWhichThrows&lt;T, RuntimeException>".
:* "Predicate<T>" now extends "PredicateWhichThrows<T, RuntimeException>".
:* Added "ProducerUtil.cache(delegate, condition)".
:* Added "ProducerUtil.cache(delegate, condition)".
:* "commons/doclet": Added support for the inline tags "{@docRoot}", "{@literal}", "{@constantsof}" and "{@constantsofplain}".
:* "commons/doclet": Added support for the inline tags "{@docRoot}", "{@literal}", "{@constantsof}" and "{@constantsofplain}".
Line 469: Line 162:
; Version 1.1.5, 2016-03-14:
; Version 1.1.5, 2016-03-14:
:* de.unkrig.commons.io.IoUtil: Added "skip()" and "skipAll()".
:* de.unkrig.commons.io.IoUtil: Added "skip()" and "skipAll()".
:* de.unkrig.commons.text.PatternUtil: Replaced the "Replacer" interface with a "Function&lt;Matcher, String>".
:* de.unkrig.commons.text.PatternUtil: Replaced the "Replacer" interface with a "Function<Matcher, String>".
:* de.unkrig.commons.file.ExceptionHandler: Handler methods now have, for consistency with the other APIs, an additional parameter "String path".
:* de.unkrig.commons.file.ExceptionHandler: Handler methods now have, for consistency with the other APIs, an additional parameter "String path".
:* de.unkrig.commons.net: TcpServer(SSLContext): Remove several "cipher suites" from the SSL context because otherwise some modern browsers refuse to connect with this server.
:* de.unkrig.commons.net: TcpServer(SSLContext): Remove several "cipher suites" from the SSL context because otherwise some modern browsers refuse to connect with this server.
Line 506: Line 199:


; Version 1.0.5, 2014-05-01:
; Version 1.0.5, 2014-05-01:
:* Moved the &lt;log>, &lt;logging> and &lt;simpleLogging> tasks from 'de.unkrig.commons.util' to 'de.unkrig.antcontrib'.
:* Moved the <log>, <logging> and <simpleLogging> tasks from 'de.unkrig.commons.util' to 'de.unkrig.antcontrib'.


; Version 1.0.4, 2014-04-29:
; Version 1.0.4, 2014-04-29:
:* 'keepOriginals' did not work for in-place file transformations.
:* 'keepOriginals' did not work for in-place file transformations.
:* &lt;simplelogging>: Added attribute 'spec="..."'.
:* <simplelogging>: Added attribute 'spec="..."'.
:* &lt;simpleLogging>: Attribute 'debug="..."' no longer is boolean, but "FINE|FINER|FINEST".
:* <simpleLogging>: Attribute 'debug="..."' no longer is boolean, but "FINE|FINER|FINEST".
:* &lt;logging>: Removed attribute 'parent="..."'
:* <logging>: Removed attribute 'parent="..."'
:* &lt;logging>: Added attribute 'clearFilter="true"'.
:* <logging>: Added attribute 'clearFilter="true"'.
:* Renamed task &lt;simplelogging> to &lt;simpleLogging> (with a big 'L').
:* Renamed task <simplelogging> to <simpleLogging> (with a big 'L').


; Versions 1.0.3 and earlier:
; Versions 1.0.3 and earlier:
: No change log available.
: No change log available.
Please note that all contributions to unkrig.de may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Unkrig.de:Copyrights for details). Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)