From 0004c8bc4460d636680e626fa989b7584623417f Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Thu, 13 Feb 2025 09:02:32 +0100 Subject: [PATCH 01/70] Upgrade Micrometer 1.14.3 -> 1.14.4 (#1543) See: - https://github.com/micrometer-metrics/micrometer/releases/tag/v1.14.4 - https://github.com/micrometer-metrics/micrometer/compare/v1.14.3...v1.14.4 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 596ef3d3..5cbc0d63 100644 --- a/pom.xml +++ b/pom.xml @@ -363,7 +363,7 @@ io.micrometer micrometer-bom - 1.14.3 + 1.14.4 pom import From cf294b8964ae7e67c0014de938b04b1023417e82 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Thu, 13 Feb 2025 14:04:35 +0100 Subject: [PATCH 02/70] Upgrade Project Reactor 2024.0.2 -> 2024.0.3 (#1544) See: - https://github.com/reactor/reactor/releases/tag/2024.0.3 - https://github.com/reactor/reactor/compare/2024.0.2...2024.0.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 5cbc0d63..888b2c42 100644 --- a/pom.xml +++ b/pom.xml @@ -370,7 +370,7 @@ io.projectreactor reactor-bom - 2024.0.2 + 2024.0.3 pom import From fb22039fd32c7bba8732d247ede2da5d6ae4775c Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sat, 15 Feb 2025 17:08:11 +0100 Subject: [PATCH 03/70] Upgrade Spring 6.2.2 -> 6.2.3 (#1548) See: - https://github.com/spring-projects/spring-framework/releases/tag/v6.2.3 - https://github.com/spring-projects/spring-framework/compare/v6.2.2...v6.2.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 888b2c42..dfb0dc13 100644 --- a/pom.xml +++ b/pom.xml @@ -510,7 +510,7 @@ org.springframework spring-framework-bom - 6.2.2 + 6.2.3 pom import From ee0651d9d378db37dda143d1b739590c39112851 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sat, 15 Feb 2025 19:12:33 +0100 Subject: [PATCH 04/70] Upgrade pitest-maven-plugin 1.18.0 -> 1.18.1 (#1545) See: - https://github.com/hcoles/pitest/releases/tag/1.18.1 - https://github.com/hcoles/pitest/compare/1.18.0...1.18.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index dfb0dc13..c3df47a2 100644 --- a/pom.xml +++ b/pom.xml @@ -1524,7 +1524,7 @@ org.pitest pitest-maven - 1.18.0 + 1.18.1 From 33d205e11fc36799b3f8a5b4339425fdc5fba825 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sun, 16 Feb 2025 13:47:53 +0100 Subject: [PATCH 05/70] Upgrade Byte Buddy 1.17.0 -> 1.17.1 (#1549) See: - https://github.com/raphw/byte-buddy/releases/tag/byte-buddy-1.17.1 - https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.0...byte-buddy-1.17.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c3df47a2..f268accd 100644 --- a/pom.xml +++ b/pom.xml @@ -422,7 +422,7 @@ net.bytebuddy byte-buddy - 1.17.0 + 1.17.1 From 0db4462a644198b59129061e42fe21bcf26c86c3 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sun, 23 Feb 2025 22:12:53 +0100 Subject: [PATCH 17/70] Upgrade ossf/scorecard-action v2.4.0 -> v2.4.1 (#1563) See: - https://github.com/ossf/scorecard-action/releases/tag/v2.4.1 --- .github/workflows/openssf-scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/openssf-scorecard.yml b/.github/workflows/openssf-scorecard.yml index 05550c47..4b29e147 100644 --- a/.github/workflows/openssf-scorecard.yml +++ b/.github/workflows/openssf-scorecard.yml @@ -42,7 +42,7 @@ jobs: with: persist-credentials: false - name: Run OpenSSF Scorecard analysis - uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 + uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1 with: results_file: results.sarif results_format: sarif From 86b2d929ab6131d9267e92154f27ff68fa5c8d91 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sun, 23 Feb 2025 22:22:38 +0100 Subject: [PATCH 18/70] Upgrade OpenRewrite Templating 1.22.1 -> 1.23.0 (#1558) See: - https://github.com/openrewrite/rewrite-templating/releases/tag/v1.23.0 - https://github.com/openrewrite/rewrite-templating/compare/v1.22.1...v1.23.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index a1069e5e..e383743c 100644 --- a/pom.xml +++ b/pom.xml @@ -215,7 +215,7 @@ 1.0.1 0.12.3 1.1.4 - 1.22.1 + 1.23.0 3.2.3 From db53631e764aa44aa673d721e66435c6efe65c28 Mon Sep 17 00:00:00 2001 From: Mohamed Sameh <110535847+mohamedsamehsalah@users.noreply.github.com> Date: Mon, 24 Feb 2025 09:09:27 +0100 Subject: [PATCH 19/70] Extend `MonoThen` Refaster rule (#1556) --- .../tech/picnic/errorprone/refasterrules/ReactorRules.java | 6 +++++- .../errorprone/refasterrules/ReactorRulesTestInput.java | 6 +++++- .../errorprone/refasterrules/ReactorRulesTestOutput.java | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java index 6ed728f2..c78dc499 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java @@ -939,7 +939,11 @@ final class ReactorRules { static final class MonoThen { @BeforeTemplate Mono<@Nullable Void> before(Mono mono) { - return Refaster.anyOf(mono.ignoreElement().then(), mono.flux().then()); + return Refaster.anyOf( + mono.ignoreElement().then(), + mono.flux().then(), + Mono.when(mono), + Mono.whenDelayError(mono)); } @AfterTemplate diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java index 1129f1c5..50c19815 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java @@ -342,7 +342,11 @@ final class ReactorRulesTest implements RefasterRuleCollectionTestCase { } ImmutableSet> testMonoThen() { - return ImmutableSet.of(Mono.just("foo").ignoreElement().then(), Mono.just("bar").flux().then()); + return ImmutableSet.of( + Mono.just("foo").ignoreElement().then(), + Mono.just("bar").flux().then(), + Mono.when(Mono.just("baz")), + Mono.whenDelayError(Mono.just("qux"))); } ImmutableSet> testFluxThen() { diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java index b8739b64..6e552378 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java @@ -340,7 +340,11 @@ final class ReactorRulesTest implements RefasterRuleCollectionTestCase { } ImmutableSet> testMonoThen() { - return ImmutableSet.of(Mono.just("foo").then(), Mono.just("bar").then()); + return ImmutableSet.of( + Mono.just("foo").then(), + Mono.just("bar").then(), + Mono.just("baz").then(), + Mono.just("qux").then()); } ImmutableSet> testFluxThen() { From 6358d1e2e18bed17aa95bf2300893f6bf576ec81 Mon Sep 17 00:00:00 2001 From: Phil Werli Date: Mon, 24 Feb 2025 09:25:30 +0100 Subject: [PATCH 20/70] Extend `MonoSingleOptional` Refaster rule (#1553) --- .../tech/picnic/errorprone/refasterrules/ReactorRules.java | 6 ++++-- .../errorprone/refasterrules/ReactorRulesTestInput.java | 6 ++++-- .../errorprone/refasterrules/ReactorRulesTestOutput.java | 4 +++- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java index c78dc499..7eb3af75 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java @@ -1082,10 +1082,12 @@ final class ReactorRules { // rule. Consider introducing an Error Prone check for this. static final class MonoSingleOptional { @BeforeTemplate - Mono> before(Mono mono) { + Mono> before(Mono mono, Optional optional, Mono> alternate) { return Refaster.anyOf( mono.flux().collect(toOptional()), - mono.map(Optional::of).defaultIfEmpty(Optional.empty()), + mono.map(Optional::of), + mono.singleOptional().defaultIfEmpty(optional), + mono.singleOptional().switchIfEmpty(alternate), mono.transform(Mono::singleOptional)); } diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java index 50c19815..fe4c9dcf 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java @@ -392,8 +392,10 @@ final class ReactorRulesTest implements RefasterRuleCollectionTestCase { ImmutableSet>> testMonoSingleOptional() { return ImmutableSet.of( Mono.just("foo").flux().collect(toOptional()), - Mono.just("bar").map(Optional::of).defaultIfEmpty(Optional.empty()), - Mono.just("baz").transform(Mono::singleOptional)); + Mono.just("bar").map(Optional::of), + Mono.just("baz").singleOptional().defaultIfEmpty(Optional.empty()), + Mono.just("quux").singleOptional().switchIfEmpty(Mono.just(Optional.empty())), + Mono.just("quuz").transform(Mono::singleOptional)); } Mono testMonoCast() { diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java index 6e552378..e48cca28 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java @@ -388,7 +388,9 @@ final class ReactorRulesTest implements RefasterRuleCollectionTestCase { return ImmutableSet.of( Mono.just("foo").singleOptional(), Mono.just("bar").singleOptional(), - Mono.just("baz").singleOptional()); + Mono.just("baz").singleOptional(), + Mono.just("quux").singleOptional(), + Mono.just("quuz").singleOptional()); } Mono testMonoCast() { From ff3759984ca0d9ef3294141f7c33fcdd4c3e66a8 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Mon, 24 Feb 2025 09:58:19 +0100 Subject: [PATCH 21/70] Upgrade Checkstyle 10.21.2 -> 10.21.3 (#1566) See: - https://checkstyle.sourceforge.io/releasenotes.html - https://github.com/checkstyle/checkstyle/releases/tag/checkstyle-10.21.3 - https://github.com/checkstyle/checkstyle/compare/checkstyle-10.21.2...checkstyle-10.21.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index e383743c..1728e0dd 100644 --- a/pom.xml +++ b/pom.xml @@ -923,7 +923,7 @@ com.puppycrawl.tools checkstyle - 10.21.2 + 10.21.3 io.spring.nohttp From c53fcace76b19380f2fd866e8dfae1fb924f4e26 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Mon, 24 Feb 2025 10:56:49 +0100 Subject: [PATCH 22/70] Upgrade CodeQL v3.28.5 -> v3.28.10 (#1567) See: - https://github.com/github/codeql-action/blob/main/CHANGELOG.md - https://github.com/github/codeql-action/releases/tag/v3.28.6 - https://github.com/github/codeql-action/releases/tag/v3.28.7 - https://github.com/github/codeql-action/releases/tag/v3.28.8 - https://github.com/github/codeql-action/releases/tag/v3.28.9 - https://github.com/github/codeql-action/releases/tag/v3.28.10 - https://github.com/github/codeql-action/compare/v3.28.5...v3.28.10 --- .github/workflows/codeql.yml | 4 ++-- .github/workflows/openssf-scorecard.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index f276df67..da27af8b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -40,13 +40,13 @@ jobs: java-distribution: temurin maven-version: 3.9.9 - name: Initialize CodeQL - uses: github/codeql-action/init@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5 + uses: github/codeql-action/init@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: languages: ${{ matrix.language }} - name: Perform minimal build if: matrix.language == 'java' run: mvn -T1C clean package -DskipTests -Dverification.skip - name: Perform CodeQL analysis - uses: github/codeql-action/analyze@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5 + uses: github/codeql-action/analyze@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: category: /language:${{ matrix.language }} diff --git a/.github/workflows/openssf-scorecard.yml b/.github/workflows/openssf-scorecard.yml index 4b29e147..33bcb630 100644 --- a/.github/workflows/openssf-scorecard.yml +++ b/.github/workflows/openssf-scorecard.yml @@ -48,6 +48,6 @@ jobs: results_format: sarif publish_results: ${{ github.ref == 'refs/heads/master' }} - name: Update GitHub's code scanning dashboard - uses: github/codeql-action/upload-sarif@f6091c0113d1dcf9b98e269ee48e8a7e51b7bdd4 # v3.28.5 + uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10 with: sarif_file: results.sarif From 2128624261eb23b1a8428431e2ffb5c6196f1628 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Mon, 24 Feb 2025 12:53:58 +0100 Subject: [PATCH 23/70] Upgrade ruby/setup-ruby v1.213.0 -> v1.221.0 (#1568) See: - https://github.com/ruby/setup-ruby/releases/tag/v1.221.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.220.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.219.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.218.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.217.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.216.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.215.0 - https://github.com/ruby/setup-ruby/releases/tag/v1.214.0 --- .github/workflows/deploy-website.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy-website.yml b/.github/workflows/deploy-website.yml index b127147f..29a8e913 100644 --- a/.github/workflows/deploy-website.yml +++ b/.github/workflows/deploy-website.yml @@ -43,7 +43,7 @@ jobs: uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: persist-credentials: false - - uses: ruby/setup-ruby@28c4deda893d5a96a6b2d958c5b47fc18d65c9d3 # v1.213.0 + - uses: ruby/setup-ruby@32110d4e311bd8996b2a82bf2a43b714ccc91777 # v1.221.0 with: working-directory: ./website bundler-cache: true From 3bd415b9104548f1a455fd642aa06f7b01582396 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Thu, 27 Feb 2025 10:12:40 +0100 Subject: [PATCH 24/70] Upgrade SLF4J 2.0.16 -> 2.0.17 (#1571) See: - https://www.slf4j.org/news.html - https://github.com/qos-ch/slf4j/compare/v_2.0.16...v_2.0.17 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1728e0dd..b35b92b6 100644 --- a/pom.xml +++ b/pom.xml @@ -503,7 +503,7 @@ org.slf4j slf4j-bom - 2.0.16 + 2.0.17 pom import From fef9ba23f4b40d1357181ed4381714e3eaf9e262 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Tue, 4 Mar 2025 09:25:13 +0100 Subject: [PATCH 25/70] Upgrade org.pitest:pitest-junit5-plugin 1.2.1 -> 1.2.2 (#1570) See: - https://github.com/pitest/pitest-junit5-plugin/releases/tag/1.2.2 - https://github.com/pitest/pitest-junit5-plugin/compare/1.2.1...1.2.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b35b92b6..53fa342e 100644 --- a/pom.xml +++ b/pom.xml @@ -1564,7 +1564,7 @@ org.pitest pitest-junit5-plugin - 1.2.1 + 1.2.2 From 0ec882e62e54b8af1d9a28c6ad1f4fe7d5f68c7d Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sun, 9 Mar 2025 09:47:31 +0100 Subject: [PATCH 26/70] Upgrade Byte Buddy 1.17.1 -> 1.17.2 (#1576) See: - https://github.com/raphw/byte-buddy/releases/tag/byte-buddy-1.17.2 - https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.1...byte-buddy-1.17.2 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 53fa342e..84351300 100644 --- a/pom.xml +++ b/pom.xml @@ -422,7 +422,7 @@ net.bytebuddy byte-buddy - 1.17.1 + 1.17.2 From ae8f940f55a205a7dcad82236d202c7b376f6bc2 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Wed, 19 Mar 2025 21:28:29 +0100 Subject: [PATCH 48/70] Upgrade AspectJ 1.9.22.1 -> 1.9.23 (#1587) See: - https://github.com/eclipse-aspectj/aspectj/releases/tag/V1_9_23 - https://github.com/eclipse-aspectj/aspectj/compare/V1_9_22_1...V1_9_23 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 13c868e0..43953320 100644 --- a/pom.xml +++ b/pom.xml @@ -435,7 +435,7 @@ org.aspectj aspectjweaver - 1.9.22.1 + 1.9.23 org.assertj From 474411341162b1ddebaa4f40d7b31fd129c1bbd9 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Thu, 20 Mar 2025 12:40:33 +0100 Subject: [PATCH 49/70] Upgrade actions/upload-artifact v4.6.1 -> v4.6.2 (#1600) See: - https://github.com/actions/upload-artifact/releases/tag/v4.6.2 --- .github/workflows/pitest-analyze-pr.yml | 2 +- .github/workflows/run-integration-tests.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pitest-analyze-pr.yml b/.github/workflows/pitest-analyze-pr.yml index 6992daff..78677bff 100644 --- a/.github/workflows/pitest-analyze-pr.yml +++ b/.github/workflows/pitest-analyze-pr.yml @@ -38,7 +38,7 @@ jobs: - name: Aggregate Pitest reports run: mvn pitest-git:aggregate -DkilledEmoji=":tada:" -DmutantEmoji=":zombie:" -DtrailingText="Mutation testing report by [Pitest](https://pitest.org/). Review any surviving mutants by inspecting the line comments under [_Files changed_](${{ github.event.number }}/files)." - name: Upload Pitest reports as artifact - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: pitest-reports path: ./target/pit-reports-ci diff --git a/.github/workflows/run-integration-tests.yml b/.github/workflows/run-integration-tests.yml index ab9694c3..c1263e31 100644 --- a/.github/workflows/run-integration-tests.yml +++ b/.github/workflows/run-integration-tests.yml @@ -55,7 +55,7 @@ jobs: run: xvfb-run "./integration-tests/${{ matrix.integration-test }}.sh" "${{ runner.temp }}/artifacts" - name: Upload artifacts on failure if: ${{ failure() }} - uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1 + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: name: "integration-test-${{ matrix.integration-test }}" path: "${{ runner.temp }}/artifacts" From 99d359c548f442202e9737c69a6bd6729b433859 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Thu, 20 Mar 2025 16:42:24 +0100 Subject: [PATCH 50/70] Upgrade OpenRewrite Templating 1.24.0 -> 1.24.1 (#1599) See: - https://github.com/openrewrite/rewrite-templating/releases/tag/v1.24.1 - https://github.com/openrewrite/rewrite-templating/compare/v1.24.0...v1.24.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 43953320..d6770ffe 100644 --- a/pom.xml +++ b/pom.xml @@ -215,7 +215,7 @@ 1.0.1 0.12.4 2.1.0 - 1.24.0 + 1.24.1 3.2.3 From 726db5ce5b859c6a266395da5ebc253dcaff9704 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Fri, 21 Mar 2025 09:47:13 +0100 Subject: [PATCH 51/70] Upgrade Error Prone 2.36.0 -> 2.37.0 (#1601) Resolves #1597. See: - https://github.com/google/error-prone/releases/tag/v2.37.0 - https://github.com/google/error-prone/compare/v2.36.0...v2.37.0 - https://github.com/PicnicSupermarket/error-prone/compare/v2.36.0-picnic-4...v2.37.0-picnic-1 --- .../refasterrules/SuggestedFixRules.java | 13 +- .../SuggestedFixRulesTestInput.java | 5 +- .../SuggestedFixRulesTestOutput.java | 3 +- .../ExhaustiveRefasterTypeMigration.java | 14 +- .../errorprone/utils/SourceCodeTest.java | 7 - .../metrics-expected-changes.patch | 491 ++++-------------- .../metrics-expected-warnings.txt | 10 +- integration-tests/metrics.sh | 6 +- pom.xml | 6 +- .../errorprone/refaster/matchers/IsEmpty.java | 5 +- .../refaster/test/RefasterRuleCollection.java | 20 +- 11 files changed, 151 insertions(+), 429 deletions(-) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/SuggestedFixRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/SuggestedFixRules.java index 801417ee..d4954191 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/SuggestedFixRules.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/SuggestedFixRules.java @@ -1,5 +1,6 @@ package tech.picnic.errorprone.refasterrules; +import com.google.errorprone.VisitorState; import com.google.errorprone.fixes.SuggestedFix; import com.google.errorprone.refaster.annotation.AfterTemplate; import com.google.errorprone.refaster.annotation.BeforeTemplate; @@ -65,16 +66,18 @@ final class SuggestedFixRules { } } - /** Prefer {@link SuggestedFix#swap(Tree, Tree)} over more contrived alternatives. */ + /** + * Prefer {@link SuggestedFix#swap(Tree, Tree, VisitorState)} over more contrived alternatives. + */ static final class SuggestedFixSwap { @BeforeTemplate - SuggestedFix before(Tree tree1, Tree tree2) { - return SuggestedFix.builder().swap(tree1, tree2).build(); + SuggestedFix before(Tree tree1, Tree tree2, VisitorState state) { + return SuggestedFix.builder().swap(tree1, tree2, state).build(); } @AfterTemplate - SuggestedFix after(Tree tree1, Tree tree2) { - return SuggestedFix.swap(tree1, tree2); + SuggestedFix after(Tree tree1, Tree tree2, VisitorState state) { + return SuggestedFix.swap(tree1, tree2, state); } } diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestInput.java index 4d6c7ccd..d93fcc1f 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestInput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestInput.java @@ -1,5 +1,6 @@ package tech.picnic.errorprone.refasterrules; +import com.google.errorprone.VisitorState; import com.google.errorprone.fixes.SuggestedFix; import com.sun.source.tree.ExpressionTree; import com.sun.source.tree.Tree; @@ -23,7 +24,9 @@ final class SuggestedFixRulesTest implements RefasterRuleCollectionTestCase { } SuggestedFix testSuggestedFixSwap() { - return SuggestedFix.builder().swap((Tree) null, (ExpressionTree) null).build(); + return SuggestedFix.builder() + .swap((Tree) null, (ExpressionTree) null, (VisitorState) null) + .build(); } SuggestedFix testSuggestedFixPrefixWith() { diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestOutput.java index 15671e43..70f3b3d9 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestOutput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/SuggestedFixRulesTestOutput.java @@ -1,5 +1,6 @@ package tech.picnic.errorprone.refasterrules; +import com.google.errorprone.VisitorState; import com.google.errorprone.fixes.SuggestedFix; import com.sun.source.tree.ExpressionTree; import com.sun.source.tree.Tree; @@ -23,7 +24,7 @@ final class SuggestedFixRulesTest implements RefasterRuleCollectionTestCase { } SuggestedFix testSuggestedFixSwap() { - return SuggestedFix.swap((Tree) null, (ExpressionTree) null); + return SuggestedFix.swap((Tree) null, (ExpressionTree) null, (VisitorState) null); } SuggestedFix testSuggestedFixPrefixWith() { diff --git a/error-prone-guidelines/src/main/java/tech/picnic/errorprone/guidelines/bugpatterns/ExhaustiveRefasterTypeMigration.java b/error-prone-guidelines/src/main/java/tech/picnic/errorprone/guidelines/bugpatterns/ExhaustiveRefasterTypeMigration.java index ada6b19c..4a3d6ebe 100644 --- a/error-prone-guidelines/src/main/java/tech/picnic/errorprone/guidelines/bugpatterns/ExhaustiveRefasterTypeMigration.java +++ b/error-prone-guidelines/src/main/java/tech/picnic/errorprone/guidelines/bugpatterns/ExhaustiveRefasterTypeMigration.java @@ -46,7 +46,6 @@ import java.util.Set; import java.util.function.Consumer; import javax.lang.model.element.AnnotationMirror; import javax.lang.model.element.AnnotationValue; -import javax.lang.model.element.Modifier; import org.jspecify.annotations.Nullable; import tech.picnic.errorprone.utils.SourceCode; @@ -102,7 +101,8 @@ public final class ExhaustiveRefasterTypeMigration extends BugChecker implements AnnotationTree migrationAnnotation = migrationAnnotations.onlyMatchingNode(); AnnotationMirror annotationMirror = ASTHelpers.getAnnotationMirror(migrationAnnotation); TypeSymbol migratedType = getMigratedType(annotationMirror); - if (migratedType.asType().isPrimitive() || !(migratedType instanceof ClassSymbol)) { + if (migratedType.asType().isPrimitive() + || !(migratedType instanceof ClassSymbol migratedClass)) { return buildDescription(migrationAnnotation) .setMessage(String.format("Migration of type '%s' is unsupported", migratedType)) .build(); @@ -111,7 +111,7 @@ public final class ExhaustiveRefasterTypeMigration extends BugChecker implements ImmutableList methodsClaimedUnmigrated = getMethodsClaimedUnmigrated(annotationMirror); ImmutableList unmigratedMethods = getMethodsDefinitelyUnmigrated( - tree, (ClassSymbol) migratedType, signatureOrder(methodsClaimedUnmigrated), state); + tree, migratedClass, signatureOrder(methodsClaimedUnmigrated), state); if (unmigratedMethods.equals(methodsClaimedUnmigrated)) { return Description.NO_MATCH; @@ -160,17 +160,11 @@ public final class ExhaustiveRefasterTypeMigration extends BugChecker implements .getValue().stream().map(a -> a.getValue().toString()).collect(toImmutableList()); } - // XXX: Once only JDK 14 and above are supported, change the - // `m.getModifiers().contains(Modifier.PUBLIC)` check to just `m.isPublic()`. private static ImmutableList getMethodsDefinitelyUnmigrated( ClassTree tree, ClassSymbol migratedType, Comparator comparator, VisitorState state) { Set publicMethods = Streams.stream( - ASTHelpers.scope(migratedType.members()) - .getSymbols( - m -> - m.getModifiers().contains(Modifier.PUBLIC) - && m instanceof MethodSymbol)) + migratedType.members().getSymbols(m -> m.isPublic() && m instanceof MethodSymbol)) .map(MethodSymbol.class::cast) .collect(toCollection(HashSet::new)); diff --git a/error-prone-utils/src/test/java/tech/picnic/errorprone/utils/SourceCodeTest.java b/error-prone-utils/src/test/java/tech/picnic/errorprone/utils/SourceCodeTest.java index 942c25bd..9fbfe2d2 100644 --- a/error-prone-utils/src/test/java/tech/picnic/errorprone/utils/SourceCodeTest.java +++ b/error-prone-utils/src/test/java/tech/picnic/errorprone/utils/SourceCodeTest.java @@ -303,14 +303,7 @@ final class SourceCodeTest { @Override public Description matchLiteral(LiteralTree tree, VisitorState state) { - // XXX: The character conversion is a workaround for the fact that `ASTHelpers#constValue` - // returns an `Integer` value for `char` constants. return Optional.ofNullable(ASTHelpers.constValue(tree)) - .map( - constant -> - ASTHelpers.isSubtype(ASTHelpers.getType(tree), state.getSymtab().charType, state) - ? (char) (int) constant - : constant) .map(constant -> describeMatch(tree, addComment(tree, constant, state))) .orElse(Description.NO_MATCH); } diff --git a/integration-tests/metrics-expected-changes.patch b/integration-tests/metrics-expected-changes.patch index ee2fb119..ffb47a30 100644 --- a/integration-tests/metrics-expected-changes.patch +++ b/integration-tests/metrics-expected-changes.patch @@ -89,15 +89,63 @@ } return new CollectdReporter( registry, -@@ -302,7 +297,7 @@ public class CollectdReporter extends ScheduledReporter { +@@ -177,7 +172,7 @@ public class CollectdReporter extends ScheduledReporter { + } + } + +- private static final Logger LOG = LoggerFactory.getLogger(CollectdReporter.class); ++ private static final Logger LOGGER = LoggerFactory.getLogger(CollectdReporter.class); + private static final String REPORTER_NAME = "collectd-reporter"; + private static final String FALLBACK_HOST_NAME = "localhost"; + private static final String COLLECTD_TYPE_GAUGE = "gauge"; +@@ -224,7 +219,7 @@ public class CollectdReporter extends ScheduledReporter { + try { + return InetAddress.getLocalHost().getHostName(); + } catch (Exception e) { +- LOG.error("Failed to lookup local host name: {}", e.getMessage(), e); ++ LOGGER.error("Failed to lookup local host name: {}", e.getMessage(), e); + return FALLBACK_HOST_NAME; + } + } +@@ -263,7 +258,7 @@ public class CollectdReporter extends ScheduledReporter { + serializeTimer(metaData.plugin(entry.getKey().getKey()), entry.getValue()); + } + } catch (IOException e) { +- LOG.warn("Unable to report to Collectd", e); ++ LOGGER.warn("Unable to report to Collectd", e); + } finally { + disconnect(sender); + } +@@ -279,7 +274,7 @@ public class CollectdReporter extends ScheduledReporter { + try { + sender.disconnect(); + } catch (Exception e) { +- LOG.warn("Error disconnecting from Collectd", e); ++ LOGGER.warn("Error disconnecting from Collectd", e); + } + } + +@@ -302,9 +297,9 @@ public class CollectdReporter extends ScheduledReporter { try { writer.write(metaData, value); } catch (RuntimeException e) { - LOG.warn("Failed to process metric '" + metaData.getPlugin() + "': " + e.getMessage()); -+ LOG.warn("Failed to process metric '{}': {}", metaData.getPlugin(), e.getMessage()); ++ LOGGER.warn("Failed to process metric '{}': {}", metaData.getPlugin(), e.getMessage()); } catch (IOException e) { - LOG.error("Failed to send metric to collectd", e); +- LOG.error("Failed to send metric to collectd", e); ++ LOGGER.error("Failed to send metric to collectd", e); } + } + +@@ -314,7 +309,7 @@ public class CollectdReporter extends ScheduledReporter { + } else if (metric.getValue() instanceof Boolean) { + write(metaData.typeInstance("value").get(), ((Boolean) metric.getValue()) ? 1 : 0); + } else { +- LOG.warn( ++ LOGGER.warn( + "Failed to process metric '{}'. Unsupported gauge of type: {} ", + metaData.get().getPlugin(), + metric.getValue().getClass().getName()); @@ -336,9 +331,9 @@ public class CollectdReporter extends ScheduledReporter { private void serializeHistogram(MetaData.Builder metaData, Histogram metric) { final Snapshot snapshot = metric.getSnapshot(); @@ -476,26 +524,6 @@ } /** ---- a/metrics-core/src/main/java/io/dropwizard/metrics5/CsvReporter.java -+++ b/metrics-core/src/main/java/io/dropwizard/metrics5/CsvReporter.java -@@ -179,7 +179,7 @@ public class CsvReporter extends ScheduledReporter { - } - } - -- private static final Logger LOGGER = LoggerFactory.getLogger(CsvReporter.class); -+ private static final Logger LOG = LoggerFactory.getLogger(CsvReporter.class); - - private final File directory; - private final Locale locale; -@@ -391,7 +391,7 @@ public class CsvReporter extends ScheduledReporter { - } - } - } catch (IOException e) { -- LOGGER.warn("Error writing to {}", name, e); -+ LOG.warn("Error writing to {}", name, e); - } - } - --- a/metrics-core/src/main/java/io/dropwizard/metrics5/ExponentialMovingAverages.java +++ b/metrics-core/src/main/java/io/dropwizard/metrics5/ExponentialMovingAverages.java @@ -17,9 +17,9 @@ public class ExponentialMovingAverages implements MovingAverages { @@ -990,6 +1018,15 @@ import java.util.Locale; import java.util.Set; import java.util.SortedMap; +@@ -24,7 +27,7 @@ import org.slf4j.LoggerFactory; + */ + public abstract class ScheduledReporter implements Closeable, Reporter { + +- private static final Logger LOG = LoggerFactory.getLogger(ScheduledReporter.class); ++ private static final Logger LOGGER = LoggerFactory.getLogger(ScheduledReporter.class); + + /** A simple named thread factory. */ + @SuppressWarnings("NullableProblems") @@ -128,7 +131,7 @@ public abstract class ScheduledReporter implements Closeable, Reporter { durationUnit, executor, @@ -1040,6 +1077,33 @@ protected ScheduledFuture getScheduledFuture( long initialDelay, long period, TimeUnit unit, Runnable runnable) { return getScheduledFuture(initialDelay, period, unit, runnable, this.executor); +@@ -225,7 +224,7 @@ public abstract class ScheduledReporter implements Closeable, Reporter { + try { + report(); + } catch (Throwable ex) { +- LOG.error( ++ LOGGER.error( + "Exception thrown from {}#report. Exception was suppressed.", + ScheduledReporter.this.getClass().getSimpleName(), + ex); +@@ -250,7 +249,7 @@ public abstract class ScheduledReporter implements Closeable, Reporter { + try { + report(); + } catch (Exception e) { +- LOG.warn("Final reporting of metrics failed.", e); ++ LOGGER.warn("Final reporting of metrics failed.", e); + } + } + +@@ -261,7 +260,7 @@ public abstract class ScheduledReporter implements Closeable, Reporter { + executor.shutdownNow(); // Cancel currently executing tasks + // Wait a while for tasks to respond to being cancelled + if (!executor.awaitTermination(1, TimeUnit.SECONDS)) { +- LOG.warn("ScheduledExecutorService did not terminate."); ++ LOGGER.warn("ScheduledExecutorService did not terminate."); + } + } + } catch (InterruptedException ie) { --- a/metrics-core/src/main/java/io/dropwizard/metrics5/SharedMetricRegistries.java +++ b/metrics-core/src/main/java/io/dropwizard/metrics5/SharedMetricRegistries.java @@ -1,5 +1,7 @@ @@ -1200,32 +1264,15 @@ import java.util.ArrayList; import java.util.List; -@@ -15,8 +14,8 @@ import org.junit.jupiter.api.Test; +@@ -15,7 +14,7 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class CachedGaugeTest { -- private static final Logger LOGGER = LoggerFactory.getLogger(CachedGaugeTest.class); +final class CachedGaugeTest { -+ private static final Logger LOG = LoggerFactory.getLogger(CachedGaugeTest.class); + private static final Logger LOGGER = LoggerFactory.getLogger(CachedGaugeTest.class); private static final int THREAD_COUNT = 10; private static final long RUNNING_TIME_MILLIS = TimeUnit.SECONDS.toMillis(10); - -@@ -100,12 +99,12 @@ class CachedGaugeTest { - Integer newValue = shortTimeoutGauge.getValue(); - - if (newValue == null) { -- LOGGER.warn("Cached gauge returned null value"); -+ LOG.warn("Cached gauge returned null value"); - return false; - } - - if (newValue < lastValue) { -- LOGGER.error( -+ LOG.error( - "Cached gauge returned stale value, last: {}, new: {}", - lastValue, - newValue); @@ -122,7 +121,7 @@ class CachedGaugeTest { } @@ -1899,29 +1946,16 @@ assertThat(histogram.getSnapshot()).isEqualTo(snapshot); --- a/metrics-core/src/test/java/io/dropwizard/metrics5/InstrumentedExecutorServiceTest.java +++ b/metrics-core/src/test/java/io/dropwizard/metrics5/InstrumentedExecutorServiceTest.java -@@ -19,10 +19,9 @@ import org.junit.jupiter.api.Test; +@@ -19,7 +19,7 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class InstrumentedExecutorServiceTest { +final class InstrumentedExecutorServiceTest { -- private static final Logger LOGGER = -- LoggerFactory.getLogger(InstrumentedExecutorServiceTest.class); -+ private static final Logger LOG = LoggerFactory.getLogger(InstrumentedExecutorServiceTest.class); - private ExecutorService executor; - private MetricRegistry registry; - private InstrumentedExecutorService instrumentedExecutorService; -@@ -48,7 +47,7 @@ class InstrumentedExecutorServiceTest { - void tearDown() throws Exception { - instrumentedExecutorService.shutdown(); - if (!instrumentedExecutorService.awaitTermination(2, TimeUnit.SECONDS)) { -- LOGGER.error("InstrumentedExecutorService did not terminate."); -+ LOG.error("InstrumentedExecutorService did not terminate."); - } - } - -@@ -115,8 +114,8 @@ class InstrumentedExecutorServiceTest { + private static final Logger LOGGER = + LoggerFactory.getLogger(InstrumentedExecutorServiceTest.class); +@@ -115,8 +115,8 @@ class InstrumentedExecutorServiceTest { assertThat(idle.getSnapshot().size()).isEqualTo(1); } @@ -1931,7 +1965,7 @@ void reportsTasksInformationForThreadPoolExecutor() throws Exception { executor = new ThreadPoolExecutor(4, 16, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(32)); -@@ -180,7 +179,7 @@ class InstrumentedExecutorServiceTest { +@@ -180,7 +180,7 @@ class InstrumentedExecutorServiceTest { } @Test @@ -1940,7 +1974,7 @@ executor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(1)); instrumentedExecutorService = new InstrumentedExecutorService(executor, registry, "tp"); -@@ -207,7 +206,7 @@ class InstrumentedExecutorServiceTest { +@@ -207,7 +207,7 @@ class InstrumentedExecutorServiceTest { } @Test @@ -1949,7 +1983,7 @@ executor = new ThreadPoolExecutor(4, 16, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<>(32)); instrumentedExecutorService = new InstrumentedExecutorService(executor, registry, "stp"); -@@ -236,8 +235,8 @@ class InstrumentedExecutorServiceTest { +@@ -236,8 +236,8 @@ class InstrumentedExecutorServiceTest { MetricRegistry.name("stp", "tasks.capacity")); } @@ -1959,7 +1993,7 @@ void reportsTasksInformationForForkJoinPool() throws Exception { executor = Executors.newWorkStealingPool(4); instrumentedExecutorService = new InstrumentedExecutorService(executor, registry, "fjp"); -@@ -291,7 +290,7 @@ class InstrumentedExecutorServiceTest { +@@ -291,7 +291,7 @@ class InstrumentedExecutorServiceTest { } @Test @@ -1970,17 +2004,15 @@ --- a/metrics-core/src/test/java/io/dropwizard/metrics5/InstrumentedScheduledExecutorServiceTest.java +++ b/metrics-core/src/test/java/io/dropwizard/metrics5/InstrumentedScheduledExecutorServiceTest.java -@@ -13,8 +13,8 @@ import org.junit.jupiter.api.Test; +@@ -13,7 +13,7 @@ import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class InstrumentedScheduledExecutorServiceTest { -- private static final Logger LOGGER = +final class InstrumentedScheduledExecutorServiceTest { -+ private static final Logger LOG = + private static final Logger LOGGER = LoggerFactory.getLogger(InstrumentedScheduledExecutorServiceTest.class); - private final ScheduledExecutorService scheduledExecutor = @@ -35,17 +35,17 @@ class InstrumentedScheduledExecutorServiceTest { private final Histogram percentOfPeriod = registry.histogram("xs.scheduled.percent-of-period"); @@ -2338,15 +2370,6 @@ assertThat(completed.getCount()).isNotEqualTo(0); assertThat(duration.getCount()).isNotEqualTo(0); assertThat(duration.getSnapshot().size()).isNotEqualTo(0); -@@ -322,7 +322,7 @@ class InstrumentedScheduledExecutorServiceTest { - void tearDown() throws Exception { - instrumentedScheduledExecutor.shutdown(); - if (!instrumentedScheduledExecutor.awaitTermination(2, TimeUnit.SECONDS)) { -- LOGGER.error("InstrumentedScheduledExecutorService did not terminate."); -+ LOG.error("InstrumentedScheduledExecutorService did not terminate."); - } - } - } --- a/metrics-core/src/test/java/io/dropwizard/metrics5/InstrumentedThreadFactoryTest.java +++ b/metrics-core/src/test/java/io/dropwizard/metrics5/InstrumentedThreadFactoryTest.java @@ -11,7 +11,7 @@ import java.util.concurrent.TimeUnit; @@ -3801,15 +3824,6 @@ import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; -@@ -29,7 +32,7 @@ public class Graphite implements GraphiteSender { - private Writer writer; - private int failures; - -- private static final Logger LOGGER = LoggerFactory.getLogger(Graphite.class); -+ private static final Logger LOG = LoggerFactory.getLogger(Graphite.class); - - /** - * Creates a new client which connects to the given address using the default {@link @@ -63,13 +66,9 @@ public class Graphite implements GraphiteSender { * @param charset the character set used by the server */ @@ -3837,24 +3851,6 @@ InetSocketAddress address = this.address; // the previous dns retry logic did not work, as address.getAddress would always return the // cached value -@@ -178,7 +175,7 @@ public class Graphite implements GraphiteSender { - writer.close(); - } - } catch (IOException ex) { -- LOGGER.debug("Error closing writer", ex); -+ LOG.debug("Error closing writer", ex); - } finally { - this.writer = null; - } -@@ -188,7 +185,7 @@ public class Graphite implements GraphiteSender { - socket.close(); - } - } catch (IOException ex) { -- LOGGER.debug("Error closing socket", ex); -+ LOG.debug("Error closing socket", ex); - } finally { - this.socket = null; - } --- a/metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteRabbitMQ.java +++ b/metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteRabbitMQ.java @@ -1,5 +1,6 @@ @@ -3923,39 +3919,7 @@ this.addMetricAttributesAsTags = false; this.floatingPointFormatter = DEFAULT_FP_FORMATTER; } -@@ -249,7 +247,7 @@ public class GraphiteReporter extends ScheduledReporter { - } - } - -- private static final Logger LOGGER = LoggerFactory.getLogger(GraphiteReporter.class); -+ private static final Logger LOG = LoggerFactory.getLogger(GraphiteReporter.class); - // the Carbon plaintext format is pretty underspecified, but it seems like it just wants - // US-formatted digits - private static final DoubleFunction DEFAULT_FP_FORMATTER = -@@ -430,12 +428,12 @@ public class GraphiteReporter extends ScheduledReporter { - } - graphite.flush(); - } catch (IOException e) { -- LOGGER.warn("Unable to report to Graphite", graphite, e); -+ LOG.warn("Unable to report to Graphite", graphite, e); - } finally { - try { - graphite.close(); - } catch (IOException e1) { -- LOGGER.warn("Error closing Graphite", graphite, e1); -+ LOG.warn("Error closing Graphite", graphite, e1); - } - } - } -@@ -448,16 +446,16 @@ public class GraphiteReporter extends ScheduledReporter { - try { - graphite.close(); - } catch (IOException e) { -- LOGGER.debug("Error disconnecting from Graphite", graphite, e); -+ LOG.debug("Error disconnecting from Graphite", graphite, e); - } - } - } +@@ -455,9 +453,9 @@ public class GraphiteReporter extends ScheduledReporter { private void reportTimer(MetricName name, Timer timer, long timestamp) throws IOException { final Snapshot snapshot = timer.getSnapshot(); @@ -4017,15 +3981,6 @@ import static java.nio.charset.StandardCharsets.UTF_8; import java.io.BufferedWriter; -@@ -48,7 +49,7 @@ public class PickledGraphite implements GraphiteSender { - QUOTE = '\'', - LF = '\n'; - -- private static final Logger LOGGER = LoggerFactory.getLogger(PickledGraphite.class); -+ private static final Logger LOG = LoggerFactory.getLogger(PickledGraphite.class); - private static final int DEFAULT_BATCH_SIZE = 100; - - private int batchSize; @@ -173,9 +174,7 @@ public class PickledGraphite implements GraphiteSender { @Override @@ -4046,17 +4001,6 @@ try { byte[] payload = pickleMetrics(metrics); byte[] header = ByteBuffer.allocate(4).putInt(payload.length).array(); -@@ -260,8 +259,8 @@ public class PickledGraphite implements GraphiteSender { - outputStream.write(payload); - outputStream.flush(); - -- if (LOGGER.isDebugEnabled()) { -- LOGGER.debug("Wrote {} metrics", metrics.size()); -+ if (LOG.isDebugEnabled()) { -+ LOG.debug("Wrote {} metrics", metrics.size()); - } - } catch (IOException e) { - this.failures++; --- a/metrics-graphite/src/test/java/io/dropwizard/metrics5/graphite/GraphiteRabbitMQTest.java +++ b/metrics-graphite/src/test/java/io/dropwizard/metrics5/graphite/GraphiteRabbitMQTest.java @@ -8,7 +8,6 @@ import static org.mockito.Mockito.anyString; @@ -4475,15 +4419,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -@@ -27,7 +29,7 @@ import org.slf4j.LoggerFactory; - - /** A registry for health checks. */ - public class HealthCheckRegistry { -- private static final Logger LOGGER = LoggerFactory.getLogger(HealthCheckRegistry.class); -+ private static final Logger LOG = LoggerFactory.getLogger(HealthCheckRegistry.class); - private static final int ASYNC_EXECUTOR_POOL_SIZE = 2; - - private final ConcurrentMap healthChecks; @@ -92,9 +94,8 @@ public class HealthCheckRegistry { public void register(String name, HealthCheck healthCheck) { HealthCheck registered; @@ -4514,13 +4449,7 @@ } /** -@@ -217,12 +218,12 @@ public class HealthCheckRegistry { - try { - results.put(entry.getKey(), entry.getValue().get()); - } catch (Exception e) { -- LOGGER.warn("Error executing health check {}", entry.getKey(), e); -+ LOG.warn("Error executing health check {}", entry.getKey(), e); - results.put(entry.getKey(), HealthCheck.Result.unhealthy(e)); +@@ -222,7 +223,7 @@ public class HealthCheckRegistry { } } @@ -5357,39 +5286,6 @@ } /** -@@ -196,7 +196,7 @@ public class InfluxDbReporter extends GarbageFreeScheduledReporter { - } - } - -- private static final Logger LOGGER = LoggerFactory.getLogger(InfluxDbReporter.class); -+ private static final Logger LOG = LoggerFactory.getLogger(InfluxDbReporter.class); - private static final String VALUE = "value"; - - private final Clock clock; -@@ -279,12 +279,12 @@ public class InfluxDbReporter extends GarbageFreeScheduledReporter { - } - sender.flush(); - } catch (IOException e) { -- LOGGER.warn("Unable to report to InfluxDb", sender, e); -+ LOG.warn("Unable to report to InfluxDb", sender, e); - } finally { - try { - sender.disconnect(); - } catch (IOException e) { -- LOGGER.warn("Error disconnecting InfluxDb", sender, e); -+ LOG.warn("Error disconnecting InfluxDb", sender, e); - } - } - } -@@ -297,7 +297,7 @@ public class InfluxDbReporter extends GarbageFreeScheduledReporter { - try { - sender.close(); - } catch (IOException e) { -- LOGGER.debug("Error disconnecting from InfluxDb", e); -+ LOG.debug("Error disconnecting from InfluxDb", e); - } - } - } --- a/metrics-influxdb/src/main/java/io/dropwizard/metrics5/influxdb/InfluxDbUdpSender.java +++ b/metrics-influxdb/src/main/java/io/dropwizard/metrics5/influxdb/InfluxDbUdpSender.java @@ -1,5 +1,7 @@ @@ -6065,15 +5961,6 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; -@@ -33,7 +33,7 @@ public class JCacheGaugeSet implements MetricSet { - private static final String M_BEAN_COORDINATES = - "javax.cache:type=CacheStatistics,CacheManager=*,Cache=*"; - -- private static final Logger LOGGER = LoggerFactory.getLogger(JCacheGaugeSet.class); -+ private static final Logger LOG = LoggerFactory.getLogger(JCacheGaugeSet.class); - - @Override - public Map getMetrics() { @@ -52,7 +52,7 @@ public class JCacheGaugeSet implements MetricSet { } } @@ -6083,15 +5970,6 @@ } private Set getCacheBeans() { -@@ -60,7 +60,7 @@ public class JCacheGaugeSet implements MetricSet { - return ManagementFactory.getPlatformMBeanServer() - .queryMBeans(ObjectName.getInstance(M_BEAN_COORDINATES), null); - } catch (MalformedObjectNameException e) { -- LOGGER.error("Unable to retrieve {}. Are JCache statistics enabled?", M_BEAN_COORDINATES); -+ LOG.error("Unable to retrieve {}. Are JCache statistics enabled?", M_BEAN_COORDINATES); - throw new RuntimeException(e); - } - } --- a/metrics-jcache/src/test/java/JCacheGaugeSetTest.java +++ b/metrics-jcache/src/test/java/JCacheGaugeSetTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.AfterEach; @@ -8461,11 +8339,11 @@ private static final char[] QUOTABLE_CHARS = new char[] {',', '=', ':', '"'}; - private static final Logger LOGGER = LoggerFactory.getLogger(JmxReporter.class); -+ private static final Logger LOG = LoggerFactory.getLogger(DefaultObjectNameFactory.class); ++ private static final Logger LOGGER = LoggerFactory.getLogger(DefaultObjectNameFactory.class); @Override public ObjectName createName(String type, String domain, MetricName name) { -@@ -38,14 +38,13 @@ public class DefaultObjectNameFactory implements ObjectNameFactory { +@@ -38,9 +38,8 @@ public class DefaultObjectNameFactory implements ObjectNameFactory { || shouldQuote(objectName.getKeyProperty("type"))) { properties.put("type", ObjectName.quote(type)); } @@ -8476,12 +8354,6 @@ } catch (MalformedObjectNameException e) { try { return new ObjectName(domain, "name", ObjectName.quote(name.getKey())); - } catch (MalformedObjectNameException e1) { -- LOGGER.warn("Unable to register {} {}", type, name, e1); -+ LOG.warn("Unable to register {} {}", type, name, e1); - throw new RuntimeException(e1); - } - } --- a/metrics-jmx/src/main/java/io/dropwizard/metrics5/jmx/JmxReporter.java +++ b/metrics-jmx/src/main/java/io/dropwizard/metrics5/jmx/JmxReporter.java @@ -1,5 +1,9 @@ @@ -8542,147 +8414,6 @@ return this; } -@@ -159,7 +160,7 @@ public class JmxReporter implements Reporter, Closeable { - } - } - -- private static final Logger LOGGER = LoggerFactory.getLogger(JmxReporter.class); -+ private static final Logger LOG = LoggerFactory.getLogger(JmxReporter.class); - - @SuppressWarnings("UnusedDeclaration") - public interface MetricMBean { -@@ -570,9 +571,9 @@ public class JmxReporter implements Reporter, Closeable { - registerMBean(new JmxGauge(gauge, objectName), objectName); - } - } catch (InstanceAlreadyExistsException e) { -- LOGGER.debug("Unable to register gauge", e); -+ LOG.debug("Unable to register gauge", e); - } catch (JMException e) { -- LOGGER.warn("Unable to register gauge", e); -+ LOG.warn("Unable to register gauge", e); - } - } - -@@ -582,9 +583,9 @@ public class JmxReporter implements Reporter, Closeable { - final ObjectName objectName = createName("gauges", name); - unregisterMBean(objectName); - } catch (InstanceNotFoundException e) { -- LOGGER.debug("Unable to unregister gauge", e); -+ LOG.debug("Unable to unregister gauge", e); - } catch (MBeanRegistrationException e) { -- LOGGER.warn("Unable to unregister gauge", e); -+ LOG.warn("Unable to unregister gauge", e); - } - } - -@@ -596,9 +597,9 @@ public class JmxReporter implements Reporter, Closeable { - registerMBean(new JmxCounter(counter, objectName), objectName); - } - } catch (InstanceAlreadyExistsException e) { -- LOGGER.debug("Unable to register counter", e); -+ LOG.debug("Unable to register counter", e); - } catch (JMException e) { -- LOGGER.warn("Unable to register counter", e); -+ LOG.warn("Unable to register counter", e); - } - } - -@@ -608,9 +609,9 @@ public class JmxReporter implements Reporter, Closeable { - final ObjectName objectName = createName("counters", name); - unregisterMBean(objectName); - } catch (InstanceNotFoundException e) { -- LOGGER.debug("Unable to unregister counter", e); -+ LOG.debug("Unable to unregister counter", e); - } catch (MBeanRegistrationException e) { -- LOGGER.warn("Unable to unregister counter", e); -+ LOG.warn("Unable to unregister counter", e); - } - } - -@@ -622,9 +623,9 @@ public class JmxReporter implements Reporter, Closeable { - registerMBean(new JmxHistogram(histogram, objectName), objectName); - } - } catch (InstanceAlreadyExistsException e) { -- LOGGER.debug("Unable to register histogram", e); -+ LOG.debug("Unable to register histogram", e); - } catch (JMException e) { -- LOGGER.warn("Unable to register histogram", e); -+ LOG.warn("Unable to register histogram", e); - } - } - -@@ -634,9 +635,9 @@ public class JmxReporter implements Reporter, Closeable { - final ObjectName objectName = createName("histograms", name); - unregisterMBean(objectName); - } catch (InstanceNotFoundException e) { -- LOGGER.debug("Unable to unregister histogram", e); -+ LOG.debug("Unable to unregister histogram", e); - } catch (MBeanRegistrationException e) { -- LOGGER.warn("Unable to unregister histogram", e); -+ LOG.warn("Unable to unregister histogram", e); - } - } - -@@ -649,9 +650,9 @@ public class JmxReporter implements Reporter, Closeable { - new JmxMeter(meter, objectName, timeUnits.rateFor(name.getKey())), objectName); - } - } catch (InstanceAlreadyExistsException e) { -- LOGGER.debug("Unable to register meter", e); -+ LOG.debug("Unable to register meter", e); - } catch (JMException e) { -- LOGGER.warn("Unable to register meter", e); -+ LOG.warn("Unable to register meter", e); - } - } - -@@ -661,9 +662,9 @@ public class JmxReporter implements Reporter, Closeable { - final ObjectName objectName = createName("meters", name); - unregisterMBean(objectName); - } catch (InstanceNotFoundException e) { -- LOGGER.debug("Unable to unregister meter", e); -+ LOG.debug("Unable to unregister meter", e); - } catch (MBeanRegistrationException e) { -- LOGGER.warn("Unable to unregister meter", e); -+ LOG.warn("Unable to unregister meter", e); - } - } - -@@ -681,9 +682,9 @@ public class JmxReporter implements Reporter, Closeable { - objectName); - } - } catch (InstanceAlreadyExistsException e) { -- LOGGER.debug("Unable to register timer", e); -+ LOG.debug("Unable to register timer", e); - } catch (JMException e) { -- LOGGER.warn("Unable to register timer", e); -+ LOG.warn("Unable to register timer", e); - } - } - -@@ -693,9 +694,9 @@ public class JmxReporter implements Reporter, Closeable { - final ObjectName objectName = createName("timers", name); - unregisterMBean(objectName); - } catch (InstanceNotFoundException e) { -- LOGGER.debug("Unable to unregister timer", e); -+ LOG.debug("Unable to unregister timer", e); - } catch (MBeanRegistrationException e) { -- LOGGER.warn("Unable to unregister timer", e); -+ LOG.warn("Unable to unregister timer", e); - } - } - -@@ -708,9 +709,9 @@ public class JmxReporter implements Reporter, Closeable { - try { - unregisterMBean(name); - } catch (InstanceNotFoundException e) { -- LOGGER.debug("Unable to unregister metric", e); -+ LOG.debug("Unable to unregister metric", e); - } catch (MBeanRegistrationException e) { -- LOGGER.warn("Unable to unregister metric", e); -+ LOG.warn("Unable to unregister metric", e); - } - } - registered.clear(); --- a/metrics-jmx/src/test/java/io/dropwizard/metrics5/jmx/DefaultObjectNameFactoryTest.java +++ b/metrics-jmx/src/test/java/io/dropwizard/metrics5/jmx/DefaultObjectNameFactoryTest.java @@ -7,7 +7,7 @@ import io.dropwizard.metrics5.MetricName; @@ -9002,21 +8733,7 @@ import java.util.HashMap; import java.util.Map; import javax.management.JMException; -@@ -19,7 +20,7 @@ import org.slf4j.LoggerFactory; - *

These JMX objects are only available on Java 7 and above. - */ - public class BufferPoolMetricSet implements MetricSet { -- private static final Logger LOGGER = LoggerFactory.getLogger(BufferPoolMetricSet.class); -+ private static final Logger LOG = LoggerFactory.getLogger(BufferPoolMetricSet.class); - private static final String[] ATTRIBUTES = {"Count", "MemoryUsed", "TotalCapacity"}; - private static final String[] NAMES = {"count", "used", "capacity"}; - private static final String[] POOLS = {"direct", "mapped"}; -@@ -43,10 +44,10 @@ public class BufferPoolMetricSet implements MetricSet { - gauges.put( - MetricRegistry.name(pool, name), new JmxAttributeGauge(mBeanServer, on, attribute)); - } catch (JMException ignored) { -- LOGGER.debug("Unable to load buffer pool MBeans, possibly running on Java 6"); -+ LOG.debug("Unable to load buffer pool MBeans, possibly running on Java 6"); +@@ -47,6 +48,6 @@ public class BufferPoolMetricSet implements MetricSet { } } } diff --git a/integration-tests/metrics-expected-warnings.txt b/integration-tests/metrics-expected-warnings.txt index 401c709f..61810502 100644 --- a/integration-tests/metrics-expected-warnings.txt +++ b/integration-tests/metrics-expected-warnings.txt @@ -9,9 +9,9 @@ metrics-collectd/src/main/java/io/dropwizard/metrics5/collectd/PacketWriter.java metrics-core/src/main/java/io/dropwizard/metrics5/CsvReporter.java:[390,35] [FormatStringConcatenation] Defer string concatenation to the invoked method metrics-core/src/main/java/io/dropwizard/metrics5/InstrumentedExecutorService.java:[244,25] [try] auto-closeable resource durationContext is never referenced in body of corresponding try statement metrics-core/src/main/java/io/dropwizard/metrics5/InstrumentedExecutorService.java:[266,25] [try] auto-closeable resource context is never referenced in body of corresponding try statement -metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteReporter.java:[431,14] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) -metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteReporter.java:[436,16] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) -metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteReporter.java:[449,17] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) +metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteReporter.java:[431,17] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) +metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteReporter.java:[436,19] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) +metrics-graphite/src/main/java/io/dropwizard/metrics5/graphite/GraphiteReporter.java:[449,20] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) metrics-healthchecks/src/test/java/io/dropwizard/metrics5/health/HealthCheckTest.java:[189,46] [TimeZoneUsage] Derive the current time from an existing `Clock` Spring bean, and don't rely on a `Clock`'s time zone metrics-healthchecks/src/test/java/io/dropwizard/metrics5/health/HealthCheckTest.java:[203,46] [TimeZoneUsage] Derive the current time from an existing `Clock` Spring bean, and don't rely on a `Clock`'s time zone metrics-httpclient/src/test/java/io/dropwizard/metrics5/httpclient/HttpClientMetricNameStrategiesTest.java:[124,22] [deprecation] rewriteURI(URI,HttpHost,boolean) in URIUtils has been deprecated @@ -26,8 +26,8 @@ metrics-httpclient5/src/main/java/io/dropwizard/metrics5/httpclient5/Instrumente metrics-httpclient5/src/main/java/io/dropwizard/metrics5/httpclient5/InstrumentedHttpRequestExecutor.java:[49,4] [deprecation] HttpRequestExecutor(Timeout,ConnectionReuseStrategy,Http1StreamListener) in HttpRequestExecutor has been deprecated metrics-httpclient5/src/test/java/io/dropwizard/metrics5/httpclient5/InstrumentedHttpClientsTest.java:[46,10] [deprecation] execute(ClassicHttpRequest) in HttpClient has been deprecated metrics-httpclient5/src/test/java/io/dropwizard/metrics5/httpclient5/InstrumentedHttpClientsTest.java:[68,12] [deprecation] execute(ClassicHttpRequest) in HttpClient has been deprecated -metrics-influxdb/src/main/java/io/dropwizard/metrics5/influxdb/InfluxDbReporter.java:[282,14] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) -metrics-influxdb/src/main/java/io/dropwizard/metrics5/influxdb/InfluxDbReporter.java:[287,16] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) +metrics-influxdb/src/main/java/io/dropwizard/metrics5/influxdb/InfluxDbReporter.java:[282,17] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) +metrics-influxdb/src/main/java/io/dropwizard/metrics5/influxdb/InfluxDbReporter.java:[287,19] [Slf4jLogStatement] Log statement contains 0 placeholders, but specifies 1 matching argument(s) metrics-jakarta-servlets/src/test/java/io/dropwizard/metrics5/servlets/HealthCheckServletTest.java:[31,67] [TimeZoneUsage] Derive the current time from an existing `Clock` Spring bean, and don't rely on a `Clock`'s time zone metrics-jdbi3/src/test/java/io/dropwizard/metrics5/jdbi3/strategies/SmartNameStrategyTest.java:[18,10] [deprecation] InstrumentedTimingCollector in io.dropwizard.metrics5.jdbi3 has been deprecated metrics-jdbi3/src/test/java/io/dropwizard/metrics5/jdbi3/strategies/SmartNameStrategyTest.java:[24,20] [deprecation] InstrumentedTimingCollector in io.dropwizard.metrics5.jdbi3 has been deprecated diff --git a/integration-tests/metrics.sh b/integration-tests/metrics.sh index 812a4a12..229ed79e 100755 --- a/integration-tests/metrics.sh +++ b/integration-tests/metrics.sh @@ -8,11 +8,7 @@ repository='https://github.com/dropwizard/metrics.git' revision='v5.0.0-rc22' additional_build_flags='' additional_source_directories='' -# XXX: Minimize the diff by including -# `-XepOpt:Slf4jLoggerDeclaration:CanonicalStaticLoggerName=LOGGER` once such -# flags are supported in patch mode. See -# https://github.com/google/error-prone/pull/4699. -shared_error_prone_flags='-XepExcludedPaths:.*/target/generated-sources/.*' +shared_error_prone_flags='-XepExcludedPaths:.*/target/generated-sources/.* -XepOpt:Slf4jLoggerDeclaration:CanonicalStaticLoggerName=LOGGER' patch_error_prone_flags='' validation_error_prone_flags='' validation_build_flags='' diff --git a/pom.xml b/pom.xml index d6770ffe..abf8077f 100644 --- a/pom.xml +++ b/pom.xml @@ -205,8 +205,8 @@ 1.1.1 1.11.0 ${version.error-prone-orig} - ${version.error-prone-orig}-picnic-4 - 2.36.0 + ${version.error-prone-orig}-picnic-1 + 2.37.0 0.1.28 1.0 17 @@ -1939,9 +1939,7 @@ -XepOpt:NullAway:AssertsEnabled=true -XepOpt:NullAway:CheckOptionalEmptiness=true -XepOpt:Nullness:Conservative=false - -XepOpt:StatementSwitchToExpressionSwitch:EnableAssignmentSwitchConversion=true -XepOpt:StatementSwitchToExpressionSwitch:EnableDirectConversion=true - -XepOpt:StatementSwitchToExpressionSwitch:EnableReturnSwitchConversion=true ${error-prone.patch-args} ${error-prone.self-check-args} diff --git a/refaster-support/src/main/java/tech/picnic/errorprone/refaster/matchers/IsEmpty.java b/refaster-support/src/main/java/tech/picnic/errorprone/refaster/matchers/IsEmpty.java index d61cd180..dfd3e7f7 100644 --- a/refaster-support/src/main/java/tech/picnic/errorprone/refaster/matchers/IsEmpty.java +++ b/refaster-support/src/main/java/tech/picnic/errorprone/refaster/matchers/IsEmpty.java @@ -118,11 +118,12 @@ public final class IsEmpty implements Matcher { } private boolean isEmptyCollectionConstructor(ExpressionTree tree, VisitorState state) { - if (!(tree instanceof NewClassTree) || !MUTABLE_COLLECTION_TYPE.matches(tree, state)) { + if (!(tree instanceof NewClassTree newClassTree) + || !MUTABLE_COLLECTION_TYPE.matches(tree, state)) { return false; } - List arguments = ((NewClassTree) tree).getArguments(); + List arguments = newClassTree.getArguments(); if (arguments.stream().allMatch(a -> EMPTY_COLLECTION_CONSTRUCTOR_ARGUMENT.matches(a, state))) { /* * This is a default constructor, or a constructor that creates an empty collection using diff --git a/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java b/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java index 99673e20..183a3e50 100644 --- a/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java +++ b/refaster-test-support/src/main/java/tech/picnic/errorprone/refaster/test/RefasterRuleCollection.java @@ -6,6 +6,7 @@ import static com.google.common.collect.ImmutableSet.toImmutableSet; import static com.google.common.collect.ImmutableSortedSet.toImmutableSortedSet; import static com.google.errorprone.BugPattern.LinkType.NONE; import static com.google.errorprone.BugPattern.SeverityLevel.ERROR; +import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.Comparator.naturalOrder; import static tech.picnic.errorprone.refaster.runner.Refaster.INCLUDED_RULES_PATTERN_FLAG; @@ -17,6 +18,7 @@ import com.google.common.collect.ImmutableSortedSet; import com.google.common.collect.Iterables; import com.google.common.collect.Range; import com.google.common.collect.Sets; +import com.google.common.io.Resources; import com.google.errorprone.BugCheckerRefactoringTestHelper; import com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode; import com.google.errorprone.BugPattern; @@ -38,6 +40,9 @@ import com.sun.source.util.TreeScanner; import com.sun.tools.javac.tree.EndPosTable; import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; import com.sun.tools.javac.util.Position; +import java.io.IOException; +import java.io.UncheckedIOException; +import java.net.URL; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -124,13 +129,15 @@ public final class RefasterRuleCollection extends BugChecker implements Compilat */ public static void validate(Class clazz) { String className = clazz.getSimpleName(); + String inputResource = className + "TestInput.java"; + String outputResource = className + "TestOutput.java"; BugCheckerRefactoringTestHelper.newInstance(RefasterRuleCollection.class, clazz) .setArgs( "--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED", "-XepOpt:" + RULE_COLLECTION_FLAG + '=' + className) - .addInput(className + "TestInput.java") - .addOutput(className + "TestOutput.java") + .addInputLines(inputResource, loadResource(clazz, inputResource)) + .addOutputLines(outputResource, loadResource(clazz, outputResource)) .doTest(TestMode.TEXT_MATCH); } @@ -247,6 +254,15 @@ public final class RefasterRuleCollection extends BugChecker implements Compilat return value.substring(index + 1); } + private static String loadResource(Class contextClass, String resource) { + URL url = Resources.getResource(contextClass, resource); + try { + return Resources.toString(url, UTF_8); + } catch (IOException e) { + throw new UncheckedIOException("Cannot find resource: " + url, e); + } + } + private class UnexpectedMatchReporter extends TreeScanner<@Nullable Void, VisitorState> { private final ImmutableRangeMap indexedMatches; From 40b3c87b72d82c99dbee185da1cb7e7a723c6690 Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sat, 22 Mar 2025 12:54:04 +0100 Subject: [PATCH 52/70] Upgrade Spring 6.2.4 -> 6.2.5 (#1602) See: - https://github.com/spring-projects/spring-framework/releases/tag/v6.2.5 - https://github.com/spring-projects/spring-framework/compare/v6.2.4...v6.2.5 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index abf8077f..378a082b 100644 --- a/pom.xml +++ b/pom.xml @@ -510,7 +510,7 @@ org.springframework spring-framework-bom - 6.2.4 + 6.2.5 pom import From c3351b9ee160a5316f7c0706c0f6fc9fd9671dfd Mon Sep 17 00:00:00 2001 From: Tim te Beek Date: Sun, 23 Mar 2025 11:13:24 +0100 Subject: [PATCH 53/70] Introduce two `FileRules` Refaster rules (#1596) Invoking `File#mkdirs` before testing for existence of the specified path, rather than the other way around, avoids a subtle concurrency issue. See also openrewrite/rewrite#5189. --- .../errorprone/refasterrules/FileRules.java | 33 +++++++++++++++++++ .../refasterrules/FileRulesTestInput.java | 12 +++++++ .../refasterrules/FileRulesTestOutput.java | 12 +++++++ 3 files changed, 57 insertions(+) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/FileRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/FileRules.java index 065b63c4..f6fb1695 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/FileRules.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/FileRules.java @@ -4,6 +4,7 @@ import static java.nio.charset.StandardCharsets.UTF_8; import com.google.errorprone.refaster.Refaster; import com.google.errorprone.refaster.annotation.AfterTemplate; +import com.google.errorprone.refaster.annotation.AlsoNegation; import com.google.errorprone.refaster.annotation.BeforeTemplate; import com.google.errorprone.refaster.annotation.Repeated; import java.io.File; @@ -11,6 +12,7 @@ import java.io.IOException; import java.net.URI; import java.nio.charset.Charset; import java.nio.file.Files; +import java.nio.file.LinkOption; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.FileAttribute; @@ -141,4 +143,35 @@ final class FileRules { return Files.createTempFile(directory.toPath(), prefix, suffix).toFile(); } } + + /** + * Invoke {@link File#mkdirs()} before {@link Files#exists(Path, LinkOption...)} to avoid + * concurrency issues. + */ + static final class PathToFileMkDirsFilesExists { + @BeforeTemplate + boolean before(Path path) { + return Files.exists(path) || path.toFile().mkdirs(); + } + + @AfterTemplate + @AlsoNegation + boolean after(Path path) { + return path.toFile().mkdirs() || Files.exists(path); + } + } + + /** Invoke {@link File#mkdirs()} before {@link File#exists()} to avoid concurrency issues. */ + static final class FileMkDirsFileExists { + @BeforeTemplate + boolean before(File file) { + return file.exists() || file.mkdirs(); + } + + @AfterTemplate + @AlsoNegation + boolean after(File file) { + return file.mkdirs() || file.exists(); + } + } } diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestInput.java index 4863bb1a..5425fb2e 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestInput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestInput.java @@ -39,4 +39,16 @@ final class FileRulesTest implements RefasterRuleCollectionTestCase { File testFilesCreateTempFileInCustomDirectoryToFile() throws IOException { return File.createTempFile("foo", "bar", new File("baz")); } + + ImmutableSet testPathToFileMkDirsFilesExists() { + return ImmutableSet.of( + Files.exists(Path.of("foo")) || Path.of("foo").toFile().mkdirs(), + !Files.exists(Path.of("bar")) && !Path.of("bar").toFile().mkdirs()); + } + + ImmutableSet testFileMkDirsFileExists() { + return ImmutableSet.of( + new File("foo").exists() || new File("foo").mkdirs(), + !new File("bar").exists() && !new File("bar").mkdirs()); + } } diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestOutput.java index 0e987bcf..2f4ecfab 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestOutput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/FileRulesTestOutput.java @@ -39,4 +39,16 @@ final class FileRulesTest implements RefasterRuleCollectionTestCase { File testFilesCreateTempFileInCustomDirectoryToFile() throws IOException { return Files.createTempFile(new File("baz").toPath(), "foo", "bar").toFile(); } + + ImmutableSet testPathToFileMkDirsFilesExists() { + return ImmutableSet.of( + Path.of("foo").toFile().mkdirs() || Files.exists(Path.of("foo")), + !Path.of("bar").toFile().mkdirs() && !Files.exists(Path.of("bar"))); + } + + ImmutableSet testFileMkDirsFileExists() { + return ImmutableSet.of( + new File("foo").mkdirs() || new File("foo").exists(), + !new File("bar").mkdirs() && !new File("bar").exists()); + } } From 7b14711ecf9782fbf6f4a38143c4c99e220339c9 Mon Sep 17 00:00:00 2001 From: Julian Broudy Date: Sun, 23 Mar 2025 11:26:19 +0100 Subject: [PATCH 54/70] Extend `FluxJust` Refaster rule (#1581) --- .../picnic/errorprone/refasterrules/ReactorRules.java | 9 ++++++++- .../errorprone/refasterrules/ReactorRulesTestInput.java | 7 ++++++- .../errorprone/refasterrules/ReactorRulesTestOutput.java | 2 +- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java index 7eb3af75..12c4f39d 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java @@ -489,9 +489,16 @@ final class ReactorRules { return Flux.range(value, 1); } + // XXX: Consider generalizing part of this template using an Error Prone check that covers any + // sequence of explicitly enumerated values passed to an iteration order-preserving collection + // factory method. @BeforeTemplate Flux before(T value) { - return Mono.just(value).repeat().take(1); + return Refaster.anyOf( + Mono.just(value).flux(), + Mono.just(value).repeat().take(1), + Flux.fromIterable(ImmutableList.of(value)), + Flux.fromIterable(ImmutableSet.of(value))); } @AfterTemplate diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java index fe4c9dcf..b87e5783 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java @@ -188,7 +188,12 @@ final class ReactorRulesTest implements RefasterRuleCollectionTestCase { } ImmutableSet> testFluxJust() { - return ImmutableSet.of(Flux.range(0, 1), Mono.just(2).repeat().take(1)); + return ImmutableSet.of( + Flux.range(0, 1), + Mono.just(2).flux(), + Mono.just(3).repeat().take(1), + Flux.fromIterable(ImmutableList.of(4)), + Flux.fromIterable(ImmutableSet.of(5))); } ImmutableSet> testMonoIdentity() { diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java index e48cca28..4aa24950 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java @@ -192,7 +192,7 @@ final class ReactorRulesTest implements RefasterRuleCollectionTestCase { } ImmutableSet> testFluxJust() { - return ImmutableSet.of(Flux.just(0), Flux.just(2)); + return ImmutableSet.of(Flux.just(0), Flux.just(2), Flux.just(3), Flux.just(4), Flux.just(5)); } ImmutableSet> testMonoIdentity() { From d8cae04a98882ec8bd282acb0df6eb08e0847a4e Mon Sep 17 00:00:00 2001 From: Picnic-DevPla-Bot <168541957+Picnic-DevPla-Bot@users.noreply.github.com> Date: Sun, 23 Mar 2025 11:59:48 +0100 Subject: [PATCH 55/70] Upgrade Byte Buddy 1.17.2 -> 1.17.3 (#1603) See: - https://github.com/raphw/byte-buddy/releases/tag/byte-buddy-1.17.3 - https://github.com/raphw/byte-buddy/compare/byte-buddy-1.17.2...byte-buddy-1.17.3 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 378a082b..c538088f 100644 --- a/pom.xml +++ b/pom.xml @@ -422,7 +422,7 @@ net.bytebuddy byte-buddy - 1.17.2 + 1.17.3 - 2025-02-02T12:19:40Z + 2025-03-24T10:36:40Z UTF-8 - 2025-03-24T10:36:40Z + 2025-03-24T10:41:07Z UTF-8