Commons.unkrig.de: Difference between revisions

From unkrig.de
Jump to navigation Jump to search
Line 113: Line 113:
== Change Log ==
== Change Log ==


=== Version 1.2.1, 2016-10-30: ===
; Version 1.2.1, 2016-10-30:
* Removed the nasty circular dependencies around "commons-junit".
:* Removed the nasty circular dependencies around "commons-junit".


=== Version 1.2.0, 2016-10-24: ===
; Version 1.2.0, 2016-10-24:
* Replaced the old ANT build with MAVEN.
:* Replaced the old ANT build with MAVEN.


=== Version 1.1.12, 2016-10-14: ===
; Version 1.1.12, 2016-10-14:
* Bug fixes in "ProducerUtil.cache()".
:* Bug fixes in "ProducerUtil.cache()".


=== Version 1.1.11, 2016-08-13: ===
; Version 1.1.11, 2016-08-13:
* ProducerUtil.cache...(): The "invalidationCondition" was treated the wrong way around in some places. Pulled things straigt.
:* ProducerUtil.cache...(): The "invalidationCondition" was treated the wrong way around in some places. Pulled things straigt.
* PredicateUtil: Added method "static synchronizedPredicate(Predicate)".
:* PredicateUtil: Added method "static synchronizedPredicate(Predicate)".


=== Version 1.1.10, 2016-08-12: ===
; Version 1.1.10, 2016-08-12:
* ProducerUtil.cache(): When the first call of "delegate.produce()" threw an exception, then the NEXT invocation returned NULL (instead of calling "delegate.produce()" again).
:* ProducerUtil.cache(): When the first call of "delegate.produce()" threw an exception, then the NEXT invocation returned NULL (instead of calling "delegate.produce()" again).
* ProducerUtil: Added "cacheAsynchronously()" and "atMostEvery(ms, firstProduct, startAtTrueProduct)".
:* ProducerUtil: Added "cacheAsynchronously()" and "atMostEvery(ms, firstProduct, startAtTrueProduct)".


=== Version 1.1.9, 2016-08-02: ===
; Version 1.1.9, 2016-08-02:
* Fixed the bounds of of the parameters of some "MapUtil()" methods, to make them more versatile.
:* Fixed the bounds of of the parameters of some "MapUtil()" methods, to make them more versatile.


=== Version 1.1.8, 2016-07-26: ===
; Version 1.1.8, 2016-07-26:
* Moved various map-related methods from "CollectionUtil" to "MapUtil" (where they actually belong), marked the original methods with "@Deprecated" and replaced them with invocations of the "new" methods.
:* Moved various map-related methods from "CollectionUtil" to "MapUtil" (where they actually belong), marked the original methods with "@Deprecated" and replaced them with invocations of the "new" methods.
* Moved a few more fields and methods from "CollectionUtil" to "IterableUtil" and "IteratorUtil", where they belong.
:* Moved a few more fields and methods from "CollectionUtil" to "IterableUtil" and "IteratorUtil", where they belong.
* Added many missing bounds to method parameters to make the methods more flexible.
:* Added many missing bounds to method parameters to make the methods more flexible.


=== Version 1.1.7, 2016-06-17: ===
; Version 1.1.7, 2016-06-17:
* Added "ObjectUtil.hashCode()".
:* Added "ObjectUtil.hashCode()".
* Added "PredicateUtil.always(boolean)".
:* Added "PredicateUtil.always(boolean)".
* Added "PredicateUtil.xor()".
:* Added "PredicateUtil.xor()".
* "Predicate<T>" now extends "PredicateWhichThrows<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}".
* CommandLineOptions: Initial support for "option cardinality" and "option group cardinality".
:* CommandLineOptions: Initial support for "option cardinality" and "option group cardinality".
* Added "de.unkrig.commons.util.Enums".
:* Added "de.unkrig.commons.util.Enums".
* Added the "IdentityHashSet".
:* Added the "IdentityHashSet".
* Added methods "Pipe.read(byte[])" and "Pipe.write(byte[])".
:* Added methods "Pipe.read(byte[])" and "Pipe.write(byte[])".
* Changed type parameter "EX" of "(Consumer|Function|Predicate|Producer|Runnable|Transformer)WhichThrows" interfaces from "extends Exception" to "extends Throwable" to allow for seamless handlich of the "Longjump" throwable.
:* Changed type parameter "EX" of "(Consumer|Function|Predicate|Producer|Runnable|Transformer)WhichThrows" interfaces from "extends Exception" to "extends Throwable" to allow for seamless handlich of the "Longjump" throwable.
* Added a static "ignoreExceptions()" method to the "(Consumer|Function|Predicate|Producer|Runnable|Transformer)Util" classes.
:* Added a static "ignoreExceptions()" method to the "(Consumer|Function|Predicate|Producer|Runnable|Transformer)Util" classes.
* Longjump: Added various "catchLongjump()" methods for easy integration with Java 8 lambdas.
:* Longjump: Added various "catchLongjump()" methods for easy integration with Java 8 lambdas.
* Added the following methods:
:* Added the following methods:
** IoUtil.copy(File, File, CollisionStrategy)
:** IoUtil.copy(File, File, CollisionStrategy)
** IoUtil.copyTree(File, File, CollisionStrategy)
:** IoUtil.copyTree(File, File, CollisionStrategy)
** IoUtil.isContentIdentical(File, File)
:** IoUtil.isContentIdentical(File, File)


=== Version 1.1.6, 2016-03-21: ===
; Version 1.1.6, 2016-03-21:
* Added "ObjectUtil.almostNull()".
:* Added "ObjectUtil.almostNull()".


=== 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<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.


=== Version 1.1.4, 2015-11-11: ===
; Version 1.1.4, 2015-11-11:
* de.unkrig.commons.text: JavaScanner/JsonScanner: The CXX_COMMENT now INCLUDES the trailing line break.
:* de.unkrig.commons.text: JavaScanner/JsonScanner: The CXX_COMMENT now INCLUDES the trailing line break.
* de.unkrig.commons.net: Added Utility class "UrlConnections", with the single method "followRedirects2()".
:* de.unkrig.commons.net: Added Utility class "UrlConnections", with the single method "followRedirects2()".
* de.unkrig.commons.text: Replaced "CamelCase" with the more versatile "Notations" helper class.
:* de.unkrig.commons.text: Replaced "CamelCase" with the more versatile "Notations" helper class.
* de.unkrig.util.collections: Added the "Stack" interface and its implementation "ArrayStack".
:* de.unkrig.util.collections: Added the "Stack" interface and its implementation "ArrayStack".
* de.unkrig.commons.lang: Added the "FunctionWhichThrows" interface and the "Functions" utility class.
:* de.unkrig.commons.lang: Added the "FunctionWhichThrows" interface and the "Functions" utility class.


=== Version 1.1.3, 2015-09-19: ===
; Version 1.1.3, 2015-09-19:
* de.unkrig.commons.doclet: Removed the concept of generating MEDIAWIKI markup - MEDIAWIKI is for COLLABORATION, not for documentation.
:* de.unkrig.commons.doclet: Removed the concept of generating MEDIAWIKI markup - MEDIAWIKI is for COLLABORATION, not for documentation.
* Added "de.unkrig.commons.util.CommandLineOptions" for elegant command line processing.
:* Added "de.unkrig.commons.util.CommandLineOptions" for elegant command line processing.
* Added "de.unkrig.commons.util.concurrent.ByteStreamSequentializer" and "ObjectSequentializer".
:* Added "de.unkrig.commons.util.concurrent.ByteStreamSequentializer" and "ObjectSequentializer".


=== Version 1.1.2, 2015-08-31: ===
; Version 1.1.2, 2015-08-31:
* Added optional dependencies on 'xz' and APACHE COMPRESS.
:* Added optional dependencies on 'xz' and APACHE COMPRESS.
* Added "de.unkrig.commons.doclet".
:* Added "de.unkrig.commons.doclet".
* Added "de.unkrig.commons.text.xml".
:* Added "de.unkrig.commons.text.xml".
* Added "de.unkrig.commons.util.collections.IteratorUtil".
:* Added "de.unkrig.commons.util.collections.IteratorUtil".
* Various bug fixes in de.unkrig.commons.file
:* Various bug fixes in de.unkrig.commons.file
* Added "de.unkrig.commons.file.contentstransformation.TextTransformer".
:* Added "de.unkrig.commons.file.contentstransformation.TextTransformer".
* "de.unkrig.commons.file.fileprocessing" now supports parallel execution.
:* "de.unkrig.commons.file.fileprocessing" now supports parallel execution.
* The "JavaScanner" now decodes unicode escapes - strictly speaking: wrong, but very useful in some situations.
:* The "JavaScanner" now decodes unicode escapes - strictly speaking: wrong, but very useful in some situations.


=== Version 1.1.1, 2015-02-24: ===
; Version 1.1.1, 2015-02-24:
* Gave up on Java 5 compatibility; Java >= 6 is now required.
:* Gave up on Java 5 compatibility; Java >= 6 is now required.
* UPDATE no longer takes two separate paramaters 'glob' and 'update-file', but one parameter 'glob=update-file', which makes it possible to use variable references when creating the 'update-file' name.
:* UPDATE no longer takes two separate paramaters 'glob' and 'update-file', but one parameter 'glob=update-file', which makes it possible to use variable references when creating the 'update-file' name.
* Push releases to OSSRH and eventually to MAVEN CENTRAL
:* Push releases to OSSRH and eventually to MAVEN CENTRAL


=== Version 1.1.0, 2015-02-04: ===
; Version 1.1.0, 2015-02-04:
* Major refactoring of 'de.unkrig.commons.file.fileprocessing' and 'de.unkrig.commons.file.contentsprocessing'.
:* Major refactoring of 'de.unkrig.commons.file.fileprocessing' and 'de.unkrig.commons.file.contentsprocessing'.
* de.unkrig.commons.file.filetransformation: Thanks to apache.commons.compress, we now not only support the ZIP archive format and the GZIP compression algorithm, but also the AR, ARJ, CPIO, DUMP, JAR, TAR and SEVEN_Z archive formats and the BZIP2, PACK200, XZ, LZMA, SNAPPY and Z compression algorithms.
:* de.unkrig.commons.file.filetransformation: Thanks to apache.commons.compress, we now not only support the ZIP archive format and the GZIP compression algorithm, but also the AR, ARJ, CPIO, DUMP, JAR, TAR and SEVEN_Z archive formats and the BZIP2, PACK200, XZ, LZMA, SNAPPY and Z compression algorithms.
* Added 'de.unkrig.commons.lang.security.Sandbox'.
:* Added 'de.unkrig.commons.lang.security.Sandbox'.


=== Version 1.0.5, 2014-05-01: ===
; Version 1.0.5, 2014-05-01:
* Moved the <log>, <logging> and <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.
* <simplelogging>: Added attribute 'spec="..."'.
:* <simplelogging>: Added attribute 'spec="..."'.
* <simpleLogging>: Attribute 'debug="..."' no longer is boolean, but "FINE|FINER|FINEST".
:* <simpleLogging>: Attribute 'debug="..."' no longer is boolean, but "FINE|FINER|FINEST".
* <logging>: Removed attribute 'parent="..."'
:* <logging>: Removed attribute 'parent="..."'
* <logging>: Added attribute 'clearFilter="true"'.
:* <logging>: Added attribute 'clearFilter="true"'.
* Renamed task <simplelogging> to <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.

Revision as of 09:20, 30 October 2016

<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> de.unkrig.commons is a versatile Java™ library that implements many useful container and utility classes

Overview

de.unkrig.commons is structured in several modules who's names are aligned to the related packages in the JDK libraries.

Module Details

commons-asm

Helper classes that are useful in the context of ASM, a Java bytecode manipulation library.

Resources: JAVADOC, JAR file Download, Maven POM

commons-file

Functionality for processing or 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.

Resources: JAVADOC, JAR file Download, Maven POM

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

Resources: JAVADOC, JAR file Download, Maven POM

commons-lang

Resources: JAVADOC, JAR file Download, Maven POM

commons-math

de.unkrig.commons.math: A linear congruential generator; a random sequence generator

Resources: JAVADOC, JAR file Download, Maven POM

commons-net

Resources: JAVADOC, JAR file Download, Maven POM

commons-reflect

Various utilities for Java's reflection API

Resources: JAVADOC, JAR file Download, Maven POM

commons-text

Resources: JAVADOC, JAR file Download, Maven POM

commons-util

  • CommandLineOptions makes parsing and documentation of command line options (e.g. for "public static void main(String[])") easy; see the tutorial.
  • TimeTable parses and implements a CRON-like specification string
  • Various filters, handlers and formatters for java.util.logging
  • The SimpleLogging facility for easy integration of java.util.logging within command line tools

Resources: JAVADOC, JAR file Download, Maven POM

Source Code

The source code is available through SVN:

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

License

COMMONS.UNKRIG.DE is published under the "New BSD License".

Change Log

Version 1.2.1, 2016-10-30
  • Removed the nasty circular dependencies around "commons-junit".
Version 1.2.0, 2016-10-24
  • Replaced the old ANT build with MAVEN.
Version 1.1.12, 2016-10-14
  • Bug fixes in "ProducerUtil.cache()".
Version 1.1.11, 2016-08-13
  • ProducerUtil.cache...(): The "invalidationCondition" was treated the wrong way around in some places. Pulled things straigt.
  • PredicateUtil: Added method "static synchronizedPredicate(Predicate)".
Version 1.1.10, 2016-08-12
  • ProducerUtil.cache(): When the first call of "delegate.produce()" threw an exception, then the NEXT invocation returned NULL (instead of calling "delegate.produce()" again).
  • ProducerUtil: Added "cacheAsynchronously()" and "atMostEvery(ms, firstProduct, startAtTrueProduct)".
Version 1.1.9, 2016-08-02
  • Fixed the bounds of of the parameters of some "MapUtil()" methods, to make them more versatile.
Version 1.1.8, 2016-07-26
  • Moved various map-related methods from "CollectionUtil" to "MapUtil" (where they actually belong), marked the original methods with "@Deprecated" and replaced them with invocations of the "new" methods.
  • Moved a few more fields and methods from "CollectionUtil" to "IterableUtil" and "IteratorUtil", where they belong.
  • Added many missing bounds to method parameters to make the methods more flexible.
Version 1.1.7, 2016-06-17
  • Added "ObjectUtil.hashCode()".
  • Added "PredicateUtil.always(boolean)".
  • Added "PredicateUtil.xor()".
  • "Predicate<T>" now extends "PredicateWhichThrows<T, RuntimeException>".
  • Added "ProducerUtil.cache(delegate, condition)".
  • "commons/doclet": Added support for the inline tags "{@docRoot}", "{@literal}", "{@constantsof}" and "{@constantsofplain}".
  • CommandLineOptions: Initial support for "option cardinality" and "option group cardinality".
  • Added "de.unkrig.commons.util.Enums".
  • Added the "IdentityHashSet".
  • Added methods "Pipe.read(byte[])" and "Pipe.write(byte[])".
  • Changed type parameter "EX" of "(Consumer|Function|Predicate|Producer|Runnable|Transformer)WhichThrows" interfaces from "extends Exception" to "extends Throwable" to allow for seamless handlich of the "Longjump" throwable.
  • Added a static "ignoreExceptions()" method to the "(Consumer|Function|Predicate|Producer|Runnable|Transformer)Util" classes.
  • Longjump: Added various "catchLongjump()" methods for easy integration with Java 8 lambdas.
  • Added the following methods:
    • IoUtil.copy(File, File, CollisionStrategy)
    • IoUtil.copyTree(File, File, CollisionStrategy)
    • IoUtil.isContentIdentical(File, File)
Version 1.1.6, 2016-03-21
  • Added "ObjectUtil.almostNull()".
Version 1.1.5, 2016-03-14
  • de.unkrig.commons.io.IoUtil: Added "skip()" and "skipAll()".
  • 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.net: TcpServer(SSLContext): Remove several "cipher suites" from the SSL context because otherwise some modern browsers refuse to connect with this server.
Version 1.1.4, 2015-11-11
  • de.unkrig.commons.text: JavaScanner/JsonScanner: The CXX_COMMENT now INCLUDES the trailing line break.
  • de.unkrig.commons.net: Added Utility class "UrlConnections", with the single method "followRedirects2()".
  • de.unkrig.commons.text: Replaced "CamelCase" with the more versatile "Notations" helper class.
  • de.unkrig.util.collections: Added the "Stack" interface and its implementation "ArrayStack".
  • de.unkrig.commons.lang: Added the "FunctionWhichThrows" interface and the "Functions" utility class.
Version 1.1.3, 2015-09-19
  • de.unkrig.commons.doclet: Removed the concept of generating MEDIAWIKI markup - MEDIAWIKI is for COLLABORATION, not for documentation.
  • Added "de.unkrig.commons.util.CommandLineOptions" for elegant command line processing.
  • Added "de.unkrig.commons.util.concurrent.ByteStreamSequentializer" and "ObjectSequentializer".
Version 1.1.2, 2015-08-31
  • Added optional dependencies on 'xz' and APACHE COMPRESS.
  • Added "de.unkrig.commons.doclet".
  • Added "de.unkrig.commons.text.xml".
  • Added "de.unkrig.commons.util.collections.IteratorUtil".
  • Various bug fixes in de.unkrig.commons.file
  • Added "de.unkrig.commons.file.contentstransformation.TextTransformer".
  • "de.unkrig.commons.file.fileprocessing" now supports parallel execution.
  • The "JavaScanner" now decodes unicode escapes - strictly speaking: wrong, but very useful in some situations.
Version 1.1.1, 2015-02-24
  • Gave up on Java 5 compatibility; Java >= 6 is now required.
  • UPDATE no longer takes two separate paramaters 'glob' and 'update-file', but one parameter 'glob=update-file', which makes it possible to use variable references when creating the 'update-file' name.
  • Push releases to OSSRH and eventually to MAVEN CENTRAL
Version 1.1.0, 2015-02-04
  • Major refactoring of 'de.unkrig.commons.file.fileprocessing' and 'de.unkrig.commons.file.contentsprocessing'.
  • de.unkrig.commons.file.filetransformation: Thanks to apache.commons.compress, we now not only support the ZIP archive format and the GZIP compression algorithm, but also the AR, ARJ, CPIO, DUMP, JAR, TAR and SEVEN_Z archive formats and the BZIP2, PACK200, XZ, LZMA, SNAPPY and Z compression algorithms.
  • Added 'de.unkrig.commons.lang.security.Sandbox'.
Version 1.0.5, 2014-05-01
  • Moved the <log>, <logging> and <simpleLogging> tasks from 'de.unkrig.commons.util' to 'de.unkrig.antcontrib'.
Version 1.0.4, 2014-04-29
  • 'keepOriginals' did not work for in-place file transformations.
  • <simplelogging>: Added attribute 'spec="..."'.
  • <simpleLogging>: Attribute 'debug="..."' no longer is boolean, but "FINE|FINER|FINEST".
  • <logging>: Removed attribute 'parent="..."'
  • <logging>: Added attribute 'clearFilter="true"'.
  • Renamed task <simplelogging> to <simpleLogging> (with a big 'L').
Versions 1.0.3 and earlier
No change log available.