ClassUtilities.addPermanentClassAlias() - add an alias that .forName() can use to instantiate class (e.g. "date" for java.util.Date)
ClassUtilities.removePermanentClassAlias() - remove an alias that .forName() can no longer use.
Updated build plug-in dependencies.
2.13.0
LRUCache improved garbage collection handling to avoid gc Nepotism issues by nulling out node references upon eviction. Pointed out by Ben Manes.
Combined ForkedJoinPool and ScheduledExecutorService into use of only ScheduledExecutorServive, which is easier for user. The user can supply null or their own scheduler. In the case of null, one will be created and the shutdown() method will terminate it. If the user supplies a ScheduledExecutorService it will be used, but not shutdown when the shutdown() method is called. This allows LRUCache to work well in containerized environments.
2.12.0
LRUCache updated to support both "locking" and "threaded" implementation strategies.
2.11.0
LRUCache re-written so that it operates in O(1) for get(),put(), and remove() methods without thread contention. When items are placed into (or removed from) the cache, it schedules a cleanup task to trim the cache to its capacity. This means that it will operate as fast as a ConcurrentHashMap, yet shrink to capacity quickly after modifications.
2.10.0
Fixed potential memory leak in LRUCache.
Added nextPermutation to MathUtilities.
Added size(),, isEmpty(), and hasContent to CollectionUtilities.
2.9.0
Added SealableList which provides a List (or List wrapper) that will make it read-only (sealed) or read-write (unsealed), controllable via a Supplier<Boolean>. This moves the immutability control outside the list and ensures that all views on the List respect the sealed-ness. One master supplier can control the immutability of many collections.
Added SealableSet similar to SealableList but with Set nature.
Added SealableMap similar to SealableList but with Map nature.
Added SealableNavigableSet similar to SealableList but with NavigableSet nature.
Added SealableNavigableMap similar to SealableList but with NavigableMap nature.
Updated ConcurrentList to support wrapping any List and making it thread-safe, including all view APIs: iterator(),listIterator(),listIterator(index). The no-arg constructor creates a ConcurrentList ready-to-go. The constructor that takes a List parameter constructor wraps the passed in list and makes it thread-safe.
Renamed ConcurrentHashSet to ConcurrentSet.
2.8.0
Added ClassUtilities.doesOneWrapTheOther() API so that it is easy to test if one class is wrapping the other.
Added StringBuilder and StringBuffer to Strings to the Converter. Eliminates special cases for .toString() calls where generalized convert(src, type) is being used.
2.7.0
Added ConcurrentList, which implements a thread-safe List. Provides all API support except for listIterator(), however, it implements iterator() which returns an iterator to a snapshot copy of the List.
Added ConcurrentHashSet, a true Set which is a bit easier to use than ConcurrentSkipListSet, which as a NavigableSet and SortedSet, requires each element to be Comparable.
Performance improvement: On LRUCache, removed unnecessary Collections.SynchronizedMap surrounding the internal LinkedHashMap as the concurrent protection offered by ReentrantReadWriteLock is all that is needed.
2.6.0
Performance improvement: Converter instance creation is faster due to the code no longer copying the static default table. Overrides are kept in separate variable.
New capability added: MathUtilities.parseToMinimalNumericType() which will parse a String number into a Long, BigInteger, Double, or BigDecimal, choosing the "smallest" datatype to represent the number without loss of precision.
New conversions added to convert from Map to StringBuilder and StringBuffer.
2.5.0
pom.xml file updated to support both OSGi Bundle and JPMS Modules.
module-info.class resides in the root of the .jar but it is not referenced.
2.4.9
Updated to allow the project to be compiled by versions of JDK > 1.8 yet still generate class file format 52 .class files so that they can be executed on JDK 1.8+ and up.
Incorporated @AxataDarji GraphComparator changes that reduce cyclomatic code complexity (refactored to smaller methods)
2.4.8
Performance improvement: DeepEquals.deepHashCode() - now using IdentityHashMap() for cycle (visited) detection.
Modernization: UniqueIdGenerator - updated to use Lock.lock() and Lock.unlock() instead of synchronized keyword.
Using json-io 4.14.1 for cloning object in "test" scope, eliminates cycle depedencies when building both json-io and java-util.
2.4.7
All 687 conversions supported are now 100% cross-product tested. Converter test suite is complete.
2.4.6
All 686 conversions supported are now 100% cross-product tested. There will be more exception tests coming.
2.4.5
Added ReflectionUtils.getDeclaredFields() which gets fields from a Class, including an Enum, and special handles enum so that system fields are not returned.
... (truncated)
Commits
7b57fb3 * ClassUtilities.addPermanentClassAlias() - add an alias that .forName() ...
a84eda1 updated build dependencies and changelog.md
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps com.cedarsoftware:java-util from 1.68.0 to 2.14.0.
Changelog
Sourced from com.cedarsoftware:java-util's changelog.
... (truncated)
Commits
7b57fb3
*ClassUtilities.addPermanentClassAlias()
- add an alias that.forName()
...a84eda1
updated build dependencies and changelog.md5cc3f54
updated comment due too spacing7324aca
- removed travis.ymlc87e830
minor javadoc updates0863337
updated readmeda7ba4e
Changes made to fix gc nepotism (potential memory leak due to GC pointers bet...8973e68
updated JavaDocs274fed2
Javadoc updates9adab4a
Significantly improved JavadocsDependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show