Version | Date | Description |
---|---|---|
1.15.2 | 2021-10-18 | Maintenance release |
1.15.1 | 2019-12-21 | Maintenance release |
1.15.0 | 2018-06-03 | Feature release |
1.14.0 | 2017-11-26 | Feature release |
1.13.1 | 2017-05-16 | Bugfix release |
1.13.0 | 2017-04-25 | Feature release |
1.12.3 | 2016-11-15 | Bugfix release |
1.12.2 | 2016-10-07 | Bugfix release |
1.12.1 | 2016-09-17 | Bugfix release |
1.12.0 | 2016-08-29 | Feature release |
1.11.0 | 2016-08-25 | Feature release |
1.10.0 | 2016-08-22 | Feature release |
1.9.1 | 2016-08-09 | Maintenance release |
1.9.0 | 2016-02-27 | Feature release |
1.8.0 | 2015-11-01 | Feature release |
1.7.0 | 2015-08-07 | Feature release |
1.6.2 | 2015-07-21 | Maintenance release |
1.6.1 | 2015-06-13 | Maintenance release |
1.6.0 | 2015-03-27 | Feature release |
1.5.0 | 2014-11-24 | Feature release |
1.4.0 | 2014-07-09 | Feature release |
1.3.2 | 2014-06-16 | Maintenance release |
1.3.1 | 2014-03-06 | Maintenance release |
1.3.0 | 2014-03-05 | Feature release |
1.2.0 | 2014-01-10 | Minor release |
1.1.0 | 2013-08-19 | Minor release |
1.0.0 | 2013-06-04 | Open Source release |
Updated | Added conditional checks before log4j-specific method calls not covered by "log4j-over-slf4j". |
New | Added new normalization rules to URLNormalizer: removeQueryString, lowerCase, lowerCasePath, lowerCaseQuery, lowerCaseQueryParameterNames, lowerCaseQueryParameterValues. | |
Fixed | CachedInputStream no longer truncates last character under certain conditions. | |
Fixed | HttpURL#toAbsolute(String, String) will no longer try to make absolute URLs without the two slashes after colon (e.g., tel:12345). |
New | New EncryptionXMLUtil class offering methods to facilitate integration of EncryptionKey with IXMLConfigurable objects (or other XML objects). | |
Updated | EncryptionUtil now uses AES for encryption and supports custom key size. | |
Updated | ConfigurationLoader now sets the Velocity character encoding to UTF-8. | |
Updated | HttpURL now extract protocols before first colon, no longer requiring two forward slash. Also more lenient towards relative URLs. | |
Updated | QueryString now strips out fragments when part of a URL. |
New | Can now store and load Properties file as JSON. | |
New | New StringUtil class with truncation methods replacing the truncated part with a hash code. | |
New | New ResourceLoader class. | |
New | New ProxySettings class. | |
New | New CircularRange class. | |
New | New method variation on EhancedXMLStreamWriter to overwrite the default "writeBlanks" setting. | |
New | New FileUtil#createURLDirs method for creating directories matching URL segments. | |
New | New XMLConfigurationUtil#nullable* methods to consider empty tags/attributes as null whereas not having the tag at all uses the default value. | |
New | New XMLConfigurationUtil#keyExists methods to find if a key exists in XML even if empty. | |
New | New EqualsUtil#equalsMap(...) method for checking if two maps are equal, regardless of entry order. | |
New | It is now possible to pass a Charset where a string was expected for character encoding on a few utility classes. | |
New | Added ZIP constant to ContentType. | |
New | Added ICachedStream#getCacheDirectory(). | |
Updated | TextReader default maxReadSize is now 10 million characters (from 128,000) and now accepts -1 as the maxReadSize to mean unlimited. | |
Updated | Properties with multi-values now have their values stored as individual entries by default (as opposed to using a delimiter). Also more storing/loading options are now available. | |
Updated | TextReader#DEFAULT_MAX_READ_SIZE has been increased from 64 thousand to 10 million characters. | |
Updated | Dependency updates: Apache Commons Lang 3.6, Apache Commons Text 1.1, Open JSON 1.8. | |
Updated | ContentType now works better with types with parameters. Added two new related methods: #toBaseTypeString() and #toBaseType(). | |
Fixed | Fixed SystemCommand not handling arguments with spaces when they are properly quoted. | |
Fixed | Fixed CachedInputStream returning -1 or throwing EOF exception when it should not. | |
Fixed | Fixed QueryString setting "UTF-8" as the URL when invoking empty constructor (now blank). | |
Fixed | Fixed DurationParser now returning default value in some cases where the duration was invalid (returning 0 instead). | |
Fixed | Fixed CachedInputStream sometimes returning null when using #getCacheDirectory() method. | |
Removed | Removed Properties#isCaseSensitiveKeys(), deprecated since 1.8.0. |
Fixed | Fixed XMLConfigurationUtil reporting a validation error when encountering attributes from the XML Namespace ("http://www.w3.org/XML/1998/namespace"), such as xml:space="preserve". |
New | New "exec" package containing classes moved from Norconex JEF API. Those classes provide ways to easily execute external commands as well as making code execution "retriable" in case of failure. | |
New | IXMLConfigurable classes having XML schemas (XSD) are now validated when loaded (using XML Schema 1.1). | |
New | Now distributed with new command-line scripts for encryption, safe copying of jars, finding jar duplicates, and automating the installation of this library into other projects. | |
New | New CountingConsoleAppender for tracking how many log events of each type were logged (log4j). | |
New | New ListErrorHandler which stores SAX Exceptions that can later be retrieved as lists. | |
New | New ClasspathResourceResolver and ClasspathInput to resolve XSD schema includes/imports relative to each other in classpath. | |
New | New XMLConfigurationUtil class replacing ConfigurationUtil, offering new methods: #getCSVStringArray(...), #getCSVIntArray(...), #validate(...), #loadFromXML(...), #newInstance(Reader), #getDuration(...) | |
New | New IInputStreamListener, InputStreamLineListener, and InputStreamConsumer replacing now deprecated IStreamListener, and StreamGobbler. These new classes allow streaming of binary content, as well as text. | |
New | New DurationParser class to parse plain-English durations into milliseconds (e.g., "5 minutes and 30 seconds" or "5m30s"). | |
New | New URLNormalizer#removeTrailingHash() method. | |
New | New JarFile#isSameVersion(...) and JarFile#isSameVersionAndTime(...) methods. | |
New | New constructor for EnhancedXMLStreamWriter enabling support for indentation (pretty-print). | |
Updated | ConfigurationLoadedUtil now deprecated in favor of XMLConfigurationUtil. | |
Updated | JarDuplicateFinder now checks the last modified date when two versions are the same. | |
Updated | Now relies on Apache Xerces to parse XML Shema 1.1. | |
Updated | Dependency updates: Apache Commons Lang 3.5, Apache Ant 1.10.1, Apache Collections 3.2.2. | |
Removed | Removed all classes/methods deprecated since 1.5.0: ConfigurationLoaded#loadXML(Reader in), .io.FileMonitor, .io.FileUtil, .io.IFileChangeListener, .io.IFileVisitor, .file.FileUtil#deleteFile(File), ClassFinder#findImplementors(...). |
Updated | HttpURL no longer sets a null protocol when constructing non HTTP URLs. | |
Fixed | Fixed URLNormalizer#removeSessionIds() not handling cases where the jsessionid is followed by a dot and other word characters. |
Fixed | Fixed QueryString removing parameters without equal sign. |
Fixed | Fixed URLNormalizer#sortQueryParameters() not handling #fragments properly. |
New | New URLNormalizer#addDomainTrailingSlash() method. | |
Updated | HttpURL now preserves uppercase characters in protocol. | |
Fixed | Fixed HttpURL constructing URLs with null elements when protocol was not lowercase (e.g. HTTP). |
New | New URLNormalizer#removeTrailingSlash() method. | |
Updated | URLNormalizer#addTrailingSlash() has been deprecated in favor of URLNormalizer#addDirectoryTrailingSlash(). | |
Updated | Dependency updates: Apache Commons Lang 2.6. |
New | New Jar-related utility classes for jar file version conflict detection and resolution. |
Updated | Dependency updates: Apache Commons IO 2.5. | |
Updated | URLStreamer now has two new "streamToString" methods that accept a character encoding argument. Versions without the character encoding argument now assume UTF-8 as opposed to OS default charset. | |
Updated | ConfigurationLoader#loadString(...) now assumes UTF-8 as opposed to OS default charset for loading variables. | |
Fixed | When case-insensitive, Fixed Properties#addString(...) that was adding values multiple times when a key was previously inserted with a different case and fixed Properties#keySet() that returns the right number of keys now. |
New | New EncryptionUtil class to easily encrypt and decrypt any text using a security key. | |
Updated | Added support for the following BMP variations to ContentType: application/bmp, application/x-bmp, application/x-win-bitmap, image/ms-bmp, image/x-bitmap, image/x-bmp, image/x-ms-bmp, image/x-win-bitmap, image/x-windows-bmp | |
Updated | ContentType default file extension for image/jpeg is now .jpg to match most frequent usage. | |
Updated | Dependency updates: Apache Commons Collections 4.1. | |
Fixed | HttpURL#toAbsolute(String, String) now handles relative URLs with no leading slashes properly (e.g. "sample.html"). | |
Fixed | HttpURL#getRoot(String) now returns the proper root even when the URL contains invalid characters. | |
Fixed | Fixed ConfigurationUtils#newInstance(HierarchicalConfiguration, T, boolean) ignoring the "supportXMLConfigurable" argument. |
New | New normalization methods on URLNormalizer: #encodeNonURICharacters() and #encodeSpaces(). Spaces are no longer escaped automatically by default. | |
New | New HttpURL#toAbsolute(String, String) method for converting relative URLs to absolute ones, based on another absolute URL. | |
New | New HttpURL#encodeQueryString(String) method for properly encoding the query string portion of a URL. | |
New | New HttpURL#isPortDefault() method to quickly find out if a URL is using a default port for its protocol (http/https). | |
New | New HttpURL#getRoot() and HttpURL#getRoot(String) methods to extract the URL "root" from URLs (left part up to and including, the host name). | |
New | New PropertyMatcher class for easily storing a condition for matching a Properties key value. | |
Updated | HttpURL now keeps the URL fragment when present, and has accessors for it. | |
Updated | HttpURL#toString() no longer returns the port when the protocol is https and the port is 443. | |
Updated | Properties#isCaseSensitiveKeys() is now deprecated in favor of Properties#isCaseInsensitiveKeys() for consistency with constructor caseInsensitiveKeys argument. | |
Updated | Fixed URLNormalizer#removeDotSegments() is now implemented following RFC3986 prescribed algorithm. | |
Fixed | Fixed URLNormalizer#removeDuplicateSlashes() to no longer consider the two slashes between the protocol and hostname as being duplicates in some cases. | |
Fixed | Fixed URLNormalizer#addTrailingSlash() when the path was already ending with one. Also adds one now when there are none and the path is followed by a question mark or hash character. | |
Fixed | HttpURL now sets the port as 443 when initialized with a secure URL (https). | |
Fixed | Fixed possible URISyntaxException in URLNormalizer for certain URLs. | |
Fixed | UTF-8 unicode values are now used to percent-encode the part portion of a URL. | |
Fixed | When Woodstox factory is used as the XML parser, now disables structure validation which can cause issues when you want to use the xml writer on a stream that already has XML written to it (could cause "multiple roots" error). |
New | Added static methods HttpURL#toURL(String), HttpURL#toURI(String) and regular method HttpURL#getEncoding(). Can now specify URL encoding (charset) at construction time. Also added encodePath(String) method for URL-encoding the path portion of a URL. | |
New | Added new method QueryString#getEncoding(). | |
Updated | URLNormalizer now converts spaces to + instead of %20. In addition, it no longer URL-encodes characters when sorting or removing empty parameters (except for converting spaces to +). | |
Updated | ConfigurationUtil#newInstance(...) will now log an ERROR instead of DEBUG when a class is specified but not found in classpath. |
Updated | Jar manifest now includes implementation entries and specifications entries (matching Maven pom.xml). | |
Updated | Javadoc improvements. |
New | Added a length() method to CachedInputStream. | |
Fixed | Fix NullPointerException when passing a date array containing null values in Properties#datesToStringArray(Date...). | |
Fixed | Fix TextReader#readText(...) which could sometimes take forever to return (if ever). | |
Updated | Library update: Apache Commons Lang 3.4. |
New | New TimeIdGenerator class for generating time-based unique IDs that are guaranteed to be ordered and unique within a JVM. | |
New | New TextReader class for reading large text files, one chunk at a time, splitting text wisely at paragraphs/sentences/words when possible. | |
New | New ByteArrayOutputStream class derived from the Apache IO class of the same name, modified to offer methods to access subsets of bytes ranging form zero to the total number of bytes written so far. | |
New | New method IOUtil#toBufferedReader(Reader) that ensures to return either a BufferedReader wrapping original reader, or the reader itself if it already implements BufferedReader. | |
New | New method IOUtil#toBufferedInputStream(InputStream) that ensures to return either a BufferedInputStream wrapping original InputStream, or the input stream itself if it already implements BufferedInputStream. | |
New | New method IOUtil#startsWith(InputStream, byte[]) that returns true if given input stream starts the specified bytes array. (must support mark). | |
New | New method IOUtil#borrowBytes(InputStream, int) that gets and resets the specified number of bytes from the input stream (must support mark). | |
Updated | CachedInputStream now supports mark(int). Mark value is always unlimited (argument is ignored). | |
Updated | ContentType and ContentFamily now support for BIG2 and Quattro Pro content types. | |
Updated | ConfigurationUtil#newInstance(...) now throws an ConfigurationExceptions upon error when no default value is supplied. | |
Updated | Added SonaType snapshot repository to pom.xml. | |
Updated | Updated several maven plugins and added SonarQube maven plugin. | |
Updated | Javadoc improvements. | |
Updated | Upgraded depending libraries to the following: JUnit 4.12, Apache Commons Logging 1.2, Apache Commons Lang 3.3.2, |
New | New pipeline-related classes for a very simple pipeline framework for encapsulating executable tasks. | |
New | New CachedInputStream for caching input streams for re-use. Swaps memory overflow to file. | |
New | New CachedOutputStream for caching output streams for re-use as InputStream. Swaps memory overflow to file. | |
New | New ByteBufferInputStream for reading a ByteBuffer as an InputStream. | |
New | New EnhancedXMLStreamWriter class to facilitate writing of primitives and other types. | |
New | New MemoryUtil class to quickly obtain free JVM memory. | |
New | New methods on EqualsUtil for String equality: #equalsAnyIgnoreCase(...) #equalsAllIgnoreCase(...), and #equalsNoneIgnoreCase(...). | |
New | Added content-type mappings for Content Family. | |
New | New #valuesOf(String...) method on ContentType. | |
Updated | Now licensed under The Apache License, Version 2.0. | |
Updated | Properties default content delimiter is now more unique. | |
Updated | Deprecated ConfigurationLoader#loadXML(Reader) in favor of ConfigurationUtil#newXMLConfiguration(Reader). | |
Updated | FileUtil#deleteEmptyDirs(File) now forces directory deletion using FileUtil#delete(File) | |
Updated | ConfigurationUtil and ConfigurationLoader now ensure full disabling in all methods of value splitting in attributes and elements. | |
Updated | FileUtil#head(File, int) now uses UTF-8 as default encoding. | |
Updated | FilteredInputStream now uses UTF-8 as default encoding, and now offers an additional constructor accepting a character encoding. | |
Updated | StreamGobbler now uses UTF-8 as default encoding, and now offers an additional constructor accepting a character encoding. Also added #getType(), #getEncoding(), and #getStreamListeners() | |
Updated | IOUtil#tail(InputStream, lineQty) now uses UTF-8 as default encoding, and now offers an overloaded method accepting a character encoding: IOUtil#tail(InputStream, String, lineQty) | |
Updated | IOUtil#head(InputStream, lineQty) now uses UTF-8 as default encoding, and now offers an overloaded method accepting a character encoding: IOUtil#head(InputStream, String, lineQty) | |
Updated | IXMLConfigurable no longer extends Serializable. | |
Fixed | Fixed content type display name for application/ccxml+xml not being mapped properly. | |
Fixed | FileUtil#visitAllFiles(...) method now goes beyond 1 level deep when browsing recursively. |
New | New ClassFinder#findSubTypes(Class) method for finding subtypes in classpath using classpath roots. | |
New | New DataUnit class to perform data unit (KB, MB, GB, etc) conversions much like Java TimeUnit class. | |
New | New PercentFormatter to format fraction values as percentage string. | |
New | New DataUnitFormatter to format any data unit ot a human-readable format taking into account locale and decimals. | |
New | New ContentType class to represent a file media/MIME type and obtain its usual name, content family, and file extension(s). | |
New | New ContentFamily class to represent a group of files of similar content types. Useful for content categorization. | |
New | Added new classes for listening to java.util.Map changes: ObservableMap, MapChangeSupport, IMapChangeListener, and MapChangeEvent. | |
Updated | Deprecation of FileUtil#deleteFile(File) in favour of FileUtil#delete(File). | |
Updated | FileUtil#delete(File) now invokes System.gc() upon deletion failure to fix a known java bug when trying to delete files on windows. | |
Updated | Properties now uses UTF-8 to load and store itself. | |
Updated | FileMonitor, FileUtil, IFileChangeListener, IFileVisitor are now found under the com.norconex.commons.lang.file package. Classes have been deprecated in former location. | |
Updated | Now requires Java 7 or higher. | |
Updated | Refactored Properties to extend ObservableMap so changes can optionally be tracked. | |
Updated | URLNormalizer no longer rejects URLs with spaces in them. It will now convert spaces to %20 and log a warning. | |
Updated | Deprecation of ClassFinder#findImplementors(XXX) in favour of ClassFinder#findSubTypes(XXX). | |
Fixed | Fix FileUtil#tail(...) method when the file has less lines than the amount requested. | |
Fixed | Fix junit Properties.load to use the whole delimiter. | |
Fixed | Fix Properties.remove to return null if key is non existent. | |
Fixed | Fix junit test for converting IP to domain. Was failing due to wikipedia IP change. |
Updated | URLNormalizer no longer rejects URLs with spaces in them. It will now convert spaces to %20 and log a warning. | |
Fixed | Fix junit test for converting IP to domain. Was failing due to wikipedia IP change. |
Fixed | Fixed missing localized text for DurationUtil. |
New | New YearMonthDay class for a local date without time. | |
New | New YearMonthDayInterval (and unit test) class for a local date range without time. | |
New | New FileMonitor and IFileChangeListener to be notified of file changes. | |
New | New methods on FileUtil: #visitEmptyDirs(File, IFileVisitor) #visitEmptyDirs(File, IFileVisitor, FileFilter) #visitAllDirs(File, IFileVisitor, FileFilter) #deleteEmptyDirs(File, Date) | |
Updated | Upgraded Apache HttpClient to version 4.3.2, Apache Commons Configuration to 1.10, and Apache Commons Lang to 3.2.1. Refactored affected code. |
New | New getter and setter for URL "path" on HttpURL. | |
Updated | Javadoc improvements. | |
Fixed | HttpURL#getLastPathSegment() no longer returns the query string with it. | |
Fixed | Jars are now closed properly in ClassFinder. | |
Fixed | ClassFinder#findImplementors(...) now only returns concrete classes. |
New | New #toSafeFileName and #fromSafeFileName method on FileUtil for creating OS friendly file names out of any strings. | |
New | New DurationUtil class for nice and easy formatting of time durations. | |
Fixed | Fixed NullPointerException in FileUtil when deleting empty directories. |
New | Starting with this release, Norconex Commons Lang is open-source under GPL3. |