diff --git a/.github/actions/run-gradle/action.yml b/.github/actions/run-gradle/action.yml
index f12eb25187..c649a0a782 100644
--- a/.github/actions/run-gradle/action.yml
+++ b/.github/actions/run-gradle/action.yml
@@ -53,7 +53,7 @@ runs:
website: jdk.java.net
version: latest
- name: Set up GraalVM
- uses: graalvm/setup-graalvm@2f25c0caae5b220866f732832d5e3e29ff493338 # v1.2.1
+ uses: graalvm/setup-graalvm@2911b2304bee2c2f59b9a67bf45f025a6b6de4b1 # v1.2.2
if: inputs.java == 'GraalVM'
with:
distribution: 'graalvm'
@@ -79,7 +79,7 @@ runs:
distribution: temurin
- name: Setup Gradle
id: setup-gradle
- uses: gradle/actions/setup-gradle@31ae3562f68c96d481c31bc1a8a55cc1be162f83 # v3.4.1
+ uses: gradle/actions/setup-gradle@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
env:
JAVA_HOME: ${{ steps.setup-gradle-jdk.outputs.path }}
ORG_GRADLE_PROJECT_org.gradle.java.installations.auto-download: 'false'
diff --git a/.github/workflows/actionlint.yml b/.github/workflows/actionlint.yml
index fc1b27d585..0894ebd208 100644
--- a/.github/workflows/actionlint.yml
+++ b/.github/workflows/actionlint.yml
@@ -16,7 +16,7 @@ jobs:
github.com:443
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: actionlint
- uses: reviewdog/action-actionlint@52819f5f70db72e17c2fadecd44a791ae4459276 # v1.49.0
+ uses: reviewdog/action-actionlint@afad3b6ab835e5611bda8c8193377e2d5c21413d # v1.51.0
env:
SHELLCHECK_OPTS: -e SC2001 -e SC2035 -e SC2046 -e SC2061 -e SC2086 -e SC2156
with:
diff --git a/.github/workflows/codacy.yml b/.github/workflows/codacy.yml
index 67acd7326e..b172d63d53 100644
--- a/.github/workflows/codacy.yml
+++ b/.github/workflows/codacy.yml
@@ -47,7 +47,7 @@ jobs:
if: steps.check_files.outputs.files_exists == 'true'
run: jq -c '.runs |= unique_by({tool, invocations, results})' < results.sarif > codacy.sarif
- name: Upload result to GitHub Code Scanning
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
if: steps.check_files.outputs.files_exists == 'true'
continue-on-error: true
with:
diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml
index 9e3af0389f..bcbde24d3c 100644
--- a/.github/workflows/codeql.yml
+++ b/.github/workflows/codeql.yml
@@ -57,10 +57,10 @@ jobs:
java: ${{ env.JAVA_VERSION }}
token: ${{ secrets.GITHUB_TOKEN }}
- name: Initialize CodeQL
- uses: github/codeql-action/init@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/init@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
with:
languages: java
- name: Autobuild
- uses: github/codeql-action/autobuild@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/autobuild@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
- name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/analyze@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
diff --git a/.github/workflows/dependency-check.yml b/.github/workflows/dependency-check.yml
index d2b5826b25..d019ccf158 100644
--- a/.github/workflows/dependency-check.yml
+++ b/.github/workflows/dependency-check.yml
@@ -17,6 +17,9 @@ jobs:
actions: read
contents: read
security-events: write
+ if: >
+ github.actor != 'dependabot[bot]'
+ && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.fork == false)
steps:
- name: Harden Runner
uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
@@ -57,7 +60,7 @@ jobs:
with:
files: build/reports/dependency-check-report.sarif
- name: Upload result to GitHub Code Scanning
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
if: steps.check_files.outputs.files_exists == 'true'
with:
sarif_file: build/reports/dependency-check-report.sarif
diff --git a/.github/workflows/dependency-submission-pr-retreive.yml b/.github/workflows/dependency-submission-pr-retreive.yml
index b0b02d8e50..4e4eb44eba 100644
--- a/.github/workflows/dependency-submission-pr-retreive.yml
+++ b/.github/workflows/dependency-submission-pr-retreive.yml
@@ -35,6 +35,6 @@ jobs:
repo1.maven.org:443
services.gradle.org:443
- name: Retrieve and submit dependency graph
- uses: gradle/actions/dependency-submission@31ae3562f68c96d481c31bc1a8a55cc1be162f83 # v3.4.1
+ uses: gradle/actions/dependency-submission@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
with:
dependency-graph: download-and-submit
diff --git a/.github/workflows/dependency-submission-pr-submit.yml b/.github/workflows/dependency-submission-pr-submit.yml
index f73c9e7f8d..298771380a 100644
--- a/.github/workflows/dependency-submission-pr-submit.yml
+++ b/.github/workflows/dependency-submission-pr-submit.yml
@@ -38,7 +38,7 @@ jobs:
java-version: ${{ env.JAVA_VERSION }}
distribution: temurin
- name: Submit Dependency Graph
- uses: gradle/actions/dependency-submission@31ae3562f68c96d481c31bc1a8a55cc1be162f83 # v3.4.1
+ uses: gradle/actions/dependency-submission@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
dependency-graph: generate-and-upload
diff --git a/.github/workflows/dependency-submission.yml b/.github/workflows/dependency-submission.yml
index 7f2299fa7a..0a13e3ab9f 100644
--- a/.github/workflows/dependency-submission.yml
+++ b/.github/workflows/dependency-submission.yml
@@ -38,6 +38,6 @@ jobs:
java-version: ${{ env.JAVA_VERSION }}
distribution: temurin
- name: Submit Dependency Graph
- uses: gradle/actions/dependency-submission@31ae3562f68c96d481c31bc1a8a55cc1be162f83 # v3.4.1
+ uses: gradle/actions/dependency-submission@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
with:
cache-encryption-key: ${{ secrets.GRADLE_ENCRYPTION_KEY }}
diff --git a/.github/workflows/devskim.yml b/.github/workflows/devskim.yml
index 196d7853ea..e7ce45b769 100644
--- a/.github/workflows/devskim.yml
+++ b/.github/workflows/devskim.yml
@@ -31,6 +31,6 @@ jobs:
- name: Run DevSkim scanner
uses: microsoft/DevSkim-Action@914fa647b406c387000300b2f09bb28691be2b6d # v1.0.14
- name: Upload DevSkim scan results to GitHub Security tab
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
with:
sarif_file: devskim-results.sarif
diff --git a/.github/workflows/examples.yml b/.github/workflows/examples.yml
index 18d6e2514c..2b04dc9e34 100644
--- a/.github/workflows/examples.yml
+++ b/.github/workflows/examples.yml
@@ -39,7 +39,7 @@ jobs:
java-version: ${{ env.JAVA_VERSION }}
distribution: temurin
- name: Setup Gradle
- uses: gradle/actions/setup-gradle@31ae3562f68c96d481c31bc1a8a55cc1be162f83 # v3.4.1
+ uses: gradle/actions/setup-gradle@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
with:
add-job-summary: never
cache-read-only: false
diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml
index b2db44c243..808beac813 100644
--- a/.github/workflows/gradle-wrapper-validation.yml
+++ b/.github/workflows/gradle-wrapper-validation.yml
@@ -18,4 +18,4 @@ jobs:
github.com:443
services.gradle.org:443
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- - uses: gradle/actions/wrapper-validation@31ae3562f68c96d481c31bc1a8a55cc1be162f83 # v3.4.1
+ - uses: gradle/actions/wrapper-validation@dbbdc275be76ac10734476cc723d82dfe7ec6eda # v3.4.2
diff --git a/.github/workflows/qodana.yml b/.github/workflows/qodana.yml
index 269a473301..47d7e377a5 100644
--- a/.github/workflows/qodana.yml
+++ b/.github/workflows/qodana.yml
@@ -62,12 +62,12 @@ jobs:
java: ${{ env.JAVA_VERSION }}
arguments: build -x test
- name: Qodana - Code Inspection
- uses: JetBrains/qodana-action@32840fdb87f8dd110e0a6b09323c7142b667b25d # v2024.1.5
+ uses: JetBrains/qodana-action@c96b39a84dea25f2a24b38a3f6e89903306d5e2a # v2024.1.8
env:
QODANA_TOKEN: ${{ secrets.QODANA_TOKEN }}
with:
upload-result: true
- name: Upload SARIF file for GitHub Advanced Security Dashboard
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
with:
sarif_file: ${{ runner.temp }}/qodana/results/qodana.sarif.json
diff --git a/.github/workflows/scorecards-analysis.yml b/.github/workflows/scorecards-analysis.yml
index c9379a337d..8f7ce1827d 100644
--- a/.github/workflows/scorecards-analysis.yml
+++ b/.github/workflows/scorecards-analysis.yml
@@ -57,6 +57,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to code-scanning
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
with:
sarif_file: results.sarif
diff --git a/.github/workflows/semgrep.yml b/.github/workflows/semgrep.yml
index afa2d8cdc3..4411543c5c 100644
--- a/.github/workflows/semgrep.yml
+++ b/.github/workflows/semgrep.yml
@@ -34,7 +34,7 @@ jobs:
if: steps.check_files.outputs.files_exists == 'true'
run: jq -c '.runs[0].tool.driver.rules |= unique_by(.id)' < results.sarif > semgrep.sarif
- name: Upload SARIF file for GitHub Advanced Security Dashboard
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
if: steps.check_files.outputs.files_exists == 'true'
continue-on-error: true
with:
diff --git a/.github/workflows/snyk.yml b/.github/workflows/snyk.yml
index dc628ff588..869c2fe39c 100644
--- a/.github/workflows/snyk.yml
+++ b/.github/workflows/snyk.yml
@@ -6,6 +6,7 @@ permissions: read-all
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
+ JAVA_VERSION: 21
jobs:
snyk:
@@ -14,53 +15,39 @@ jobs:
actions: read
contents: read
security-events: write
+ container:
+ # Incompatible with Harden Runner
+ image: snyk/snyk:gradle-jdk21
+ env:
+ SNYK_INTEGRATION_VERSION: gradle-jdk21
+ SNYK_INTEGRATION_NAME: GITHUB_ACTIONS
+ FORCE_COLOR: 2
if: github.event.repository.fork == false
steps:
- - name: Harden Runner
- uses: step-security/harden-runner@17d0e2bd7d51742c71671bd19fa12bdc9d40a3d6 # v2.8.1
+ - name: Checkout repository
+ uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ - name: Setup Gradle
+ uses: ./.github/actions/run-gradle
with:
- disable-sudo: true
- egress-policy: block
- allowed-endpoints: >
- api.adoptium.net:443
- api.foojay.io
- api.github.com:443
- api.snyk.io:443
- caffeine.gradle-enterprise.cloud:443
- downloads.gradle.org:443
- downloads.gradle-dn.com:443
- github.com:443
- jcenter.bintray.com:443
- objects.githubusercontent.com:443
- plugins.gradle.org:443
- plugins-artifacts.gradle.org:443
- repo.maven.apache.org:443
- repo1.maven.org:443
- services.gradle.org:443
- - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
+ java: ${{ env.JAVA_VERSION }}
+ token: ${{ secrets.GITHUB_TOKEN }}
- name: Run Snyk test
- uses: snyk/actions/gradle-jdk17@master
- continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
- with:
- command: test
- args: --sarif-file-output=snyk.sarif --all-sub-projects -- --no-configuration-cache
+ continue-on-error: true
+ run: snyk test --sarif-file-output=snyk.sarif --all-sub-projects -- --no-configuration-cache
- name: Check file existence
id: check_files
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
with:
files: snyk.sarif
- name: Upload result to GitHub Code Scanning
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
if: steps.check_files.outputs.files_exists == 'true'
with:
sarif_file: snyk.sarif
- name: Run Snyk monitor
- uses: snyk/actions/gradle-jdk17@master
- continue-on-error: true
env:
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
- with:
- command: monitor
- args: --all-sub-projects -- --no-configuration-cache
+ continue-on-error: true
+ run: snyk monitor --all-sub-projects -- --no-configuration-cache
diff --git a/.github/workflows/spelling.yml b/.github/workflows/spelling.yml
index eaa264b350..e9cab89831 100644
--- a/.github/workflows/spelling.yml
+++ b/.github/workflows/spelling.yml
@@ -16,7 +16,7 @@ jobs:
github.com:443
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Misspell
- uses: reviewdog/action-misspell@8cd4a880dd86b1b175092c18c23cdec31283d654 # v1.19.0
+ uses: reviewdog/action-misspell@30433ca7be17888deb78a32521706fb65defbf3f # v1.21.0
with:
reporter: github-check
github_token: ${{ secrets.GITHUB_TOKEN }}
@@ -34,4 +34,4 @@ jobs:
objects.githubusercontent.com:443
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Typos
- uses: crate-ci/typos@cfe759ac8dd421e203cc293a373396fbc6fe0d4b # v1.22.7
+ uses: crate-ci/typos@c16dc8f5b4a7ad6211464ecf136c69c851e8e83c # v1.22.9
diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml
index c921c77078..d737056c44 100644
--- a/.github/workflows/trivy.yml
+++ b/.github/workflows/trivy.yml
@@ -23,12 +23,12 @@ jobs:
pkg-containers.githubusercontent.com:443
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
- name: Run Trivy vulnerability scanner
- uses: aquasecurity/trivy-action@595be6a0f6560a0a8fc419ddf630567fc623531d # v0.22.0
+ uses: aquasecurity/trivy-action@7c2007bcb556501da015201bcba5aa14069b74e2 # v0.23.0
with:
scan-type: fs
format: sarif
output: trivy-results.sarif
- name: Upload Trivy scan results to GitHub Security tab
- uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10
+ uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11
with:
sarif_file: trivy-results.sarif
diff --git a/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/CacheContextSubject.java b/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/CacheContextSubject.java
index 2e73a71e49..3e98bf232d 100644
--- a/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/CacheContextSubject.java
+++ b/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/CacheContextSubject.java
@@ -25,8 +25,6 @@
import static com.google.common.collect.ImmutableListMultimap.toImmutableListMultimap;
import static com.google.common.collect.ImmutableMap.toImmutableMap;
import static com.google.common.collect.ImmutableMultiset.toImmutableMultiset;
-import static com.google.common.truth.OptionalLongSubject.optionalLongs;
-import static com.google.common.truth.StreamSubject.streams;
import static com.google.common.truth.Truth.assertAbout;
import static java.util.Objects.requireNonNull;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
@@ -83,8 +81,7 @@ public static CacheContextSubject assertThat(CacheContext actual) {
public void hasWeightedSize(long expectedSize) {
checkArgument(expectedSize >= 0, "expectedSize (%s) must be >= 0", expectedSize);
actual.cache().policy().eviction().ifPresentOrElse(policy -> {
- check("weightedSize()").about(optionalLongs())
- .that(policy.weightedSize()).hasValue(expectedSize);
+ check("weightedSize()").that(policy.weightedSize()).hasValue(expectedSize);
}, () -> {
long weight = actual.cache().asMap().entrySet().stream()
.mapToLong(entry -> actual.weigher().weigh(entry.getKey(), entry.getValue()))
@@ -97,7 +94,7 @@ public void hasWeightedSize(long expectedSize) {
public void hasWeightedSizeLessThan(long other) {
checkArgument(other >= 0, "other (%s) must be >= 0", other);
actual.cache().policy().eviction().ifPresentOrElse(policy -> {
- check("weightedSize()").about(optionalLongs()).that(policy.weightedSize()).isPresent();
+ check("weightedSize()").that(policy.weightedSize()).isPresent();
check("weightedSize()").that(policy.weightedSize().orElseThrow()).isLessThan(other);
}, () -> {
long weight = actual.cache().asMap().entrySet().stream()
@@ -320,14 +317,14 @@ public void hasSize(long expectedSize) {
public void containsExactlyValues(Object... values) {
awaitUntil((type, listener) -> {
var stream = listener.removed().stream().map(RemovalNotification::getValue);
- check(type).about(streams()).that(stream).containsExactly(values);
+ check(type).that(stream).containsExactly(values);
});
}
public void hasNoEvictions() {
awaitUntil((type, listener) -> {
var stream = listener.removed().stream().filter(entry -> entry.getCause().wasEvicted());
- check(type).about(streams()).that(stream).isEmpty();
+ check(type).that(stream).isEmpty();
});
}
diff --git a/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/GuavaCacheFromContext.java b/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/GuavaCacheFromContext.java
index 976f34c45b..dc1d532f51 100644
--- a/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/GuavaCacheFromContext.java
+++ b/caffeine/src/test/java/com/github/benmanes/caffeine/cache/testing/GuavaCacheFromContext.java
@@ -173,7 +173,7 @@ public V get(K key, Function super K, ? extends V> mappingFunction) {
return cache.get(key, () -> {
V value = mappingFunction.apply(key);
if (value == null) {
- throw new CacheMissException();
+ throw CacheMissException.INSTANCE;
}
return value;
});
@@ -639,7 +639,7 @@ public V load(K key) throws Exception {
error.set(null);
V value = delegate.load(key);
if (value == null) {
- throw new CacheMissException();
+ throw CacheMissException.INSTANCE;
}
return value;
} catch (Exception e) {
@@ -707,6 +707,11 @@ public GuavaCacheEntry(K key, V value, long snapshot) {
}
static final class CacheMissException extends RuntimeException {
+ private static final CacheMissException INSTANCE = new CacheMissException();
private static final long serialVersionUID = 1L;
+
+ CacheMissException() {
+ super(null, null, /* enableSuppression */ false, /* writableStackTrace */ false);
+ }
}
}
diff --git a/examples/coalescing-bulkloader-reactor/gradle/libs.versions.toml b/examples/coalescing-bulkloader-reactor/gradle/libs.versions.toml
index cb45473fce..59b413a8aa 100644
--- a/examples/coalescing-bulkloader-reactor/gradle/libs.versions.toml
+++ b/examples/coalescing-bulkloader-reactor/gradle/libs.versions.toml
@@ -2,7 +2,7 @@
caffeine = "3.1.8"
junit = "5.11.0-M2"
reactor = "3.6.7"
-truth = "1.4.2"
+truth = "1.4.3"
versions = "0.51.0"
[libraries]
diff --git a/examples/coalescing-bulkloader-reactor/gradle/wrapper/gradle-wrapper.properties b/examples/coalescing-bulkloader-reactor/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/examples/coalescing-bulkloader-reactor/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/coalescing-bulkloader-reactor/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/coalescing-bulkloader-reactor/settings.gradle.kts b/examples/coalescing-bulkloader-reactor/settings.gradle.kts
index e488722571..cbe0c3465e 100644
--- a/examples/coalescing-bulkloader-reactor/settings.gradle.kts
+++ b/examples/coalescing-bulkloader-reactor/settings.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/examples/coalescing-bulkloader-reactor/src/test/java/com/github/benmanes/caffeine/examples/coalescing/bulkloader/CoalescingBulkLoaderTest.java b/examples/coalescing-bulkloader-reactor/src/test/java/com/github/benmanes/caffeine/examples/coalescing/bulkloader/CoalescingBulkLoaderTest.java
index 622377403b..d30389c93f 100644
--- a/examples/coalescing-bulkloader-reactor/src/test/java/com/github/benmanes/caffeine/examples/coalescing/bulkloader/CoalescingBulkLoaderTest.java
+++ b/examples/coalescing-bulkloader-reactor/src/test/java/com/github/benmanes/caffeine/examples/coalescing/bulkloader/CoalescingBulkLoaderTest.java
@@ -84,7 +84,7 @@ public void maxSize() {
}
results.forEach((key, future) -> assertThat(future.join()).isEqualTo(-key));
- batchSizes.forEach(batchSize-> assertThat(batchSize).isAtMost(maxSize));
+ batchSizes.forEach(batchSize -> assertThat(batchSize).isAtMost(maxSize));
assertThat(batchSizes).hasSize(requests / maxSize);
long delay = TimeUnit.NANOSECONDS.toMillis(end.get() - start);
diff --git a/examples/graal-native/gradle/libs.versions.toml b/examples/graal-native/gradle/libs.versions.toml
index 0d233208ed..86d7356c16 100644
--- a/examples/graal-native/gradle/libs.versions.toml
+++ b/examples/graal-native/gradle/libs.versions.toml
@@ -2,7 +2,7 @@
caffeine = "3.1.8"
graal = "0.10.2"
junit = "5.11.0-M2"
-truth = "1.4.2"
+truth = "1.4.3"
versions = "0.51.0"
[libraries]
diff --git a/examples/graal-native/gradle/wrapper/gradle-wrapper.properties b/examples/graal-native/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/examples/graal-native/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/graal-native/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/graal-native/settings.gradle.kts b/examples/graal-native/settings.gradle.kts
index 7c5d22b6d7..93bb359b85 100644
--- a/examples/graal-native/settings.gradle.kts
+++ b/examples/graal-native/settings.gradle.kts
@@ -6,7 +6,7 @@ pluginManagement {
}
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/examples/hibernate/gradle/libs.versions.toml b/examples/hibernate/gradle/libs.versions.toml
index d0afdd17d8..b100c2580f 100644
--- a/examples/hibernate/gradle/libs.versions.toml
+++ b/examples/hibernate/gradle/libs.versions.toml
@@ -5,7 +5,7 @@ hibernate = "6.5.2.Final"
junit = "5.11.0-M2"
log4j2 = "3.0.0-beta2"
slf4j = "2.0.7"
-truth = "1.4.2"
+truth = "1.4.3"
versions = "0.51.0"
[libraries]
diff --git a/examples/hibernate/gradle/wrapper/gradle-wrapper.properties b/examples/hibernate/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/examples/hibernate/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/hibernate/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/hibernate/settings.gradle.kts b/examples/hibernate/settings.gradle.kts
index 8789da6487..c4a1417e6e 100644
--- a/examples/hibernate/settings.gradle.kts
+++ b/examples/hibernate/settings.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/examples/indexable/README.md b/examples/indexable/README.md
index 07a41235ae..c5ab3d8837 100644
--- a/examples/indexable/README.md
+++ b/examples/indexable/README.md
@@ -37,8 +37,8 @@ sealed interface UserKey permits UserById, UserByLogin, UserByEmail {
private User findUser(UserKey key) {
Condition condition = switch (key) {
case UserById(var id) -> USER_INFO.ID.eq(id);
+ case UserByEmail(var email) -> USER_INFO.EMAIL.eq(email);
case UserByLogin(var login) -> USER_INFO.USERNAME.eq(login);
- case UserByEmail(var email) -> USER_INFO.EMAIL.eq(email.toLowerCase());
};
return db.selectFrom(USER_INFO).where(condition).fetchOneInto(User.class);
}
diff --git a/examples/indexable/gradle/libs.versions.toml b/examples/indexable/gradle/libs.versions.toml
index dac0a28fac..4f6e6e0138 100644
--- a/examples/indexable/gradle/libs.versions.toml
+++ b/examples/indexable/gradle/libs.versions.toml
@@ -2,7 +2,7 @@
caffeine = "3.1.8"
guava = "33.2.1-jre"
junit-jupiter = "5.11.0-M2"
-truth = "1.4.2"
+truth = "1.4.3"
versions = "0.51.0"
[libraries]
diff --git a/examples/indexable/gradle/wrapper/gradle-wrapper.properties b/examples/indexable/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/examples/indexable/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/indexable/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/indexable/settings.gradle.kts b/examples/indexable/settings.gradle.kts
index 0ea2063460..136114af7b 100644
--- a/examples/indexable/settings.gradle.kts
+++ b/examples/indexable/settings.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/examples/indexable/src/main/java/com/github/benmanes/caffeine/examples/indexable/IndexedCache.java b/examples/indexable/src/main/java/com/github/benmanes/caffeine/examples/indexable/IndexedCache.java
index fe4b57086f..49350de9d9 100644
--- a/examples/indexable/src/main/java/com/github/benmanes/caffeine/examples/indexable/IndexedCache.java
+++ b/examples/indexable/src/main/java/com/github/benmanes/caffeine/examples/indexable/IndexedCache.java
@@ -100,10 +100,10 @@ public V get(K key) {
}
/** Associates the {@code value} with its keys, replacing the old value and keys if present. */
- public V put(V value) {
+ public void put(V value) {
requireNonNull(value);
var index = buildIndex(value);
- return store.asMap().compute(index.getFirst(), (key, oldValue) -> {
+ store.asMap().compute(index.getFirst(), (key, oldValue) -> {
if (oldValue != null) {
indexes.keySet().removeAll(Sets.difference(indexes.get(index.getFirst()), index));
}
diff --git a/examples/resilience-failsafe/gradle/libs.versions.toml b/examples/resilience-failsafe/gradle/libs.versions.toml
index 25888e412f..30fa3b18e0 100644
--- a/examples/resilience-failsafe/gradle/libs.versions.toml
+++ b/examples/resilience-failsafe/gradle/libs.versions.toml
@@ -2,7 +2,7 @@
caffeine = "3.1.8"
failsafe = "3.3.2"
junit = "5.11.0-M2"
-truth = "1.4.2"
+truth = "1.4.3"
versions = "0.51.0"
[libraries]
diff --git a/examples/resilience-failsafe/gradle/wrapper/gradle-wrapper.properties b/examples/resilience-failsafe/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/examples/resilience-failsafe/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/resilience-failsafe/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/resilience-failsafe/settings.gradle.kts b/examples/resilience-failsafe/settings.gradle.kts
index 5e04180ef8..e78a875a7e 100644
--- a/examples/resilience-failsafe/settings.gradle.kts
+++ b/examples/resilience-failsafe/settings.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/examples/write-behind-rxjava/gradle/wrapper/gradle-wrapper.properties b/examples/write-behind-rxjava/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/examples/write-behind-rxjava/gradle/wrapper/gradle-wrapper.properties
+++ b/examples/write-behind-rxjava/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/examples/write-behind-rxjava/settings.gradle.kts b/examples/write-behind-rxjava/settings.gradle.kts
index 5cc38c5d2e..2cea568e6a 100644
--- a/examples/write-behind-rxjava/settings.gradle.kts
+++ b/examples/write-behind-rxjava/settings.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/gradle/config/eclipse/Simulator.launch b/gradle/config/eclipse/Simulator.launch
new file mode 100644
index 0000000000..d61e16a584
--- /dev/null
+++ b/gradle/config/eclipse/Simulator.launch
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 238d1b7b17..ad8bc3499a 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -7,7 +7,7 @@ bnd = "7.0.0"
bouncycastle-jdk18on = "1.78.1"
cache2k = "2.6.1.Final"
caffeine = "3.1.8"
-checker-framework = "3.44.0"
+checker-framework = "3.45.0"
checkstyle = "10.17.0"
coherence = "22.06.2"
commons-collections4 = "4.4"
@@ -19,11 +19,11 @@ commons-text = "1.12.0"
concurrentlinkedhashmap = "1.4.2"
config = "1.4.3"
coveralls = "2.12.2"
-dependency-check = "9.2.0"
+dependency-check = "10.0.1"
eclipse-collections = "12.0.0.M3"
ehcache3 = "3.10.8"
errorprone = "2.28.0"
-errorprone-plugin = "4.0.0"
+errorprone-plugin = "4.0.1"
errorprone-support = "0.16.1"
expiring-map = "0.5.11"
fast-filter = "1.0.2"
@@ -52,7 +52,7 @@ jazzer = "0.22.1"
jcache = "1.1.1"
jcommander = "1.82"
jctools = "4.0.5"
-jfreechart = "1.5.4"
+jfreechart = "1.5.5"
jgit = "6.10.0.202406032230-r"
jmh = "1.37"
jmh-plugin = "0.7.2"
@@ -78,19 +78,19 @@ osgi-promise = "1.3.0"
pax-exam = "4.13.5"
pax-url = "2.6.14"
picocli = "4.7.6"
-pmd = "7.2.0"
-protobuf = "4.27.1"
+pmd = "7.3.0"
+protobuf = "4.27.2"
slf4j = "2.0.13"
slf4j-test = "3.0.1"
snakeyaml = "2.2"
-sonarqube = "5.0.0.4638"
-spotbugs = "4.8.5"
+sonarqube = "5.1.0.4882"
+spotbugs = "4.8.6"
spotbugs-contrib = "7.6.4"
-spotbugs-plugin = "6.0.17"
+spotbugs-plugin = "6.0.18"
stream = "2.9.8"
tcache = "2.0.1"
testng = "7.10.2"
-truth = "1.4.2"
+truth = "1.4.3"
univocity-parsers = "2.9.1"
versions = "0.51.0"
xz = "1.9"
diff --git a/gradle/plugins/settings.gradle.kts b/gradle/plugins/settings.gradle.kts
index 411c840413..40fa19ee10 100644
--- a/gradle/plugins/settings.gradle.kts
+++ b/gradle/plugins/settings.gradle.kts
@@ -1,6 +1,6 @@
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index c9e6332d32..e021a95878 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,4 +1,4 @@
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-rc-1-bin.zip
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
diff --git a/guava/src/main/java/com/github/benmanes/caffeine/guava/CaffeinatedGuavaCache.java b/guava/src/main/java/com/github/benmanes/caffeine/guava/CaffeinatedGuavaCache.java
index b102802858..e3215103d6 100644
--- a/guava/src/main/java/com/github/benmanes/caffeine/guava/CaffeinatedGuavaCache.java
+++ b/guava/src/main/java/com/github/benmanes/caffeine/guava/CaffeinatedGuavaCache.java
@@ -40,7 +40,6 @@
import com.google.common.collect.ImmutableMap;
import com.google.common.util.concurrent.ExecutionError;
import com.google.common.util.concurrent.UncheckedExecutionException;
-import com.google.errorprone.annotations.CanIgnoreReturnValue;
/**
* A Caffeine-backed cache through a Guava facade.
@@ -240,15 +239,8 @@ final class EntrySetView extends ForwardingSet> {
static final class CacheLoaderException extends RuntimeException {
private static final long serialVersionUID = 1L;
- CacheLoaderException(Exception e) {
- super(e);
- }
-
- @CanIgnoreReturnValue
- @SuppressWarnings({"NonSynchronizedMethodOverridesSynchronizedMethod",
- "UnsynchronizedOverridesSynchronized"})
- @Override public Throwable fillInStackTrace() {
- return this;
+ CacheLoaderException(Throwable cause) {
+ super(null, cause, /* enableSuppression */ false, /* writableStackTrace */ false);
}
}
}
diff --git a/settings.gradle.kts b/settings.gradle.kts
index e55bfb2032..c7110c16fa 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -3,7 +3,7 @@ pluginManagement {
}
plugins {
id("com.gradle.develocity") version "3.17.5"
- id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.1"
+ id("com.gradle.common-custom-user-data-gradle-plugin") version "2.0.2"
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
diff --git a/simulator/build.gradle.kts b/simulator/build.gradle.kts
index fb5b991001..2de719c0ce 100644
--- a/simulator/build.gradle.kts
+++ b/simulator/build.gradle.kts
@@ -75,31 +75,21 @@ tasks.withType().configureEach {
}
tasks.named("run").configure {
- systemProperties(caffeineSystemProperties())
- jvmArgs(javaExecJvmArgs())
+ description = "Runs a single simulation and generates a report"
}
tasks.register("simulate") {
description = "Runs multiple simulations and generates an aggregate report"
mainClass = "com.github.benmanes.caffeine.cache.simulator.Simulate"
- configureSimulatorTask()
}
tasks.register("rewrite") {
description = "Rewrite traces into the format used by other simulators"
mainClass = "com.github.benmanes.caffeine.cache.simulator.parser.Rewriter"
- configureSimulatorTask()
-}
-
-eclipse.classpath.file.beforeMerged {
- if (this is EclipseClasspath) {
- val absolutePath = layout.buildDirectory.dir("generated/sources/annotationProcessor/java/main")
- entries.add(SourceFolder(relativePath(absolutePath), "bin/main"))
- }
}
-fun JavaExec.configureSimulatorTask() {
- group = "Application"
+tasks.withType().configureEach {
+ group = group ?: "Application"
dependsOn(tasks.processResources, tasks.compileJava)
classpath(sourceSets["main"].runtimeClasspath)
systemProperties(caffeineSystemProperties())
@@ -107,6 +97,13 @@ fun JavaExec.configureSimulatorTask() {
jvmArgs(javaExecJvmArgs())
}
+eclipse.classpath.file.beforeMerged {
+ if (this is EclipseClasspath) {
+ val absolutePath = layout.buildDirectory.dir("generated/sources/annotationProcessor/java/main")
+ entries.add(SourceFolder(relativePath(absolutePath), "bin/main"))
+ }
+}
+
abstract class Simulate @Inject constructor(
@Internal val projectLayout: ProjectLayout) : JavaExec() {
@Input @Option(option = "maximumSize", description = "The maximum sizes")