dependabot[bot] opened a new pull request, #20894:
URL: https://github.com/apache/camel/pull/20894

   Bumps [com.cedarsoftware:java-util](https://github.com/jdereg/java-util) 
from 4.81.0 to 4.83.0.
   <details>
   <summary>Changelog</summary>
   <p><em>Sourced from <a 
href="https://github.com/jdereg/java-util/blob/master/changelog.md";>com.cedarsoftware:java-util's
 changelog</a>.</em></p>
   <blockquote>
   <h4>4.83.0  - 2025-01-18</h4>
   <ul>
   <li><strong>PERFORMANCE</strong>: <code>LRUCache</code> (THREADED strategy) 
- Major performance improvements reducing overhead from ~5x to ~1.4x vs 
ConcurrentHashMap
   <ul>
   <li>Replaced <code>System.nanoTime()</code> with logical clock (AtomicLong 
counter) for LRU ordering - ~5ns vs ~25ns per operation</li>
   <li>Simplified probabilistic timestamp updates using timestamp low bits - 
eliminates atomic/ThreadLocal operations on most accesses</li>
   <li>Removed extra <code>get()</code> call in <code>put()</code> since Node 
creation is now cheap with logical clock</li>
   <li>Added amortized eviction (batch every 16 inserts) to spread eviction 
cost across operations</li>
   </ul>
   </li>
   <li><strong>BUG FIX</strong>: <code>LRUCache</code> - Fixed hard cap 
enforcement to guarantee memory bounds under high-throughput scenarios
   <ul>
   <li>Split eviction into <code>tryEvict()</code> (skippable) and 
<code>forceEvict()</code> (blocks until complete)</li>
   <li>Hard cap (2x capacity) now uses <code>LockSupport.parkNanos(1000)</code> 
for efficient spinning with low CPU usage</li>
   <li>Fixes issue where rapid inserts could exceed memory bounds when eviction 
couldn't keep up</li>
   </ul>
   </li>
   <li><strong>CHANGE</strong>: <code>CaseInsensitiveMap</code> - Default cache 
changed from <code>ConcurrentHashMap</code> to <code>LRUCache</code> (THREADED 
strategy)
   <ul>
   <li>Provides true LRU eviction (hot entries preserved) vs random eviction 
with ConcurrentHashMap</li>
   <li>Guarantees bounded memory (max 2x capacity) vs loose bounds with 
ConcurrentHashMap</li>
   <li>Performance is equivalent or better in benchmarks</li>
   <li>Users can still use <code>replaceCache()</code> to configure 
ConcurrentHashMap if desired</li>
   </ul>
   </li>
   </ul>
   <h4>4.82.0  - 2025-01-17</h4>
   <ul>
   <li><strong>BUG FIX</strong>: <code>TypeUtilities</code> - Fixed 
WildcardType bounds array mutation bug
   <ul>
   <li>External <code>WildcardType</code> implementations return internal 
arrays from <code>getUpperBounds()</code>/<code>getLowerBounds()</code></li>
   <li>These arrays were being modified in-place during resolution, corrupting 
the original type</li>
   <li>Fix: Clone arrays from external implementations before modification; 
skip cloning for internal <code>WildcardTypeImpl</code></li>
   </ul>
   </li>
   <li><strong>BUG FIX</strong>: <code>TypeUtilities</code> - Fixed unsafe cast 
for method-level TypeVariables
   <ul>
   <li><code>TypeVariable</code> can be declared on <code>Method</code> or 
<code>Constructor</code>, not just <code>Class</code></li>
   <li>Casting <code>getGenericDeclaration()</code> to <code>Class</code> would 
throw <code>ClassCastException</code> for method-level type variables</li>
   <li>Fix: Check declaration type and return first bound for non-class type 
variables</li>
   </ul>
   </li>
   <li><strong>PERFORMANCE</strong>: <code>TypeUtilities</code> - Added array 
class cache to avoid repeated <code>Array.newInstance()</code> allocations in 
<code>getRawClass()</code></li>
   <li><strong>PERFORMANCE</strong>: <code>TypeUtilities</code> - Use 
<code>IdentitySet</code> instead of <code>HashSet</code> for cycle detection 
(reference equality is sufficient and faster)</li>
   <li><strong>IMPROVED</strong>: <code>TypeUtilities</code> - Simplified 
<code>hashCode()</code> implementations using standard <code>31 * result</code> 
pattern instead of <code>EncryptionUtilities.finalizeHash()</code></li>
   <li><strong>IMPROVED</strong>: <code>TypeUtilities.WildcardTypeImpl</code> - 
Constructor now takes ownership of arrays without cloning (internal class 
only)</li>
   <li><strong>IMPROVED</strong>: <code>DeepEquals</code> - Fixed Javadoc 
formatting using <code>{@code}</code> blocks for proper HTML rendering of 
generic types</li>
   <li><strong>DEPRECATED</strong>: <code>LRUCache(int capacity, int 
cleanupDelayMillis)</code> - The <code>cleanupDelayMillis</code> parameter is 
no longer used; use <code>LRUCache(int)</code> instead</li>
   <li><strong>BUILD</strong>: Added <code>@SuppressWarnings</code> annotations 
to eliminate compile warnings across multiple classes:
   <ul>
   <li><code>CaseInsensitiveMap</code>, <code>ClassUtilities</code>, 
<code>ConcurrentNavigableSetNullSafe</code>, <code>ConcurrentSet</code></li>
   <li><code>MultiKeyMap</code>, <code>ReflectionUtils</code>, 
<code>TTLCache</code>, <code>UrlUtilities</code>, 
<code>MapConversions</code></li>
   </ul>
   </li>
   <li><strong>BUILD</strong>: Removed unused regex timeout methods from 
<code>DateUtilities</code></li>
   <li><strong>BUILD</strong>: Cleaned up unused code in 
<code>ObjectConversions</code></li>
   <li><strong>PERFORMANCE</strong>: <code>MultiKeyMap</code> - Significant hot 
path optimizations using Class identity checks
   <ul>
   <li><code>valueHashCode()</code> - Reordered type checks to handle 
Integer/Long/Double first; uses Class identity (<code>==</code>) instead of 
<code>instanceof</code> for common types (55% CPU reduction in JFR 
profiling)</li>
   <li><code>computeElementHash()</code> - Added Class identity fast path for 
String/Integer/Long/Double, skipping 4+ instanceof checks for 75% of typical 
key elements</li>
   <li><code>flattenKey()</code> - Added fast path at method entry for 
String/Integer/Long/Double keys</li>
   <li><code>flattenObjectArrayN()</code> - Skip array/collection checks for 
known simple types</li>
   <li><code>isArrayOrCollection()</code> - Added Class identity short-circuit 
for common simple types</li>
   <li><strong>Result</strong>: Cedar MultiKeyMap win rate vs Apache Commons 
Collections improved from ~60% to ~71% in performance benchmarks, while 
providing thread-safety, null key/value support, unlimited key count, and 
value-based numeric equality that Apache lacks</li>
   </ul>
   </li>
   <li><strong>PERFORMANCE</strong>: <code>ClassValueSet</code> - Optimized 
with Class identity checks
   <ul>
   <li><code>contains()</code> and <code>remove()</code> now use 
<code>o.getClass() == Class.class</code> instead of <code>instanceof</code></li>
   <li><code>clear()</code> no longer creates unnecessary HashSet copy before 
invalidating cache</li>
   </ul>
   </li>
   <li><strong>NEW</strong>: <code>IdentitySet&lt;T&gt;</code> - 
High-performance generic Set using object identity (<code>==</code>) instead of 
<code>equals()</code>
   <ul>
   <li>Lightweight replacement for <code>Collections.newSetFromMap(new 
IdentityHashMap&lt;&gt;())</code></li>
   <li>Extends <code>AbstractSet&lt;T&gt;</code> and implements full 
<code>Set&lt;T&gt;</code> interface including <code>iterator()</code></li>
   <li>Uses open addressing with linear probing for excellent cache 
locality</li>
   </ul>
   </li>
   </ul>
   <!-- raw HTML omitted -->
   </blockquote>
   <p>... (truncated)</p>
   </details>
   <details>
   <summary>Commits</summary>
   <ul>
   <li><a 
href="https://github.com/jdereg/java-util/commit/357a0aaea32fbafe66964f07a0c35207362a6586";><code>357a0aa</code></a>
 Update version references and temporarily exclude test</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/1d9af2006042beb930befa7bc2e7d28d20cdc02c";><code>1d9af20</code></a>
 Use resetCacheToDefault() in test cleanup methods</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/8322996abe439812e825579072af73a442baea67";><code>8322996</code></a>
 Optimize LRUCache performance and make it default for CaseInsensitiveMap</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/e719110616ddafe37aea18f48c4561f001c130bf";><code>e719110</code></a>
 Change BigInteger/BigDecimal to Map to store string values</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/9881be0a7159003261ec62111072888a98a28823";><code>9881be0</code></a>
 Fix Atomic → Map to store primitive values, not wrappers</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/1d3d8e0aa132499c3e4ad4ac46ba6aa6fd6aee21";><code>1d3d8e0</code></a>
 Add comprehensive BitSet conversions to Converter</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/f5537bca7f25388730e7e107c128b82f4c212951";><code>f5537bc</code></a>
 Remove json-io round-trip skips for BitSet, AtomicIntegerArray, 
AtomicLongArr...</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/18bc60b441bf0aa757158d11a19d0ed4f5552cdb";><code>18bc60b</code></a>
 Enhance Enum conversions and improve EnumSet handling in Converter</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/e4042f5539ad69134acf36dca68bfb07e931b342";><code>e4042f5</code></a>
 Fix flaky test: increase buffer for concurrent cache measurement race</li>
   <li><a 
href="https://github.com/jdereg/java-util/commit/e6681d64e53443d5379b0ad7eaaf1d2a0ecdc674";><code>e6681d6</code></a>
 Release 4.82.0 - Update version numbers and release date</li>
   <li>Additional commits viewable in <a 
href="https://github.com/jdereg/java-util/compare/4.81.0...v4.83.0";>compare 
view</a></li>
   </ul>
   </details>
   <br />
   
   
   [![Dependabot compatibility 
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=com.cedarsoftware:java-util&package-manager=maven&previous-version=4.81.0&new-version=4.83.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
   
   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-automerge-start)
   [//]: # (dependabot-automerge-end)
   
   ---
   
   <details>
   <summary>Dependabot commands and options</summary>
   <br />
   
   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 <dependency name> 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)
   
   
   </details>


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to