Norconex Commons Lang

3.x Release Notes

Release History

Version Date Description
3.0.0-SNAPSHOT 202?-??-?? Feature release.

3.0.0-SNAPSHOT Feature release. Release date 202?-??-?? Download

This release is currently in development and the following information may change.
New New SemanticVersion and SemanticVersionParser classes.
New New PackageManifest class.
New New JarDuplicates#get(File) method and collection based constructor.
New New StringUtil #ifBlank and #ifNotBlank methods.
New New FluentPropertyDescriptor methods: #isReadable, #isWritable, #readValue, and #writeValue.
New FluentPropertyDescriptor now has added support for builder-style accessor methods.
New New BeanUtil methods: #getPropertyDescriptors(Class), #getWriteMethod, #getReadMethod, #isWritable, #isReadable (the last two replaces the now deprecated #isGettable and #isSettable).
New New SystemCommand methods: #getErrorListeners and #getOutputListeners.
New New FileUtil#isFile methods providing a null-safe variant to File#isFile or Files#isRegularFile.
New New FileUtil#isFile methods providing a null-safe variant to File#isDirectory or Files#isDirectory.
New New FileUtil#toPath methods providing a null-safe variant to File#toPath.
New New FileUtil#toPaths methods.
New New JarDuplicates#getAllButGreatest method.
New New JarFile#toJarFiles methods.
New New #getMapChangeListeners and #clearMapChangeListeners methods on ObservableMap and MapChangeSupport.
New New TextMatcher #trim and #matchEmpty methods.
New New Regex #trim and #matchEmpty methods.
New New Credentials constructors accepting username, password, and password key.
New New DateUtil date conversion methods using UTC.
New New YearMonthDay LocalDate constructor plus new #toLocalDate and #toLocalDateTime methods.
Updated Now require Java 11+.
Updated Taglets rewritten to use the new jdk.javadoc.doclet.* API.
Updated Event name now included in generated string from Event#toString().
Updated Introduced Lombok.
Updated Huge jump in unit test code coverage.
Updated CollectionUtil#toArray now returns an empty array instead of null when a null collection is supplied.
Updated ConfigurationLoader#setVariablesFile now assumes the variables file is of the ".variables" format when its extension is neither ".variables" nor ".properties".
Updated Converter#toString(Object, String) will now return the default value when the object is null.
Updated EncryptionUtil#main(String[]) no longer issue a System#exit.
Updated EventManager#removeListener not remove entries by identity to be consistent with add methods.
Updated EqualUtil now considers supplying an empty vargars as always non equal.
Updated FileUtil#head now returns lines in order they are read.
Updated FileUtil#deleteEmptyDirs now deletes directories with empty directories, recursively.
Updated FileUtil#deleteEmptyDirs now throws IOException.
Updated FileUtil#deleteEmptyDirs methods were overloaded to support Path.
Updated FileUtil#dirEmpty method was overloaded to support Path.
Updated FileUtil#moveFile was overloaded to support Path and now creates missing directories in destination path. I also waits half a second between retries (was 1 second).
Updated FileUtil#moveFileToDir was overloaded to support Path.
Updated FileUtil#dirHasFile was overloaded to support Path.
Updated Dependency "java.xml.bind" replaced by "jakarta.xml.bind".
Updated ByteArrayOutputStream#toString method was overloaded to support Charset.
Updated IInputStreamFilter is now deprecated in favor of a string Predicate.
Updated JarDuplicates #hasVersionConflict and #getLatestVersion methods have been deprecated in favor of #areEquivalent and #getGreatest respectively.
Updated JarFile #getPath has been deprecated in favor of #toFile.
Updated JarDuplicateFinder#findJarDuplicates method was overloaded to also support collection of files.
Updated JarCopier now distinguish between source action and target action when resolving jar conflicts. Deprecated integer-based on-conflict strategies in favor of OnJarConflict.
Updated PropertyMatcher now support null field and value matchers.
Updated PropertyMatchers#addAll(varargs) now returns a boolean with a true value if the list has changed. Null values are now ignored.
Updated Regex#setFlags now returns itself.
Updated YearMonthDay methods affected by time-zone now always use UTC.
Updated YearMonthDayInterval now supports null values to represent infinity.
Updated XML now implements #equals and #hashCode.
Updated XML#populate and XML#validate methods no longer return a list of errors. Relies on ErrorHandler instead.
Updated XML#join has been deprecated.
Updated Added extra safety checks in XMLUtil to prevent XXE attacks.
New TextMatcher now considers null values as non-matching by defualt.
Fixed Properties#loadFromXML is now null-safe.
Fixed Fixed CollectionUtil#testRemoveNulls having opposite effect.
Fixed Fixed ConfigurationLoader not resolving fragment ".variables" file properly when including or parsing fragments.
Fixed Fixed CircularRange#is(...) always throwing IllegalArgumentException.
Fixed Fixed FileUtil#tail now always reading lines properly.
Fixed Fixed FileUtil#visitEmpty dir not always returning only empty dirs.
Fixed Fixed WebFile#compareTo throwing a ClassCastException when comparing to another WebFile instance.
Fixed Fixed some InputStreamConsumer#consume methods not registering listeners.
Fixed Fixed IOUtil#consumeUntil(Reader, IntPredicate) behaving like "consumeWhile".
Fixed Fixed DateUtil#toDate[...](Instant) not converting non UTC dates properly.
Removed Removed a number of classes and methods deprecated in previous major release: *.lang.config.IXMLConfigurable, *.lang.encrypt.EncryptionXMLUtil, *.lang.StringUtil, *.lang.map.Properties#set[...], *.lang.map.PropertyMatcher#[...], ProxySettings get|setProxy[...], DurationUtil, DataUnit#convert, DataUnit@to[...]., DataUnitFormatter constructors.
Removed Removed #finalize method from CachedInputStream and CachedOutputStream (finalize is deprecated in the Java API since Java 9).