Commons.unkrig.de
m (→Change Log) |
(→Change Log) |
||
Line 197: | Line 197: | ||
; Version 1.2.9 2017-02-02: | ; 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: | ; Version 1.2.8 2017-01-27: |
Revision as of 09:33, 30 July 2017
de.unkrig.commons is a versatile Java™ library that implements many useful container and utility classes. It extends and integrates seamlessly with the standard JDK library.
Contents |
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, Source code Download Maven POM
commons-doclet
Helper classes that are useful for those who write doclets.
Resources: JAVADOC, JAR file Download, Source code 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, Source code 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, Source code Download Maven POM
commons-junit4
Assertions etc. for those who write tests with JUNIT 4.
Resources: JAVADOC, JAR file Download, Source code Download Maven POM
commons-lang
- Utility classes for exceptions, threads and runnables
- "Protocol" interfaces like Producer, Consumer, Predicate, Transformer
Resources: JAVADOC, JAR file Download, Source code Download Maven POM
commons-math
de.unkrig.commons.math: A linear congruential generator; a random sequence generator
Resources: JAVADOC, JAR file Download, Source code Download Maven POM
commons-net
Resources: JAVADOC, JAR file Download, Source code Download Maven POM
commons-nullanalysis
- Annotations and utility classes for ECLIPSE annotation-base "null analysis".
Resources: JAVADOC, JAR file Download, Source code Download Maven POM
commons-reflect
Various utilities for Java's reflection API.
Resources: JAVADOC, JAR file Download, Source code Download Maven POM
commons-text
- An expression evaluator
- A small framework for creating scanners and parsers
- A Glob class that combines the widely known elements of UNIX file name globbing with the power of regular expressions
Resources: JAVADOC, JAR file Download, Source code 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, Source code 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.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<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<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<? super I, O> delegate, final Map<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<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<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<S> states, String regex, TT tokenType)" and "addRule(@Nullable EnumSet<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<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<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
-
- 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.