From 1885f22338c088ac37f6fa40d79437c2618cd0f1 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 26 Jul 2025 04:23:21 +0000 Subject: [PATCH 001/101] Update net.sourceforge.pmd to v7.16.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index b148a3f6..13cbcef4 100644 --- a/pom.xml +++ b/pom.xml @@ -82,12 +82,12 @@ net.sourceforge.pmd pmd-core - 7.15.0 + 7.16.0 net.sourceforge.pmd pmd-java - 7.15.0 + 7.16.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index b0e33c76..789e4552 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -252,12 +252,12 @@ net.sourceforge.pmd pmd-core - 7.15.0 + 7.16.0 net.sourceforge.pmd pmd-java - 7.15.0 + 7.16.0 From f288c365ca866a08907cb7963fea3f82c7bffb01 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 29 Jul 2025 04:30:18 +0000 Subject: [PATCH 002/101] Update dependency org.codehaus.mojo:flatten-maven-plugin to v1.7.2 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 789e4552..58df6c88 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -147,7 +147,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.7.1 + 1.7.2 ossrh From 12b61ed91efb5330fb3c9ef12d7fe61423582fee Mon Sep 17 00:00:00 2001 From: "Alex \"Blex\" B" <45384811+AB-xdev@users.noreply.github.com> Date: Mon, 4 Aug 2025 10:07:50 +0200 Subject: [PATCH 003/101] Remove unused variable from workflow --- .github/workflows/check-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 01edc3aa..65e1e41a 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -20,7 +20,6 @@ on: - 'assets/**' env: - PRIMARY_MAVEN_MODULE: ${{ github.event.repository.name }} DEMO_MAVEN_MODULE: ${{ github.event.repository.name }}-demo jobs: From d75370f1dfb63a2fc3e0e8dd40e1ab2ed957c33e Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 7 Aug 2025 09:47:14 +0200 Subject: [PATCH 004/101] [IDEA] Bump checkstyle version --- .idea/checkstyle-idea.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.idea/checkstyle-idea.xml b/.idea/checkstyle-idea.xml index b52c3e2f..d43641c1 100644 --- a/.idea/checkstyle-idea.xml +++ b/.idea/checkstyle-idea.xml @@ -1,7 +1,7 @@ - 10.21.0 + 10.26.1 JavaOnlyWithTests true true From 0ec6a335f6992cafc30d348c9415a71456ac08db Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 8 Aug 2025 04:26:21 +0000 Subject: [PATCH 005/101] Update lycheeverse/lychee-action digest to 5c4ee84 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 1d9d96b2..d29a4da9 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -18,7 +18,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332 # v2 + uses: lycheeverse/lychee-action@5c4ee84814c983aa7164eaee476f014e53ff3963 # v2 with: fail: false # Don't fail on broken links, create an issue instead From f368480b8f948af255e91cd589f99d160bf1284b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 8 Aug 2025 04:31:07 +0000 Subject: [PATCH 006/101] Update lycheeverse/lychee-action digest to 5c4ee84 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index e2f3597a..d5095397 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -19,7 +19,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332 # v2 + uses: lycheeverse/lychee-action@5c4ee84814c983aa7164eaee476f014e53ff3963 # v2 with: fail: false # Don't fail on broken links, create an issue instead From 3849ad71af09d44503bfbf2ae967cd33e33ac91f Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 8 Aug 2025 04:31:09 +0000 Subject: [PATCH 007/101] Update dependency com.puppycrawl.tools:checkstyle to v11 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 13cbcef4..c495b40d 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 10.26.1 + 11.0.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 58df6c88..cc32fe86 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 10.26.1 + 11.0.0 From df23f84b8e58db57c57d0a3652ab3c4c31ea9595 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 12 Aug 2025 04:15:58 +0000 Subject: [PATCH 008/101] Update actions/checkout action to v5 --- .github/workflows/broken-links.yml | 2 +- .github/workflows/sync-labels.yml | 2 +- .github/workflows/update-from-template.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 1d9d96b2..a9e2882f 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -12,7 +12,7 @@ jobs: link-checker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: mv .github/.lycheeignore .lycheeignore diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 0e2beb51..3faaf1e3 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -15,7 +15,7 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: sparse-checkout: .github/labels.yml diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index 24af3f35..3a7dc919 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -35,7 +35,7 @@ jobs: update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }} create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 @@ -181,7 +181,7 @@ jobs: if: needs.update.outputs.create_update_branch_merged_pr == 1 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 From 613e5d01c18b6bf9687473275b8ea5111224203d Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 12 Aug 2025 04:19:19 +0000 Subject: [PATCH 009/101] Update actions/checkout action to v5 --- .github/workflows/broken-links.yml | 2 +- .github/workflows/check-build.yml | 6 +++--- .github/workflows/release.yml | 10 +++++----- .github/workflows/sync-labels.yml | 2 +- .github/workflows/test-deploy.yml | 2 +- .github/workflows/update-from-template.yml | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index d5095397..a37abe70 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 15 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - run: mv .github/.lycheeignore .lycheeignore diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 65e1e41a..fdeead25 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -33,7 +33,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 @@ -81,7 +81,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 @@ -104,7 +104,7 @@ jobs: distribution: [temurin] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5f8fb83e..e415f670 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 @@ -53,7 +53,7 @@ jobs: outputs: upload_url: ${{ steps.create-release.outputs.upload_url }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Configure Git run: | @@ -105,7 +105,7 @@ jobs: needs: [prepare-release] timeout-minutes: 60 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Init Git and pull run: | @@ -153,7 +153,7 @@ jobs: needs: [prepare-release] timeout-minutes: 15 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Init Git and pull run: | @@ -184,7 +184,7 @@ jobs: needs: [publish-maven] timeout-minutes: 10 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Init Git and pull run: | diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index dc672877..f6c50a17 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: sparse-checkout: .github/labels.yml diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index 046be633..795bd6e8 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Set up JDK uses: actions/setup-java@v4 diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index 65f56b0d..e689fe9f 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -36,7 +36,7 @@ jobs: update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }} create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 @@ -183,7 +183,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 From 019ff584fedbc7f8e0bff18c9ac9db333db7aa3d Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 13 Aug 2025 13:48:55 +0200 Subject: [PATCH 010/101] Add configuration for Intellij PMD plugin --- .gitignore | 46 +++++++++++++++++++++++++++++++++++++++++++++ .idea/PMDPlugin.xml | 16 ++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/PMDPlugin.xml diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..ea952953 --- /dev/null +++ b/.gitignore @@ -0,0 +1,46 @@ +# Compiled class file +*.class + +# Log file +*.log + +# Package/Binary Files don't belong into a git repo +*.jar +*.war +*.ear +*.zip +*.tar.gz +*.dll +*.exe +*.bin + +# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml +hs_err_pid* + +# Eclipse +.metadata +.settings +.classpath +.project + +# == IntelliJ == +*.iml +*.ipr + +# Some files are user/installation independent and are used for configuring the IDE +# See also https://stackoverflow.com/a/35279076 + +.idea/* +!.idea/saveactions_settings.xml +!.idea/checkstyle-idea.xml +!.idea/externalDependencies.xml +!.idea/PMDPlugin.xml + +!.idea/inspectionProfiles/ +.idea/inspectionProfiles/* +!.idea/inspectionProfiles/Project_Default.xml + +!.idea/codeStyles/ +.idea/codeStyles/* +!.idea/codeStyles/codeStyleConfig.xml +!.idea/codeStyles/Project.xml diff --git a/.idea/PMDPlugin.xml b/.idea/PMDPlugin.xml new file mode 100644 index 00000000..0936e518 --- /dev/null +++ b/.idea/PMDPlugin.xml @@ -0,0 +1,16 @@ + + + + + + + \ No newline at end of file From 29aa603936a4926a2fb47cafb1fd4a1ab8115208 Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 13 Aug 2025 16:38:20 +0200 Subject: [PATCH 011/101] Enable async processing by default --- .idea/saveactions_settings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/.idea/saveactions_settings.xml b/.idea/saveactions_settings.xml index 848c311a..12a4f040 100644 --- a/.idea/saveactions_settings.xml +++ b/.idea/saveactions_settings.xml @@ -5,6 +5,7 @@ \ No newline at end of file From b828600535aa40c085989653d484607d30e7f6e2 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 12 Sep 2025 09:21:56 +0000 Subject: [PATCH 028/101] Update net.sourceforge.pmd to v7.17.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index abef334e..f824869d 100644 --- a/pom.xml +++ b/pom.xml @@ -83,12 +83,12 @@ net.sourceforge.pmd pmd-core - 7.16.0 + 7.17.0 net.sourceforge.pmd pmd-java - 7.16.0 + 7.17.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index e8666847..7380883f 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -253,12 +253,12 @@ net.sourceforge.pmd pmd-core - 7.16.0 + 7.17.0 net.sourceforge.pmd pmd-java - 7.16.0 + 7.17.0 From 154c6c732cbb090b1d3ddb6941759893d9d9c1f1 Mon Sep 17 00:00:00 2001 From: AB Date: Fri, 12 Sep 2025 12:09:53 +0200 Subject: [PATCH 029/101] Update to PMD 7.17 and add new rules --- .config/pmd/java/ruleset.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index ebdbd83a..267fa5e9 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -42,6 +42,7 @@ + @@ -138,6 +139,7 @@ + @@ -155,7 +157,7 @@ - + From 44ccd727be9ac92de19cd75f1dc5d77eea2dfd8b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 14 Sep 2025 04:14:19 +0000 Subject: [PATCH 030/101] Update shogo82148/actions-create-release digest to 7b89596 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0639fc65..61015663 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,7 +91,7 @@ jobs: - name: Create Release id: create-release - uses: shogo82148/actions-create-release@4661dc54f7b4b564074e9fbf73884d960de569a3 # v1 + uses: shogo82148/actions-create-release@7b89596097b26731bda0852f1504f813499079ee # v1 with: tag_name: v${{ steps.version.outputs.release }} release_name: v${{ steps.version.outputs.release }} From 6ab6ddbd3796f199eca4fc8f3be14bf6dd2529c2 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 15 Sep 2025 04:14:46 +0000 Subject: [PATCH 031/101] Update actions/setup-node action to v5 --- .github/workflows/antora-build.yml | 2 +- .github/workflows/check-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index a7b47f5b..aafa769f 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@v4 - name: Install Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 18 diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 9d3b94cd..9181a1e5 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -163,7 +163,7 @@ jobs: - uses: actions/checkout@v4 - name: Install Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v5 with: node-version: 18 From 088bcf340437d337ffc169567f6bdfaad3a6d2d6 Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 15 Sep 2025 14:54:51 +0200 Subject: [PATCH 032/101] Add PMD 7.16 Rules --- .config/pmd/java/ruleset.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 267fa5e9..5d76b2b6 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -153,6 +153,8 @@ + + From dd4c7faeec7695b3b9d02cff6dbc674f9cdd582b Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 10:26:07 +0200 Subject: [PATCH 033/101] Update mvnw --- .mvn/wrapper/maven-wrapper.properties | 18 +------ mvnw | 67 ++++++++++++++++++++++----- mvnw.cmd | 57 ++++++++++++++++++++--- 3 files changed, 108 insertions(+), 34 deletions(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 6a6b8b2c..c0bcafe9 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,17 +1,3 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. +wrapperVersion=3.3.4 +distributionType=only-script distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip diff --git a/mvnw b/mvnw index 08303327..bd8896bf 100755 --- a/mvnw +++ b/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.0 +# Apache Maven Wrapper startup batch script, version 3.3.4 # # Optional ENV vars # ----------------- @@ -97,14 +97,25 @@ die() { exit 1 } +trim() { + # MWRAPPER-139: + # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. + # Needed for removing poorly interpreted newline sequences when running in more + # exotic environments such as mingw bash on Windows. + printf "%s" "${1}" | tr -d '[:space:]' +} + +scriptDir="$(dirname "$0")" +scriptName="$(basename "$0")" + # parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties while IFS="=" read -r key value; do case "${key-}" in - distributionUrl) distributionUrl="${value-}" ;; - distributionSha256Sum) distributionSha256Sum="${value-}" ;; + distributionUrl) distributionUrl=$(trim "${value-}") ;; + distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; esac -done <"${0%/*}/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in ${0%/*}/.mvn/wrapper/maven-wrapper.properties" +done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" +[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" case "${distributionUrl##*/}" in maven-mvnd-*bin.*) @@ -122,7 +133,7 @@ maven-mvnd-*bin.*) distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" ;; maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${0##*/mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; +*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; esac # apply MVNW_REPOURL and calculate MAVEN_HOME @@ -131,7 +142,8 @@ esac distributionUrlName="${distributionUrl##*/}" distributionUrlNameMain="${distributionUrlName%.*}" distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_HOME="$HOME/.m2/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" +MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" +MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" exec_maven() { unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : @@ -199,7 +211,7 @@ elif set_java_home; then public static void main( String[] args ) throws Exception { setDefault( new Downloader() ); - java.nio.file.Files.copy( new java.net.URL( args[0] ).openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); + java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); } } END @@ -218,7 +230,7 @@ if [ -n "${distributionSha256Sum-}" ]; then echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 exit 1 elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c >/dev/null 2>&1; then + if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then distributionSha256Result=true fi elif command -v shasum >/dev/null; then @@ -243,8 +255,41 @@ if command -v unzip >/dev/null; then else tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" fi -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +actualDistributionDir="" + +# First try the expected directory name (for regular distributions) +if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then + if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then + actualDistributionDir="$distributionUrlNameMain" + fi +fi + +# If not found, search for any directory with the Maven executable (for snapshots) +if [ -z "$actualDistributionDir" ]; then + # enable globbing to iterate over items + set +f + for dir in "$TMP_DOWNLOAD_DIR"/*; do + if [ -d "$dir" ]; then + if [ -f "$dir/bin/$MVN_CMD" ]; then + actualDistributionDir="$(basename "$dir")" + break + fi + fi + done + set -f +fi + +if [ -z "$actualDistributionDir" ]; then + verbose "Contents of $TMP_DOWNLOAD_DIR:" + verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" + die "Could not find Maven distribution directory in extracted archive" +fi + +verbose "Found extracted Maven distribution directory: $actualDistributionDir" +printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" +mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" clean || : exec_maven "$@" diff --git a/mvnw.cmd b/mvnw.cmd index 136e686a..92450f93 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -19,7 +19,7 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.0 +@REM Apache Maven Wrapper startup batch script, version 3.3.4 @REM @REM Optional ENV vars @REM MVNW_REPOURL - repo url base for downloading maven distribution @@ -40,7 +40,7 @@ @SET __MVNW_ARG0_NAME__= @SET MVNW_USERNAME= @SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" (%__MVNW_CMD__% %*) +@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) @echo Cannot start maven from wrapper >&2 && exit /b 1 @GOTO :EOF : end batch / begin powershell #> @@ -73,13 +73,30 @@ switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { # apply MVNW_REPOURL and calculate MAVEN_HOME # maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace '^.*'+$MVNW_REPO_PATTERN,'')" + $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } + $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" } $distributionUrlName = $distributionUrl -replace '^.*/','' $distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' -$MAVEN_HOME_PARENT = "$HOME/.m2/wrapper/dists/$distributionUrlNameMain" -$MAVEN_HOME_NAME = ([System.Security.Cryptography.MD5]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' + +$MAVEN_M2_PATH = "$HOME/.m2" +if ($env:MAVEN_USER_HOME) { + $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" +} + +if (-not (Test-Path -Path $MAVEN_M2_PATH)) { + New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null +} + +$MAVEN_WRAPPER_DISTS = $null +if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { + $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" +} else { + $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" +} + +$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" +$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' $MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { @@ -131,7 +148,33 @@ if ($distributionSha256Sum) { # unzip and move Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" -NewName $MAVEN_HOME_NAME | Out-Null + +# Find the actual extracted directory name (handles snapshots where filename != directory name) +$actualDistributionDir = "" + +# First try the expected directory name (for regular distributions) +$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" +$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" +if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { + $actualDistributionDir = $distributionUrlNameMain +} + +# If not found, search for any directory with the Maven executable (for snapshots) +if (!$actualDistributionDir) { + Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { + $testPath = Join-Path $_.FullName "bin/$MVN_CMD" + if (Test-Path -Path $testPath -PathType Leaf) { + $actualDistributionDir = $_.Name + } + } +} + +if (!$actualDistributionDir) { + Write-Error "Could not find Maven distribution directory in extracted archive" +} + +Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" +Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null try { Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null } catch { From 108486865e6442363bbcaff9b394ba5b36a2d63f Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 15 Sep 2025 15:03:03 +0200 Subject: [PATCH 034/101] PMD: Import and modify rules from `jPinpoint` See https://github.com/jborgers/PMD-jPinpoint-rules --- .config/pmd/java/ruleset.xml | 824 ++++++++++++++++++++++++++++++++++- 1 file changed, 818 insertions(+), 6 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 5d76b2b6..28bc272e 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -11,7 +11,6 @@ - @@ -199,6 +198,33 @@ + + + + Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. + + Solution: + * Do not use `StringBuffer` because it's thread-safe and usually this is not needed + * If `StringBuilder` is only used in a simple method (like `toString`) and is effectively inlined: Use a simpler string concatenation (`"a" + x + "b"`). This will be optimized by the Java compiler internally. + * In all other cases: + * Check what is happening and if it makes ANY sense! If for example a CSV file is built here consider using a proper library instead! + * Abstract the Strings into a DTO, join them together using a collection (or `StringJoiner`) or use Java's Streaming API instead + + 3 + + + + + + + + + - @@ -236,7 +262,7 @@ - @@ -257,7 +283,7 @@ - @@ -279,7 +305,7 @@ - @@ -303,7 +329,7 @@ - @@ -311,4 +337,790 @@ + + + + + + Do not use native HTML! Use Vaadin layouts and components to create required structure. + If you are 100% sure that you escaped the value properly and you have no better options you can suppress this. + + 2 + + + + + + + + + + + + + + + + java.text.NumberFormat: DecimalFormat and ChoiceFormat are thread-unsafe. + + Solution: Create a new local one when needed in a method. + + 1 + + + + + + + + + + + + + + + A regular expression is compiled implicitly on every invocation. + Problem: This can be (CPU) expensive, depending on the length of the regular expression. + + Solution: Compile the regex pattern only once and assign it to a private static final Pattern field. + java.util.Pattern objects are thread-safe, so they can be shared among threads. + + 2 + + + + 5 and +(matches(@Image, '[\.\$\|\(\)\[\]\{\}\^\?\*\+\\]+'))) +or +self::VariableAccess and @Name=ancestor::ClassBody[1]/FieldDeclaration/VariableDeclarator[StringLiteral[string-length(@Image) > 5 and +(matches(@Image, '[\.\$\|\(\)\[\]\{\}\^\?\*\+\\]+'))] or not(StringLiteral)]/VariableId/@Name] +]]> + + + + + + + + + + + + The default constructor of ByteArrayOutputStream creates a 32 bytes initial capacity and for StringWriter 16 chars. + Such a small buffer as capacity usually needs several expensive expansions. + + Solution: Explicitly declared the buffer size so that an expansion is not needed in most cases. + Typically much larger than 32, e.g. 4096. + + 2 + + + + + + + + + + + + + + + The time to find element is O(n); n = the number of enum values. + This identical processing is executed for every call. + Considered problematic when `n > 3`. + + Solution: Use a static field-to-enum-value Map. Access time is O(1), provided the hashCode is well-defined. + Implement a fromString method to provide the reverse conversion by using the map. + + 3 + + + + 3]//MethodDeclaration/Block + //MethodCall[pmd-java:matchesSig('java.util.stream.Stream#findFirst()') or pmd-java:matchesSig('java.util.stream.Stream#findAny()')] + [//MethodCall[pmd-java:matchesSig('java.util.stream.Stream#of(_)') or pmd-java:matchesSig('java.util.Arrays#stream(_)')] + [ArgumentList/MethodCall[pmd-java:matchesSig('_#values()')]]] +]]> + + + + + fromString(String name) { + return Stream.of(values()).filter(v -> v.toString().equals(name)).findAny(); // bad: iterates for every call, O(n) access time + } +} + +Usage: `Fruit f = Fruit.fromString("banana");` + +// GOOD +public enum Fruit { + APPLE("apple"), + ORANGE("orange"), + BANANA("banana"), + KIWI("kiwi"); + + private static final Map nameToValue = + Stream.of(values()).collect(toMap(Object::toString, v -> v)); + private final String name; + + Fruit(String name) { this.name = name; } + @Override public String toString() { return name; } + public static Optional fromString(String name) { + return Optional.ofNullable(nameToValue.get(name)); // good, get from Map, O(1) access time + } +} +]]> + + + + + + A regular expression is compiled on every invocation. + Problem: this can be expensive, depending on the length of the regular expression. + + Solution: Usually a pattern is a literal, not dynamic and can be compiled only once. Assign it to a private static field. + java.util.Pattern objects are thread-safe so they can be shared among threads. + + 2 + + + + + + + + + + + + + + + + Recreating a DateTimeFormatter is relatively expensive. + + Solution: Java 8+ java.time.DateTimeFormatter is thread-safe and can be shared among threads. + Create the formatter from a pattern only once, to initialize a static final field. + + 2 + + + + + + + + + + + + Creating a security provider is expensive because of loading of algorithms and other classes. + Additionally, it uses synchronized which leads to lock contention when used with multiple threads. + + Solution: This only needs to happen once in the JVM lifetime, because once loaded the provider is typically available from the Security class. + Create the security provider only once: Only in case when it's not yet available from the Security class. + + 2 + + + + + + + + + + + + + + + Reflection is relatively expensive. + + Solution: Avoid reflection. Use the non-reflective, explicit way like generation by IDE. + + 2 + + + + + + + + + + + + + + + java.util.SimpleDateFormat is thread-unsafe. + The usual solution is to create a new one when needed in a method. + Creating SimpleDateFormat is relatively expensive. + + Solution: Use java.time.DateTimeFormatter. These classes are immutable, thus thread-safe and can be made static. + + 2 + + + + + + + + + + + + + + + Creating Comparator instances repeatedly in methods like compareTo or sort calls is inefficient. + + Solution: Initialize the Comparator once as a static final field and reuse. + + 2 + + + + + + + + + { + @Override + public int compareTo(@NotNull Person o) { + return Comparator.comparing(Person::getFirstName) // Bad: Creates new Comparator instance on each invocation + .thenComparing(Person::getLastName) + .thenComparingInt(Person::getAge) + .compare(this, o); + } +} + +public class GoodPerson implements Comparable { + private static final Comparator COMPARE_FIRST_LAST_NAME_AGE = + Comparator.comparing(Person::getFirstName) + .thenComparing(Person::getLastName) + .thenComparingInt(Person::getAge); + + @Override + public int compareTo(@NotNull Person o) { + return COMPARE_FIRST_LAST_NAME_AGE.compare(this, o); // Good: Comparator initialized once as static final field + } +} +]]> + + + + + + Blocking calls, for instance remote calls, may exhaust the common pool for some time thereby blocking all other use of the common pool. + In addition, nested use of the common pool can lead to deadlock. Do not use the common pool for blocking calls. + The parallelStream() call uses the common pool. + + Solution: Use a dedicated thread pool with enough threads to get proper parallelism. + The number of threads in the common pool is equal to the number of CPUs and meant to utilize all of them. + It assumes CPU-intensive non-blocking processing of in-memory data. + + 2 + + + + + + + + + list = new ArrayList(); + final ForkJoinPool myFjPool = new ForkJoinPool(10); + final ExecutorService myExePool = Executors.newFixedThreadPool(10); + + void bad1() { + list.parallelStream().forEach(elem -> storeDataRemoteCall(elem)); // bad + } + + void good1() { + CompletableFuture[] futures = list.stream().map(elem -> CompletableFuture.supplyAsync(() -> storeDataRemoteCall(elem), myExePool)) + .toArray(CompletableFuture[]::new); + CompletableFuture.allOf(futures).get(10, TimeUnit.MILLISECONDS)); + } + + void good2() throws ExecutionException, InterruptedException { + myFjPool.submit(() -> + list.parallelStream().forEach(elem -> storeDataRemoteCall(elem)) + ).get(); + } + + String storeDataRemoteCall(String elem) { + // do remote call, blocking. We don't use the returned value. + RestTemplate tmpl; + return ""; + } +} +]]> + + + + + + Future.supplyAsync is typically used for remote calls. By default, it uses the common pool. + The number of threads in the common pool is equal to the number of CPU's, which is suitable for in-memory processing. + For I/O, however, this number is typically not suitable because most time is spent waiting for the response and not in CPU. + The common pool must not be used for blocking calls. + + Solution: A separate, properly sized, pool of threads (an Executor) should be used for the async calls. + + 2 + + + + + + + + +>[] futures = accounts.stream() + .map(account -> CompletableFuture.supplyAsync(() -> isAccountBlocked(account))) // bad + .toArray(CompletableFuture[]::new); + } + + void good() { + CompletableFuture>[] futures = accounts.stream() + .map(account -> CompletableFuture.supplyAsync(() -> isAccountBlocked(account), asyncPool)) // good + .toArray(CompletableFuture[]::new); + } +} +]]> + + + + + + `take()` stalls indefinitely in case of hanging threads and consumes a thread. + + Solution: use `poll()` with a timeout value and handle the timeout. + + 2 + + + + + + + + + void collectAllCollectionReplyFromThreads(CompletionService> completionService) { + try { + Future> futureLocal = completionService.take(); // bad + Future> futuresGood = completionService.poll(3, TimeUnit.SECONDS); // good + responseCollector.addAll(futuresGood.get(10, TimeUnit.SECONDS)); // good + } catch (InterruptedException | ExecutionException e) { + LOGGER.error("Error in Thread : {}", e); + } catch (TimeoutException e) { + LOGGER.error("Timeout in Thread : {}", e); + } +} +]]> + + + + + + Stalls indefinitely in case of stalled Callable(s) and consumes threads. + + Solution: Provide a timeout to the invokeAll/invokeAny method and handle the timeout. + + 2 + + + + + + + + +> executeTasksBad(Collection> tasks, ExecutorService executor) throws Exception { + return executor.invokeAll(tasks); // bad, no timeout + } + private List> executeTasksGood(Collection> tasks, ExecutorService executor) throws Exception { + return executor.invokeAll(tasks, OUR_TIMEOUT_IN_MILLIS, TimeUnit.MILLISECONDS); // good + } +} +]]> + + + + + + Stalls indefinitely in case of hanging threads and consumes a thread. + + Solution: Provide a timeout value and handle the timeout. + + 2 + + + + + + + + + complFuture) throws Exception { + return complFuture.get(); // bad +} + +public static String good(CompletableFuture complFuture) throws Exception { + return complFuture.get(10, TimeUnit.SECONDS); // good +} +]]> + + + + + + + Apache HttpClient with its connection pool and timeouts should be setup once and then used for many requests. + It is quite expensive to create and can only provide the benefits of pooling when reused in all requests for that connection. + + Solution: Create/build HttpClient with proper connection pooling and timeouts once, and then use it for requests. + + 3 + + + + + + + + + connectBad(Object req) { + HttpEntity requestEntity = new HttpEntity<>(req); + + HttpClient httpClient = HttpClientBuilder.create().setMaxConnPerRoute(10).build(); // bad + return remoteCall(httpClient, requestEntity); + } +} +]]> + + + + + + Problem: Gson creation is relatively expensive. A JMH benchmark shows a 24x improvement reusing one instance. + + Solution: Since Gson objects are thread-safe after creation, they can be shared between threads. + So reuse created instances from a static field. + Pay attention to use thread-safe (custom) adapters and serializers. + + 3 + + + + + + + + + + + From deddd914be12567ecf33146f9a2f7acb0c10fa0a Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:36:18 +0200 Subject: [PATCH 035/101] PMD: Exclude unused rule --- .config/pmd/java/ruleset.xml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 28bc272e..517b9243 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -185,6 +185,9 @@ + + + From 53b1e5dfd3fc70d91302cfb4fef2dd48b1b65ccb Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:36:48 +0200 Subject: [PATCH 036/101] PMD: Reword and also apply to runAsync --- .config/pmd/java/ruleset.xml | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 517b9243..cda412b8 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -841,6 +841,8 @@ public class GoodPerson implements Comparable { Solution: Use a dedicated thread pool with enough threads to get proper parallelism. The number of threads in the common pool is equal to the number of CPUs and meant to utilize all of them. It assumes CPU-intensive non-blocking processing of in-memory data. + + See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) 2 @@ -897,22 +899,25 @@ public class Foo { - Future.supplyAsync is typically used for remote calls. By default, it uses the common pool. + CompletableFuture.supplyAsync/runAsync is typically used for remote calls. + By default it uses the common pool. The number of threads in the common pool is equal to the number of CPU's, which is suitable for in-memory processing. For I/O, however, this number is typically not suitable because most time is spent waiting for the response and not in CPU. The common pool must not be used for blocking calls. - Solution: A separate, properly sized, pool of threads (an Executor) should be used for the async calls. + Solution: A separate, properly sized pool of threads (an Executor) should be used for the async calls. + + See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) 2 From e6358ed1fa1e6c743e9a7b055a55862beacb8677 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:36:56 +0200 Subject: [PATCH 037/101] PMD: Fix error --- .config/pmd/java/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index cda412b8..bb8177f4 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -1066,7 +1066,7 @@ public static String good(CompletableFuture complFuture) throws Exceptio //MethodDeclaration//MethodCall[ pmd-java:matchesSig('org.apache.hc.client5.http.impl.classic.HttpClientBuilder#create()') or pmd-java:matchesSig('org.apache.hc.client5.http.impl.classic.HttpClients#custom()') - or pmd-java:matchesSig('org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder#build()' + or pmd-java:matchesSig('org.apache.hc.client5.http.impl.async.HttpAsyncClientBuilder#build()') ] [ancestor::MethodDeclaration//ClassType[pmd-java:typeIs('org.springframework.http.HttpEntity') or pmd-java:typeIs('org.springframework.http.ResponseEntity')] From 042b7a495804644325788e8d174aa2d02622da85 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 16 Sep 2025 14:37:10 +0200 Subject: [PATCH 038/101] PMD: Remove rule as it yields too many FP --- .config/pmd/java/ruleset.xml | 63 ------------------------------------ 1 file changed, 63 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index bb8177f4..a5b76341 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -766,69 +766,6 @@ public class Foo { - - - Creating Comparator instances repeatedly in methods like compareTo or sort calls is inefficient. - - Solution: Initialize the Comparator once as a static final field and reuse. - - 2 - - - - - - - - - { - @Override - public int compareTo(@NotNull Person o) { - return Comparator.comparing(Person::getFirstName) // Bad: Creates new Comparator instance on each invocation - .thenComparing(Person::getLastName) - .thenComparingInt(Person::getAge) - .compare(this, o); - } -} - -public class GoodPerson implements Comparable { - private static final Comparator COMPARE_FIRST_LAST_NAME_AGE = - Comparator.comparing(Person::getFirstName) - .thenComparing(Person::getLastName) - .thenComparingInt(Person::getAge); - - @Override - public int compareTo(@NotNull Person o) { - return COMPARE_FIRST_LAST_NAME_AGE.compare(this, o); // Good: Comparator initialized once as static final field - } -} -]]> - - - Date: Wed, 17 Sep 2025 10:32:54 +0200 Subject: [PATCH 039/101] PMF: Cleanup and format --- .config/pmd/java/ruleset.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index a5b76341..748c826e 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -448,7 +448,7 @@ String good_replaceInnerLineBreakBySpace() { - + + 3 @@ -565,7 +565,7 @@ public enum Fruit { Solution: Usually a pattern is a literal, not dynamic and can be compiled only once. Assign it to a private static field. java.util.Pattern objects are thread-safe so they can be shared among threads. - + 2 From 7bcc1bd25b867131f2190e8e86d41f90aa8ada2a Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 21 Sep 2025 04:13:51 +0000 Subject: [PATCH 040/101] Update dependency org.apache.maven.plugins:maven-javadoc-plugin to v3.12.0 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7380883f..89d4aa76 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -108,7 +108,7 @@ org.apache.maven.plugins maven-javadoc-plugin - 3.11.3 + 3.12.0 attach-javadocs From e0867d36ce22ad168d47ea3c6dd59dfae4db74b4 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 22 Sep 2025 04:19:37 +0000 Subject: [PATCH 041/101] Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.1 --- template-placeholder-demo/pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/template-placeholder-demo/pom.xml b/template-placeholder-demo/pom.xml index 37022223..b6ff1fd9 100644 --- a/template-placeholder-demo/pom.xml +++ b/template-placeholder-demo/pom.xml @@ -44,7 +44,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 ${maven.compiler.release} diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7380883f..f67b5057 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -97,7 +97,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 ${maven.compiler.release} From 184b908f235cf93fade385838d806417c1ee6564 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 22 Sep 2025 04:19:40 +0000 Subject: [PATCH 042/101] Update dependency org.codehaus.mojo:flatten-maven-plugin to v1.7.3 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7380883f..e356a34d 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -147,7 +147,7 @@ org.codehaus.mojo flatten-maven-plugin - 1.7.2 + 1.7.3 ossrh From 0e8aefd14b6e396990ff21fcdd9d0bc0fe7e25b3 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 24 Sep 2025 04:13:23 +0000 Subject: [PATCH 043/101] Update dependency org.sonatype.central:central-publishing-maven-plugin to v0.9.0 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 27a24c8d..4c4214ca 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -193,7 +193,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.8.0 + 0.9.0 true sonatype-central-portal From f08c6622dbeb98cc1db48a845335020e361b2814 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 29 Sep 2025 04:14:48 +0000 Subject: [PATCH 044/101] Update dependency com.puppycrawl.tools:checkstyle to v11.1.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index f824869d..61578c0b 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 11.0.1 + 11.1.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 4c4214ca..3d8cc2cf 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 11.0.1 + 11.1.0 From 6278740ec8418dbe1933b70fbab9c3cf7c3f59e7 Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 29 Sep 2025 13:42:00 +0200 Subject: [PATCH 045/101] Fix broken-links not finding issues on GH CLI v2.79+ Fix https://github.com/xdev-software/base-template/issues/8 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 9493fb8a..436ce503 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -25,7 +25,7 @@ jobs: - name: Find already existing issue id: find-issue run: | - echo "number=$(gh issue list -l 'bug' -l 'automated' -L 1 -S 'in:title \"Link Checker Report\"' -s 'open' --json 'number' --jq '.[].number')" >> $GITHUB_OUTPUT + echo "number=$(gh issue list -l 'bug' -l 'automated' -L 1 -S 'in:title "Link Checker Report"' -s 'open' --json 'number' --jq '.[].number')" >> $GITHUB_OUTPUT env: GH_TOKEN: ${{ github.token }} From 39c4703001cf7da323fb6b809f1ab733284a536d Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 30 Sep 2025 09:52:34 +0200 Subject: [PATCH 046/101] Test compile with Java 25 & Update docs --- .github/workflows/check-build.yml | 2 +- CONTRIBUTING.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 01f08402..e9757649 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -28,7 +28,7 @@ jobs: timeout-minutes: 30 strategy: matrix: - java: [17, 21] + java: [17, 21, 25] distribution: [temurin] steps: - uses: actions/checkout@v5 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index be2a1863..2c7b0250 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -19,7 +19,7 @@ We also encourage you to read the [contribution instructions by GitHub](https:// ### Software Requirements You should have the following things installed: * Git -* Java 21 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/)) +* Java 25 - should be as unmodified as possible (Recommended: [Eclipse Adoptium](https://adoptium.net/temurin/releases/)) * Maven (Note that the [Maven Wrapper](https://maven.apache.org/wrapper/) is shipped with the repo) ### Recommended setup From f71bf683b682ca9d985ee02a13b157676e21cd9f Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 2 Oct 2025 04:10:53 +0000 Subject: [PATCH 047/101] Update peter-evans/create-issue-from-file action to v6 --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 436ce503..a99ae52c 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -37,7 +37,7 @@ jobs: - name: Create Issue From File if: steps.lychee.outputs.exit_code != 0 - uses: peter-evans/create-issue-from-file@e8ef132d6df98ed982188e460ebb3b5d4ef3a9cd # v5 + uses: peter-evans/create-issue-from-file@fca9117c27cdc29c6c4db3b86c48e4115a786710 # v6 with: issue-number: ${{ steps.find-issue.outputs.number }} title: Link Checker Report From 046de3916a42b79a547d1a8281de2bc875e9091c Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 2 Oct 2025 10:47:35 +0200 Subject: [PATCH 048/101] Update PMD scheme location --- .config/pmd/java/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 748c826e..6bf58b33 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -2,7 +2,7 @@ + xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 https://pmd.github.io/ruleset_2_0_0.xsd"> This ruleset checks the code for discouraged programming constructs. From d3806058ec9caf0870392740f549fd59e9b5bf79 Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 7 Oct 2025 14:54:43 +0200 Subject: [PATCH 049/101] Fix typo --- .config/pmd/java/ruleset.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 6bf58b33..4570323d 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -204,7 +204,7 @@ Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. From 843d363ec91d498b7edef5cdb0368ae46c099dca Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 14:31:12 +0200 Subject: [PATCH 050/101] Resync I --- spring-data-eclipse-store-demo/pom.xml | 109 ------------------------- 1 file changed, 109 deletions(-) delete mode 100644 spring-data-eclipse-store-demo/pom.xml diff --git a/spring-data-eclipse-store-demo/pom.xml b/spring-data-eclipse-store-demo/pom.xml deleted file mode 100644 index 92d48b83..00000000 --- a/spring-data-eclipse-store-demo/pom.xml +++ /dev/null @@ -1,109 +0,0 @@ - - - 4.0.0 - - - software.xdev - spring-data-eclipse-store-root - 2.5.4-SNAPSHOT - - - spring-data-eclipse-store-demo - 2.5.4-SNAPSHOT - jar - - - XDEV Software - https://xdev.software - - - - software.xdev.spring.data.eclipse.store.demo.complex.ComplexDemoApplication - - - - - software.xdev - spring-data-eclipse-store - ${project.version} - - - org.eclipse.store - storage-restservice-springboot - - - org.springframework.boot - spring-boot-starter-web - - - - org.apache.logging.log4j - log4j-core - - - org.apache.logging.log4j - log4j-slf4j2-impl - - - org.springframework.boot - spring-boot-autoconfigure - - - - - org.junit.jupiter - junit-jupiter - test - - - org.springframework.boot - spring-boot-starter-test - test - - - - - ${project.artifactId} - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.14.0 - - ${maven.compiler.release} - - -proc:none - - - - - org.springframework.boot - spring-boot-maven-plugin - ${org.springframework.boot.version} - - ${mainClass} - - --add-opens java.base/java.util=ALL-UNNAMED - --add-opens java.base/java.time=ALL-UNNAMED - --add-exports java.base/jdk.internal.misc=ALL-UNNAMED - - - - - org.apache.maven.plugins - maven-surefire-plugin - 3.5.3 - - - --add-opens java.base/java.util=ALL-UNNAMED - --add-opens java.base/java.time=ALL-UNNAMED - --add-exports java.base/jdk.internal.misc=ALL-UNNAMED - - - - - - From 522e0b094cb053c5943909346cae3e73e79bee23 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 14:31:19 +0200 Subject: [PATCH 051/101] Resync II --- .../pom.xml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {template-placeholder-demo => spring-data-eclipse-store-demo}/pom.xml (100%) diff --git a/template-placeholder-demo/pom.xml b/spring-data-eclipse-store-demo/pom.xml similarity index 100% rename from template-placeholder-demo/pom.xml rename to spring-data-eclipse-store-demo/pom.xml From e8f3a14387f1be30e022d26c643c4798454e29a1 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 14:31:58 +0200 Subject: [PATCH 052/101] Resync III --- spring-data-eclipse-store-demo/pom.xml | 94 ++++++++++++++++---------- 1 file changed, 59 insertions(+), 35 deletions(-) diff --git a/spring-data-eclipse-store-demo/pom.xml b/spring-data-eclipse-store-demo/pom.xml index b6ff1fd9..0e9526eb 100644 --- a/spring-data-eclipse-store-demo/pom.xml +++ b/spring-data-eclipse-store-demo/pom.xml @@ -6,12 +6,12 @@ software.xdev - template-placeholder-root - 1.0.0-SNAPSHOT + spring-data-eclipse-store-root + 2.5.4-SNAPSHOT - template-placeholder-demo - 1.0.0-SNAPSHOT + spring-data-eclipse-store-demo + 2.5.4-SNAPSHOT jar @@ -20,21 +20,48 @@ - 17 - ${javaVersion} - - UTF-8 - UTF-8 - - software.xdev.Application + software.xdev.spring.data.eclipse.store.demo.complex.ComplexDemoApplication software.xdev - template-placeholder + spring-data-eclipse-store ${project.version} + + org.eclipse.store + storage-restservice-springboot + + + org.springframework.boot + spring-boot-starter-web + + + + org.apache.logging.log4j + log4j-core + + + org.apache.logging.log4j + log4j-slf4j2-impl + + + org.springframework.boot + spring-boot-autoconfigure + + + + + org.junit.jupiter + junit-jupiter + test + + + org.springframework.boot + spring-boot-starter-test + test + @@ -52,33 +79,30 @@ + + org.springframework.boot + spring-boot-maven-plugin + ${org.springframework.boot.version} + + ${mainClass} + + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens java.base/java.time=ALL-UNNAMED + --add-exports java.base/jdk.internal.misc=ALL-UNNAMED + + + org.apache.maven.plugins - maven-assembly-plugin - 3.7.1 + maven-surefire-plugin + 3.5.3 - - - ${mainClass} - - - true - - - - jar-with-dependencies - - false + + --add-opens java.base/java.util=ALL-UNNAMED + --add-opens java.base/java.time=ALL-UNNAMED + --add-exports java.base/jdk.internal.misc=ALL-UNNAMED + - - - make-assembly - package - - single - - - From 1826aaa98fbf0dc0f7799c23476f2be23a6695c7 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 12:33:26 +0000 Subject: [PATCH 053/101] Update dependency @antora/cli to v3.1.14 --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index a8b88ac2..b160b02a 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,7 +3,7 @@ "@antora/lunr-extension": "^1.0.0-alpha.8" }, "devDependencies": { - "@antora/cli": "3.1.10", + "@antora/cli": "3.1.14", "@antora/site-generator": "3.1.10" } } \ No newline at end of file From 574af3758411e49e555e9d938ec5a5cd29bf2e5b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 12:33:28 +0000 Subject: [PATCH 054/101] Update dependency org.apache.maven.plugins:maven-compiler-plugin to v3.14.1 --- spring-data-eclipse-store-benchmark/pom.xml | 2 +- spring-data-eclipse-store-jpa/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-data-eclipse-store-benchmark/pom.xml b/spring-data-eclipse-store-benchmark/pom.xml index c4fd6e2a..1794065d 100644 --- a/spring-data-eclipse-store-benchmark/pom.xml +++ b/spring-data-eclipse-store-benchmark/pom.xml @@ -56,7 +56,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 ${maven.compiler.release} diff --git a/spring-data-eclipse-store-jpa/pom.xml b/spring-data-eclipse-store-jpa/pom.xml index 9dde82f5..f3d1a8ce 100644 --- a/spring-data-eclipse-store-jpa/pom.xml +++ b/spring-data-eclipse-store-jpa/pom.xml @@ -73,7 +73,7 @@ org.apache.maven.plugins maven-compiler-plugin - 3.14.0 + 3.14.1 ${maven.compiler.release} From f2328aece557e7fdc524fe69904959a517fe07ac Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 12:33:35 +0000 Subject: [PATCH 055/101] Update actions/checkout action to v5 --- .github/workflows/antora-build.yml | 2 +- .github/workflows/check-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index aafa769f..ae0a1176 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -21,7 +21,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 - name: Install Node.js uses: actions/setup-node@v5 diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index c6ff6475..9ea0dfdc 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -160,7 +160,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Install Node.js uses: actions/setup-node@v5 From dbd8ec250745b67dfa7785c787fb6d2dc916ac8b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 12:33:37 +0000 Subject: [PATCH 056/101] Update actions/upload-pages-artifact action to v4 --- .github/workflows/antora-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index aafa769f..429bf7c1 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -38,7 +38,7 @@ jobs: uses: actions/configure-pages@v5 - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: name: site path: docs/site From 163b1365e7abe02795051d336a0a02f3d5e04084 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 12:33:38 +0000 Subject: [PATCH 057/101] Update dependency node to v22 --- .github/workflows/antora-build.yml | 2 +- .github/workflows/check-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index aafa769f..4e70a74d 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -26,7 +26,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v5 with: - node-version: 18 + node-version: 22 - name: Install Antora and the Antora Lunr Extension run: npm i antora @antora/lunr-extension diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index c6ff6475..2b6d52f6 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -165,7 +165,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v5 with: - node-version: 18 + node-version: 22 - name: Install Antora and the Antora Lunr Extension run: npm i antora @antora/lunr-extension From 21f7d587897d6dd60fbd2d9f695e86bf86c23c46 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 16:07:39 +0200 Subject: [PATCH 058/101] Update renovate.json5 --- renovate.json5 | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/renovate.json5 b/renovate.json5 index 485ab8c0..0e5dead6 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -30,6 +30,16 @@ "maven" ], "groupName": "org.eclipse.store-serializer" + }, + { + "description": "Group @antora", + "matchPackagePatterns": [ + "^@antora\/" + ], + "datasources": [ + "npm" + ], + "groupName": "@antora" } ] } From eb83fe815762da9063db06763d53849931ff27a8 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 16:07:49 +0200 Subject: [PATCH 059/101] Revert "Update dependency @antora/cli to v3.1.14" This reverts commit 1826aaa98fbf0dc0f7799c23476f2be23a6695c7. --- docs/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/package.json b/docs/package.json index b160b02a..a8b88ac2 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,7 +3,7 @@ "@antora/lunr-extension": "^1.0.0-alpha.8" }, "devDependencies": { - "@antora/cli": "3.1.14", + "@antora/cli": "3.1.10", "@antora/site-generator": "3.1.10" } } \ No newline at end of file From f2ac41ee43c146753b60d99aa4804c920f8f2939 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 14:09:05 +0000 Subject: [PATCH 060/101] Update @antora to v3.1.14 --- docs/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/package.json b/docs/package.json index a8b88ac2..6c2165df 100644 --- a/docs/package.json +++ b/docs/package.json @@ -3,7 +3,7 @@ "@antora/lunr-extension": "^1.0.0-alpha.8" }, "devDependencies": { - "@antora/cli": "3.1.10", - "@antora/site-generator": "3.1.10" + "@antora/cli": "3.1.14", + "@antora/site-generator": "3.1.14" } } \ No newline at end of file From 42e336e7ddeae3a42b05a668f09e785f11baeb00 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 14:09:08 +0000 Subject: [PATCH 061/101] Update dependency org.apache.maven.plugins:maven-surefire-plugin to v3.5.4 --- spring-data-eclipse-store-demo/pom.xml | 2 +- spring-data-eclipse-store/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/spring-data-eclipse-store-demo/pom.xml b/spring-data-eclipse-store-demo/pom.xml index 0e9526eb..48574eb1 100644 --- a/spring-data-eclipse-store-demo/pom.xml +++ b/spring-data-eclipse-store-demo/pom.xml @@ -95,7 +95,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.3 + 3.5.4 --add-opens java.base/java.util=ALL-UNNAMED diff --git a/spring-data-eclipse-store/pom.xml b/spring-data-eclipse-store/pom.xml index e40d7a99..9b26f429 100644 --- a/spring-data-eclipse-store/pom.xml +++ b/spring-data-eclipse-store/pom.xml @@ -309,7 +309,7 @@ org.apache.maven.plugins maven-surefire-plugin - 3.5.3 + 3.5.4 --add-exports java.base/jdk.internal.misc=ALL-UNNAMED From af7170ec83753335f67fb4afadfd669952ca74ad Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 9 Oct 2025 14:09:12 +0000 Subject: [PATCH 062/101] Update org.springframework.boot.version to v3.5.6 --- pom.xml | 2 +- spring-data-eclipse-store/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index c6c4b002..c532114c 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ UTF-8 - 3.5.3 + 3.5.6 2.1.3 2.1.3 2.1.3 diff --git a/spring-data-eclipse-store/pom.xml b/spring-data-eclipse-store/pom.xml index e40d7a99..91fae0b5 100644 --- a/spring-data-eclipse-store/pom.xml +++ b/spring-data-eclipse-store/pom.xml @@ -51,7 +51,7 @@ UTF-8 - 3.5.3 + 3.5.6 2.1.3 2.1.3 9.0.1.Final From 115b98172e2aa1d0105c57ce7dcd79f34b9e1a71 Mon Sep 17 00:00:00 2001 From: AB Date: Thu, 9 Oct 2025 16:17:36 +0200 Subject: [PATCH 063/101] Fix PMD reported problems --- .../store/repository/query/antlr/HSqlQueryExecutor.java | 4 +++- .../store/repository/query/criteria/CriteriaByExample.java | 7 ++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/antlr/HSqlQueryExecutor.java b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/antlr/HSqlQueryExecutor.java index cff88bb1..94803d3a 100644 --- a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/antlr/HSqlQueryExecutor.java +++ b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/antlr/HSqlQueryExecutor.java @@ -37,6 +37,8 @@ public class HSqlQueryExecutor { + protected static final DateTimeFormatter LOCAL_DATE_REPLACE_DTF = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private final SQLParser parser; private final EntityListProvider entityListProvider; private final Class domainClass; @@ -80,7 +82,7 @@ private String replacePlaceholders(final String sqlValue, final Object[] paramet } if(parameters[i] instanceof final LocalDate localDate) { - value = localDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + value = localDate.format(LOCAL_DATE_REPLACE_DTF); } stringWithReplacedValues = stringWithReplacedValues.replaceAll(placeholder, value); } diff --git a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/criteria/CriteriaByExample.java b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/criteria/CriteriaByExample.java index 15ec9418..1830bbf8 100644 --- a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/criteria/CriteriaByExample.java +++ b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/query/criteria/CriteriaByExample.java @@ -17,10 +17,12 @@ import java.lang.reflect.Field; import java.util.Collection; +import java.util.Collections; import java.util.Locale; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.WeakHashMap; import java.util.function.BiPredicate; import java.util.function.Predicate; import java.util.regex.Pattern; @@ -38,6 +40,7 @@ */ public class CriteriaByExample implements Criteria { + private static final Map REGEX_EXAMPLE_CACHE = Collections.synchronizedMap(new WeakHashMap<>()); private final Predicate predicate; public CriteriaByExample(final Example example) @@ -143,7 +146,9 @@ private boolean createPredicateForStringMatcher( case STARTING -> String::startsWith; case ENDING -> String::endsWith; case CONTAINING -> String::contains; - case REGEX -> (v, example) -> Pattern.compile(example).matcher(v).find(); + case REGEX -> (v, example) -> REGEX_EXAMPLE_CACHE.computeIfAbsent(example, Pattern::compile) + .matcher(v) + .find(); default -> null; }; From 43afe18c3740032f26c42d71679824e0fa485f5a Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 10 Oct 2025 04:14:02 +0000 Subject: [PATCH 064/101] Update dependency com.puppycrawl.tools:checkstyle to v12 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 61578c0b..14c3d10d 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 11.1.0 + 12.0.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 3d8cc2cf..ea07c2f7 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 11.1.0 + 12.0.0 From 042d657901a3455ab272d3e5342616f958e93ce5 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 11 Oct 2025 04:14:27 +0000 Subject: [PATCH 065/101] Update dependency org.apache.maven.plugins:maven-pmd-plugin to v3.28.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 14c3d10d..7236c13b 100644 --- a/pom.xml +++ b/pom.xml @@ -70,7 +70,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.27.0 + 3.28.0 true true diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index ea07c2f7..74cf0eea 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -240,7 +240,7 @@ org.apache.maven.plugins maven-pmd-plugin - 3.27.0 + 3.28.0 true true From d4bea48af9898d69073377a80fe6289ad4a2fc39 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 12 Oct 2025 04:13:47 +0000 Subject: [PATCH 066/101] Update dependency com.puppycrawl.tools:checkstyle to v12.0.1 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 14c3d10d..6c2a1987 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 12.0.0 + 12.0.1 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index ea07c2f7..67b916c8 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 12.0.0 + 12.0.1 From e28c251a2dbf97e5e8273177d05a6f8743c9902c Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 15 Oct 2025 11:20:00 +0200 Subject: [PATCH 067/101] Detect ZIP slip --- .config/pmd/java/ruleset.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 4570323d..c72b66ad 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -316,6 +316,28 @@ + + + ZipEntry name should be sanitized. + Unsanitized names may contain '..' which can result in path traversal ("ZipSlip"). + + You can suppress this warning when you properly sanitized the name. + + 4 + + + + + + + + + Date: Mon, 20 Oct 2025 04:17:59 +0000 Subject: [PATCH 068/101] Update dependency com.puppycrawl.tools:checkstyle to v12.1.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index e03f17f6..8a108a16 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 12.0.1 + 12.1.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index c1146ed7..0bed85e4 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 12.0.1 + 12.1.0 From db9dae96091208bebb9b75e42369696d76f0760e Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 23 Oct 2025 04:14:31 +0000 Subject: [PATCH 069/101] Update shogo82148/actions-create-release digest to 28d99e2 --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 61015663..103c9b10 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,7 +91,7 @@ jobs: - name: Create Release id: create-release - uses: shogo82148/actions-create-release@7b89596097b26731bda0852f1504f813499079ee # v1 + uses: shogo82148/actions-create-release@28d99e2a5b407558d17c15d0384fc0d7fb625b4c # v1 with: tag_name: v${{ steps.version.outputs.release }} release_name: v${{ steps.version.outputs.release }} From a9b4edba598ec48c137c2eb5347cf789a2963713 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 25 Oct 2025 04:14:21 +0000 Subject: [PATCH 070/101] Update actions/upload-artifact action to v5 --- .github/workflows/check-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index e9757649..0e42c299 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -69,7 +69,7 @@ jobs: fi - name: Upload demo files - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: demo-files-java-${{ matrix.java }} path: ${{ env.DEMO_MAVEN_MODULE }}/target/${{ env.DEMO_MAVEN_MODULE }}.jar @@ -152,7 +152,7 @@ jobs: - name: Upload report if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: name: pmd-report if-no-files-found: ignore From dc2951079845c13c070b51b18c44b3b7a88a54b1 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 27 Oct 2025 04:19:53 +0000 Subject: [PATCH 071/101] Update actions/setup-node action to v6 --- .github/workflows/antora-build.yml | 2 +- .github/workflows/check-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index bc1dd6c5..d0313527 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -24,7 +24,7 @@ jobs: uses: actions/checkout@v5 - name: Install Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: 22 diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 5d81e46e..28a15b51 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -163,7 +163,7 @@ jobs: - uses: actions/checkout@v5 - name: Install Node.js - uses: actions/setup-node@v5 + uses: actions/setup-node@v6 with: node-version: 22 From 0f07ec79fe16525053fc2cb7583fe567b10613e0 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Mon, 27 Oct 2025 04:20:45 +0000 Subject: [PATCH 072/101] Update dependency com.puppycrawl.tools:checkstyle to v12.1.1 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8a108a16..cddae724 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 12.1.0 + 12.1.1 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 0bed85e4..7203198a 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 12.1.0 + 12.1.1 From 979f6b6313cb9a19943ba3ea082151778941b149 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Tue, 28 Oct 2025 04:13:43 +0000 Subject: [PATCH 073/101] Update dependency node to v24 --- .github/workflows/antora-build.yml | 2 +- .github/workflows/check-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/antora-build.yml b/.github/workflows/antora-build.yml index bc1dd6c5..299629ed 100644 --- a/.github/workflows/antora-build.yml +++ b/.github/workflows/antora-build.yml @@ -26,7 +26,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v5 with: - node-version: 22 + node-version: 24 - name: Install Antora and the Antora Lunr Extension run: npm i antora @antora/lunr-extension diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 5d81e46e..022dc335 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -165,7 +165,7 @@ jobs: - name: Install Node.js uses: actions/setup-node@v5 with: - node-version: 22 + node-version: 24 - name: Install Antora and the Antora Lunr Extension run: npm i antora @antora/lunr-extension From 1ebe4703a7b3f80152545d7704cfffd16297e77e Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 29 Oct 2025 08:38:46 +0100 Subject: [PATCH 074/101] Add `UnnecessaryWarningSuppression` https://pmd.github.io/pmd/pmd_rules_java_bestpractices.html#unnecessarywarningsuppression Detects unused suppressions --- .config/pmd/java/ruleset.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index c72b66ad..37b4f637 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -25,6 +25,7 @@ + From 80835757139b9630a43fe1eb0d65b857e333517b Mon Sep 17 00:00:00 2001 From: AB Date: Wed, 29 Oct 2025 13:28:01 +0100 Subject: [PATCH 075/101] Formatting --- .config/pmd/java/ruleset.xml | 179 ++++++++++++++++++----------------- 1 file changed, 91 insertions(+), 88 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 37b4f637..341cb3ae 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -10,6 +10,9 @@ + + + @@ -208,14 +211,14 @@ message="StringBuilder/StringBuffer should not be used" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. - - Solution: - * Do not use `StringBuffer` because it's thread-safe and usually this is not needed - * If `StringBuilder` is only used in a simple method (like `toString`) and is effectively inlined: Use a simpler string concatenation (`"a" + x + "b"`). This will be optimized by the Java compiler internally. - * In all other cases: - * Check what is happening and if it makes ANY sense! If for example a CSV file is built here consider using a proper library instead! - * Abstract the Strings into a DTO, join them together using a collection (or `StringJoiner`) or use Java's Streaming API instead +Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. + +Solution: +* Do not use `StringBuffer` because it's thread-safe and usually this is not needed +* If `StringBuilder` is only used in a simple method (like `toString`) and is effectively inlined: Use a simpler string concatenation (`"a" + x + "b"`). This will be optimized by the Java compiler internally. +* In all other cases: + * Check what is happening and if it makes ANY sense! If for example a CSV file is built here consider using a proper library instead! + * Abstract the Strings into a DTO, join them together using a collection (or `StringJoiner`) or use Java's Streaming API instead 3 @@ -234,11 +237,11 @@ message="Setters of java.lang.System should not be called unless really needed" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Calling setters of java.lang.System usually indicates bad design and likely causes unexpected behavior. - For example, it may break when multiple Threads are setting the value. - It may also overwrite user defined options or properties. +Calling setters of java.lang.System usually indicates bad design and likely causes unexpected behavior. +For example, it may break when multiple Threads are setting the value. +It may also overwrite user defined options or properties. - Try to pass the value only to the place where it's really needed and use it there accordingly. +Try to pass the value only to the place where it's really needed and use it there accordingly. 3 @@ -257,10 +260,10 @@ message="Avoid @PostConstruct" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Using a `@PostConstruct` method is usually only done when field injection is used and initialization needs to be performed after that. +Using a `@PostConstruct` method is usually only done when field injection is used and initialization needs to be performed after that. - It's better to do this directly in the constructor with constructor injection, so that all logic will be encapsulated there. - This also makes using the bean in environments where JavaEE is not present - for example in tests - a lot easier, as forgetting to call the `@PostConstruct` method is no longer possible. +It's better to do this directly in the constructor with constructor injection, so that all logic will be encapsulated there. +This also makes using the bean in environments where JavaEE is not present - for example in tests - a lot easier, as forgetting to call the `@PostConstruct` method is no longer possible. 3 @@ -279,9 +282,9 @@ message="Avoid @PreDestroy" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - `@PreDestroy` should be replaced by implementing `AutoCloseable` and overwriting the `close` method instead. +`@PreDestroy` should be replaced by implementing `AutoCloseable` and overwriting the `close` method instead. - This also makes using the bean in environments where JavaEE is not present - for example in tests - a lot easier, as forgetting to call the `@PreDestroy` method is no much more difficult. +This also makes using the bean in environments where JavaEE is not present - for example in tests - a lot easier, as forgetting to call the `@PreDestroy` method is no much more difficult. 3 @@ -300,10 +303,10 @@ message="Avoid unmanaged threads" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Trying to manually manage threads usually gets quickly out of control and may result in various problems like uncontrollable spawning of threads. - Threads can also not be cancelled properly. +Trying to manually manage threads usually gets quickly out of control and may result in various problems like uncontrollable spawning of threads. +Threads can also not be cancelled properly. - Use managed Thread services like `ExecutorService` and `CompletableFuture` instead. +Use managed Thread services like `ExecutorService` and `CompletableFuture` instead. 3 @@ -322,10 +325,10 @@ message="ZipEntry name should be sanitized" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - ZipEntry name should be sanitized. - Unsanitized names may contain '..' which can result in path traversal ("ZipSlip"). +ZipEntry name should be sanitized. +Unsanitized names may contain '..' which can result in path traversal ("ZipSlip"). - You can suppress this warning when you properly sanitized the name. +You can suppress this warning when you properly sanitized the name. 4 @@ -344,12 +347,12 @@ message="Using Java Object (De-)Serialization is unsafe and has led to too many security vulnerabilities" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Nearly every known usage of (Java) Object Deserialization has resulted in [a security vulnerability](https://cloud.google.com/blog/topics/threat-intelligence/hunting-deserialization-exploits?hl=en). - Vulnerabilities are so common that there are [dedicated projects for exploit payload generation](https://github.com/frohoff/ysoserial). +Nearly every known usage of (Java) Object Deserialization has resulted in [a security vulnerability](https://cloud.google.com/blog/topics/threat-intelligence/hunting-deserialization-exploits?hl=en). +Vulnerabilities are so common that there are [dedicated projects for exploit payload generation](https://github.com/frohoff/ysoserial). - Java Object Serialization may also fail to deserialize when the underlying classes are changed. +Java Object Serialization may also fail to deserialize when the underlying classes are changed. - Use proven data interchange formats like JSON instead. +Use proven data interchange formats like JSON instead. 2 @@ -371,8 +374,8 @@ message="Unescaped native HTML is unsafe and will result in XSS vulnerabilities" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule" > - Do not use native HTML! Use Vaadin layouts and components to create required structure. - If you are 100% sure that you escaped the value properly and you have no better options you can suppress this. +Do not use native HTML! Use Vaadin layouts and components to create required structure. +If you are 100% sure that you escaped the value properly and you have no better options you can suppress this. 2 @@ -396,9 +399,9 @@ message="Avoid using DecimalFormat or ChoiceFormat as field since it is thread-unsafe" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - java.text.NumberFormat: DecimalFormat and ChoiceFormat are thread-unsafe. +java.text.NumberFormat: DecimalFormat and ChoiceFormat are thread-unsafe. - Solution: Create a new local one when needed in a method. +Solution: Create a new local one when needed in a method. 1 @@ -428,11 +431,11 @@ public class Foo { message="Detected possible resource expensive implicit regex pattern compilation" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - A regular expression is compiled implicitly on every invocation. - Problem: This can be (CPU) expensive, depending on the length of the regular expression. +A regular expression is compiled implicitly on every invocation. +Problem: This can be (CPU) expensive, depending on the length of the regular expression. - Solution: Compile the regex pattern only once and assign it to a private static final Pattern field. - java.util.Pattern objects are thread-safe, so they can be shared among threads. +Solution: Compile the regex pattern only once and assign it to a private static final Pattern field. +java.util.Pattern objects are thread-safe, so they can be shared among threads. 2 @@ -477,11 +480,11 @@ String good_replaceInnerLineBreakBySpace() { message="Default buffer capacity is used which usually needs expensive expansions" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - The default constructor of ByteArrayOutputStream creates a 32 bytes initial capacity and for StringWriter 16 chars. - Such a small buffer as capacity usually needs several expensive expansions. +The default constructor of ByteArrayOutputStream creates a 32 bytes initial capacity and for StringWriter 16 chars. +Such a small buffer as capacity usually needs several expensive expansions. - Solution: Explicitly declared the buffer size so that an expansion is not needed in most cases. - Typically much larger than 32, e.g. 4096. +Solution: Explicitly declared the buffer size so that an expansion is not needed in most cases. +Typically much larger than 32, e.g. 4096. 2 @@ -517,12 +520,12 @@ class Good { message="Avoid re-streaming enum values to find a value by a field" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - The time to find element is O(n); n = the number of enum values. - This identical processing is executed for every call. - Considered problematic when `n > 3`. +The time to find element is O(n); n = the number of enum values. +This identical processing is executed for every call. +Considered problematic when `n > 3`. - Solution: Use a static field-to-enum-value Map. Access time is O(1), provided the hashCode is well-defined. - Implement a fromString method to provide the reverse conversion by using the map. +Solution: Use a static field-to-enum-value Map. Access time is O(1), provided the hashCode is well-defined. +Implement a fromString method to provide the reverse conversion by using the map. 3 @@ -583,11 +586,11 @@ public enum Fruit { message="Pattern.compile is used in a method. Compiling a regex pattern can be expensive, make it a static final field." class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - A regular expression is compiled on every invocation. - Problem: this can be expensive, depending on the length of the regular expression. +A regular expression is compiled on every invocation. +Problem: this can be expensive, depending on the length of the regular expression. - Solution: Usually a pattern is a literal, not dynamic and can be compiled only once. Assign it to a private static field. - java.util.Pattern objects are thread-safe so they can be shared among threads. +Solution: Usually a pattern is a literal, not dynamic and can be compiled only once. Assign it to a private static field. +java.util.Pattern objects are thread-safe so they can be shared among threads. 2 @@ -629,10 +632,10 @@ public static void good() { message="Avoid expensive recreation of DateTimeFormatter" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Recreating a DateTimeFormatter is relatively expensive. +Recreating a DateTimeFormatter is relatively expensive. - Solution: Java 8+ java.time.DateTimeFormatter is thread-safe and can be shared among threads. - Create the formatter from a pattern only once, to initialize a static final field. +Solution: Java 8+ java.time.DateTimeFormatter is thread-safe and can be shared among threads. +Create the formatter from a pattern only once, to initialize a static final field. 2 @@ -659,11 +662,11 @@ or pmd-java:matchesSig('java.time.format.DateTimeFormatterBuilder#toFormatter(_) message="Avoid expensive recreation of security providers" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Creating a security provider is expensive because of loading of algorithms and other classes. - Additionally, it uses synchronized which leads to lock contention when used with multiple threads. +Creating a security provider is expensive because of loading of algorithms and other classes. +Additionally, it uses synchronized which leads to lock contention when used with multiple threads. - Solution: This only needs to happen once in the JVM lifetime, because once loaded the provider is typically available from the Security class. - Create the security provider only once: Only in case when it's not yet available from the Security class. +Solution: This only needs to happen once in the JVM lifetime, because once loaded the provider is typically available from the Security class. +Create the security provider only once: Only in case when it's not yet available from the Security class. 2 @@ -710,9 +713,9 @@ class Foo { message="Expensive Reflection is used" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Reflection is relatively expensive. +Reflection is relatively expensive. - Solution: Avoid reflection. Use the non-reflective, explicit way like generation by IDE. +Solution: Avoid reflection. Use the non-reflective, explicit way like generation by IDE. 2 @@ -753,11 +756,11 @@ class Good { message="SimpleDateFormat is used. Since it is thread-unsafe, it needs expensive recreation." class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - java.util.SimpleDateFormat is thread-unsafe. - The usual solution is to create a new one when needed in a method. - Creating SimpleDateFormat is relatively expensive. +java.util.SimpleDateFormat is thread-unsafe. +The usual solution is to create a new one when needed in a method. +Creating SimpleDateFormat is relatively expensive. - Solution: Use java.time.DateTimeFormatter. These classes are immutable, thus thread-safe and can be made static. +Solution: Use java.time.DateTimeFormatter. These classes are immutable, thus thread-safe and can be made static. 2 @@ -794,15 +797,15 @@ public class Foo { message="Avoid the ForkJoinPool::commonPool used in parallelStream for blocking calls" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Blocking calls, for instance remote calls, may exhaust the common pool for some time thereby blocking all other use of the common pool. - In addition, nested use of the common pool can lead to deadlock. Do not use the common pool for blocking calls. - The parallelStream() call uses the common pool. +Blocking calls, for instance remote calls, may exhaust the common pool for some time thereby blocking all other use of the common pool. +In addition, nested use of the common pool can lead to deadlock. Do not use the common pool for blocking calls. +The parallelStream() call uses the common pool. - Solution: Use a dedicated thread pool with enough threads to get proper parallelism. - The number of threads in the common pool is equal to the number of CPUs and meant to utilize all of them. - It assumes CPU-intensive non-blocking processing of in-memory data. +Solution: Use a dedicated thread pool with enough threads to get proper parallelism. +The number of threads in the common pool is equal to the number of CPUs and meant to utilize all of them. +It assumes CPU-intensive non-blocking processing of in-memory data. - See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) +See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) 2 @@ -862,15 +865,15 @@ public class Foo { message="Avoid using the common thread pool, use a separate pool" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - CompletableFuture.supplyAsync/runAsync is typically used for remote calls. - By default it uses the common pool. - The number of threads in the common pool is equal to the number of CPU's, which is suitable for in-memory processing. - For I/O, however, this number is typically not suitable because most time is spent waiting for the response and not in CPU. - The common pool must not be used for blocking calls. +CompletableFuture.supplyAsync/runAsync is typically used for remote calls. +By default it uses the common pool. +The number of threads in the common pool is equal to the number of CPU's, which is suitable for in-memory processing. +For I/O, however, this number is typically not suitable because most time is spent waiting for the response and not in CPU. +The common pool must not be used for blocking calls. - Solution: A separate, properly sized pool of threads (an Executor) should be used for the async calls. +Solution: A separate, properly sized pool of threads (an Executor) should be used for the async calls. - See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) +See also: [_Be Aware of ForkJoinPool#commonPool()_](https://dzone.com/articles/be-aware-of-forkjoinpoolcommonpool) 2 @@ -908,9 +911,9 @@ public class Foo { message="Avoid CompletionService.take, use poll" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - `take()` stalls indefinitely in case of hanging threads and consumes a thread. +`take()` stalls indefinitely in case of hanging threads and consumes a thread. - Solution: use `poll()` with a timeout value and handle the timeout. +Solution: use `poll()` with a timeout value and handle the timeout. 2 @@ -944,9 +947,9 @@ public static void collectAllCollectionReplyFromThreads(CompletionService
  • - Stalls indefinitely in case of stalled Callable(s) and consumes threads. +Stalls indefinitely in case of stalled Callable(s) and consumes threads. - Solution: Provide a timeout to the invokeAll/invokeAny method and handle the timeout. +Solution: Provide a timeout to the invokeAll/invokeAny method and handle the timeout. 2 @@ -979,9 +982,9 @@ class Foo { message="Avoid future.get without timeout" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Stalls indefinitely in case of hanging threads and consumes a thread. +Stalls indefinitely in case of hanging threads and consumes a thread. - Solution: Provide a timeout value and handle the timeout. +Solution: Provide a timeout value and handle the timeout. 2 @@ -1012,10 +1015,10 @@ public static String good(CompletableFuture complFuture) throws Exceptio message="An HttpClient is created and combined with request-response" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Apache HttpClient with its connection pool and timeouts should be setup once and then used for many requests. - It is quite expensive to create and can only provide the benefits of pooling when reused in all requests for that connection. +Apache HttpClient with its connection pool and timeouts should be setup once and then used for many requests. +It is quite expensive to create and can only provide the benefits of pooling when reused in all requests for that connection. - Solution: Create/build HttpClient with proper connection pooling and timeouts once, and then use it for requests. +Solution: Create/build HttpClient with proper connection pooling and timeouts once, and then use it for requests. 3 @@ -1054,11 +1057,11 @@ class Foo { message="A Gson object is created for each method call, which is expensive." class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> - Problem: Gson creation is relatively expensive. A JMH benchmark shows a 24x improvement reusing one instance. +Problem: Gson creation is relatively expensive. A JMH benchmark shows a 24x improvement reusing one instance. - Solution: Since Gson objects are thread-safe after creation, they can be shared between threads. - So reuse created instances from a static field. - Pay attention to use thread-safe (custom) adapters and serializers. +Solution: Since Gson objects are thread-safe after creation, they can be shared between threads. +So reuse created instances from a static field. +Pay attention to use thread-safe (custom) adapters and serializers. 3 From f0350dd55446e78ff917b5641070e6db9d379d3f Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 30 Oct 2025 04:11:25 +0000 Subject: [PATCH 076/101] Update lycheeverse/lychee-action digest to a8c4c7c --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index a99ae52c..0e96b205 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -18,7 +18,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@885c65f3dc543b57c898c8099f4e08c8afd178a2 # v2 + uses: lycheeverse/lychee-action@a8c4c7cb88f0c7386610c35eb25108e448569cb0 # v2 with: fail: false # Don't fail on broken links, create an issue instead From ff8d45c8e80894ff862fc64e001a93ba11d68a26 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 30 Oct 2025 04:15:46 +0000 Subject: [PATCH 077/101] Update lycheeverse/lychee-action digest to a8c4c7c --- .github/workflows/broken-links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 3a1009c4..7f35a979 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -19,7 +19,7 @@ jobs: - name: Link Checker id: lychee - uses: lycheeverse/lychee-action@885c65f3dc543b57c898c8099f4e08c8afd178a2 # v2 + uses: lycheeverse/lychee-action@a8c4c7cb88f0c7386610c35eb25108e448569cb0 # v2 with: fail: false # Don't fail on broken links, create an issue instead From f5923efaaa98f06a394b539ee7d795d941973e86 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 1 Nov 2025 04:16:41 +0000 Subject: [PATCH 078/101] Update net.sourceforge.pmd to v7.18.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index cddae724..046a7424 100644 --- a/pom.xml +++ b/pom.xml @@ -83,12 +83,12 @@ net.sourceforge.pmd pmd-core - 7.17.0 + 7.18.0 net.sourceforge.pmd pmd-java - 7.17.0 + 7.18.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 7203198a..13bcb16c 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -253,12 +253,12 @@ net.sourceforge.pmd pmd-core - 7.17.0 + 7.18.0 net.sourceforge.pmd pmd-java - 7.17.0 + 7.18.0 From 4ebf84d79a7204b8641896071191c7e05ae42fe1 Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 3 Nov 2025 08:46:37 +0100 Subject: [PATCH 079/101] Updated to PMD 7.18 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://github.com/pmd/pmd/releases/tag/pmd_releases%2F7.18.0 Reasoning: * Newly included/Changed * `IdenticalConditionalBranches` → self explaining * `LabeledStatement` → are confusing to use and I barely ever see them * Not included * `UnusedLabel` → Not used because `LabeledStatement` already handles these * `ConfusingTernary` → Not helpful in most situations * `AvoidCatchingGenericException` → Might be ok for maybe Throwable or Error (but we sometimes also have to catch those), however not catching Exceptions and RuntimeExceptions is an extremely bad practice --- .config/pmd/java/ruleset.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 341cb3ae..33320293 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -17,6 +17,7 @@ + @@ -149,6 +150,7 @@ + From 53e5c3113b97eb080131c1809d79b6b2d3365c60 Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 3 Nov 2025 15:14:58 +0100 Subject: [PATCH 080/101] Don't allow TODO comments Fixes https://github.com/xdev-software/java-setup-template/issues/1 --- .config/checkstyle/checkstyle.xml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.config/checkstyle/checkstyle.xml b/.config/checkstyle/checkstyle.xml index 43b52907..ffbc2a93 100644 --- a/.config/checkstyle/checkstyle.xml +++ b/.config/checkstyle/checkstyle.xml @@ -122,9 +122,7 @@ - - - + From 4342c35dc276aecb146aa2877b1062c4a16ba3c0 Mon Sep 17 00:00:00 2001 From: AB Date: Fri, 7 Nov 2025 14:12:35 +0100 Subject: [PATCH 081/101] Small descriptive improvements Fixes https://github.com/xdev-software/java-setup-template/issues/2 --- .config/pmd/java/ruleset.xml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml index 33320293..c057d1aa 100644 --- a/.config/pmd/java/ruleset.xml +++ b/.config/pmd/java/ruleset.xml @@ -213,11 +213,11 @@ message="StringBuilder/StringBuffer should not be used" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> -Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or may be replaced by a simpler string concatenation. +Usually all cases where `StringBuilder` (or the outdated `StringBuffer`) is used are either due to confusing (legacy) logic or in situations where it may be easily replaced by a simpler string concatenation. Solution: * Do not use `StringBuffer` because it's thread-safe and usually this is not needed -* If `StringBuilder` is only used in a simple method (like `toString`) and is effectively inlined: Use a simpler string concatenation (`"a" + x + "b"`). This will be optimized by the Java compiler internally. +* If `StringBuilder` is only used in a simple method (like `toString`) and is effectively inlined: Use a simpler string concatenation (`"a" + x + "b"`). This will be [optimized by the Java compiler internally](https://docs.oracle.com/javase/specs/jls/se25/html/jls-15.html#jls-15.18.1). * In all other cases: * Check what is happening and if it makes ANY sense! If for example a CSV file is built here consider using a proper library instead! * Abstract the Strings into a DTO, join them together using a collection (or `StringJoiner`) or use Java's Streaming API instead @@ -239,8 +239,8 @@ Solution: message="Setters of java.lang.System should not be called unless really needed" class="net.sourceforge.pmd.lang.rule.xpath.XPathRule"> -Calling setters of java.lang.System usually indicates bad design and likely causes unexpected behavior. -For example, it may break when multiple Threads are setting the value. +Calling setters of `java.lang.System` usually indicates bad design and likely causes unexpected behavior. +For example, it may break when multiple Threads are working with the same value. It may also overwrite user defined options or properties. Try to pass the value only to the place where it's really needed and use it there accordingly. @@ -352,7 +352,8 @@ You can suppress this warning when you properly sanitized the name. Nearly every known usage of (Java) Object Deserialization has resulted in [a security vulnerability](https://cloud.google.com/blog/topics/threat-intelligence/hunting-deserialization-exploits?hl=en). Vulnerabilities are so common that there are [dedicated projects for exploit payload generation](https://github.com/frohoff/ysoserial). -Java Object Serialization may also fail to deserialize when the underlying classes are changed. +Java Object Serialization may also fail to deserialize properly when the underlying classes are changed. +This can result in unexpected crashes when outdated data is deserialized. Use proven data interchange formats like JSON instead. @@ -374,7 +375,8 @@ Use proven data interchange formats like JSON instead. + class="net.sourceforge.pmd.lang.rule.xpath.XPathRule" + externalInfoUrl="https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML"> Do not use native HTML! Use Vaadin layouts and components to create required structure. If you are 100% sure that you escaped the value properly and you have no better options you can suppress this. From 053d6040fb9b814e5929e61408b7934e692210bb Mon Sep 17 00:00:00 2001 From: AB Date: Mon, 10 Nov 2025 09:47:22 +0100 Subject: [PATCH 082/101] Add initial PMD X plugin configuration See https://github.com/xdev-software/intellij-plugin-pmd --- .gitignore | 1 + .idea/pmd-x.xml | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 .idea/pmd-x.xml diff --git a/.gitignore b/.gitignore index ea952953..d35b413f 100644 --- a/.gitignore +++ b/.gitignore @@ -34,6 +34,7 @@ hs_err_pid* !.idea/saveactions_settings.xml !.idea/checkstyle-idea.xml !.idea/externalDependencies.xml +!.idea/pmd-x.xml !.idea/PMDPlugin.xml !.idea/inspectionProfiles/ diff --git a/.idea/pmd-x.xml b/.idea/pmd-x.xml new file mode 100644 index 00000000..260e454b --- /dev/null +++ b/.idea/pmd-x.xml @@ -0,0 +1,27 @@ + + + + false + true + true + SUPPORTED_ONLY_WITH_TESTS + + + + \ No newline at end of file From 7b3d463b138e82bd1ac574de670fc3c90a01ce0e Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 12 Nov 2025 04:16:23 +0000 Subject: [PATCH 083/101] Update dependency com.puppycrawl.tools:checkstyle to v12.1.2 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 046a7424..8eef4999 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 12.1.1 + 12.1.2 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 13bcb16c..d6a7deda 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 12.1.1 + 12.1.2 From 6ff31257538b8fc040f950df9d7525ce992f1434 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 21 Nov 2025 04:11:32 +0000 Subject: [PATCH 084/101] Update actions/checkout action to v6 --- .github/workflows/broken-links.yml | 2 +- .github/workflows/sync-labels.yml | 2 +- .github/workflows/update-from-template.yml | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 0e96b205..e6c33857 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -12,7 +12,7 @@ jobs: link-checker: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: mv .github/.lycheeignore .lycheeignore diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index 3faaf1e3..c43365ef 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -15,7 +15,7 @@ jobs: labels: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: sparse-checkout: .github/labels.yml diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index ebd8220e..7cff5596 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -35,7 +35,7 @@ jobs: update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }} create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 @@ -181,7 +181,7 @@ jobs: if: needs.update.outputs.create_update_branch_merged_pr == 1 runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 From 25f9289239221e0e8f35a121c86ecb41feceab95 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 21 Nov 2025 04:15:13 +0000 Subject: [PATCH 085/101] Update actions/checkout action to v6 --- .github/workflows/broken-links.yml | 2 +- .github/workflows/check-build.yml | 6 +++--- .github/workflows/release.yml | 10 +++++----- .github/workflows/sync-labels.yml | 2 +- .github/workflows/test-deploy.yml | 2 +- .github/workflows/update-from-template.yml | 4 ++-- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/broken-links.yml b/.github/workflows/broken-links.yml index 7f35a979..2675c8b6 100644 --- a/.github/workflows/broken-links.yml +++ b/.github/workflows/broken-links.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 15 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - run: mv .github/.lycheeignore .lycheeignore diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 0e42c299..38497bb1 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -31,7 +31,7 @@ jobs: java: [17, 21, 25] distribution: [temurin] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up JDK uses: actions/setup-java@v5 @@ -84,7 +84,7 @@ jobs: java: [17] distribution: [temurin] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up JDK uses: actions/setup-java@v5 @@ -120,7 +120,7 @@ jobs: java: [17] distribution: [temurin] steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up JDK uses: actions/setup-java@v5 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 103c9b10..e0265f26 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 30 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up JDK uses: actions/setup-java@v5 @@ -63,7 +63,7 @@ jobs: outputs: upload_url: ${{ steps.create-release.outputs.upload_url }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Configure Git run: | @@ -115,7 +115,7 @@ jobs: needs: [prepare-release] timeout-minutes: 60 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Init Git and pull run: | @@ -163,7 +163,7 @@ jobs: needs: [prepare-release] timeout-minutes: 15 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Init Git and pull run: | @@ -202,7 +202,7 @@ jobs: needs: [publish-maven] timeout-minutes: 10 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Init Git and pull run: | diff --git a/.github/workflows/sync-labels.yml b/.github/workflows/sync-labels.yml index f6c50a17..6471ce7c 100644 --- a/.github/workflows/sync-labels.yml +++ b/.github/workflows/sync-labels.yml @@ -16,7 +16,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 10 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: sparse-checkout: .github/labels.yml diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml index b75a246e..2d13d77a 100644 --- a/.github/workflows/test-deploy.yml +++ b/.github/workflows/test-deploy.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - name: Set up JDK uses: actions/setup-java@v5 diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml index 1088171f..f447710f 100644 --- a/.github/workflows/update-from-template.yml +++ b/.github/workflows/update-from-template.yml @@ -36,7 +36,7 @@ jobs: update_branch_merged_commit: ${{ steps.manage-branches.outputs.update_branch_merged_commit }} create_update_branch_merged_pr: ${{ steps.manage-branches.outputs.create_update_branch_merged_pr }} steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 @@ -183,7 +183,7 @@ jobs: runs-on: ubuntu-latest timeout-minutes: 60 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: # Required because otherwise there are always changes detected when executing diff/rev-list fetch-depth: 0 From edf902f001242e39b915775d8d7d6f28a571e9ef Mon Sep 17 00:00:00 2001 From: AB Date: Tue, 2 Dec 2025 13:14:14 +0100 Subject: [PATCH 086/101] Add more common numbers --- .config/checkstyle/checkstyle.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.config/checkstyle/checkstyle.xml b/.config/checkstyle/checkstyle.xml index ffbc2a93..b5a41357 100644 --- a/.config/checkstyle/checkstyle.xml +++ b/.config/checkstyle/checkstyle.xml @@ -91,7 +91,7 @@ - + From c8756b9d201ead32afbe5e4e031505da7c2b9c31 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 3 Dec 2025 04:18:05 +0000 Subject: [PATCH 087/101] Update dependency com.puppycrawl.tools:checkstyle to v12.2.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 8eef4999..b13f778c 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 12.1.2 + 12.2.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index d6a7deda..6ca6b297 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 12.1.2 + 12.2.0 From df641394583403a6ce83949d31ae5b46586d5c60 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 3 Dec 2025 04:18:06 +0000 Subject: [PATCH 088/101] Update dependency org.apache.maven.plugins:maven-assembly-plugin to v3.8.0 --- template-placeholder-demo/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder-demo/pom.xml b/template-placeholder-demo/pom.xml index b6ff1fd9..05b947bc 100644 --- a/template-placeholder-demo/pom.xml +++ b/template-placeholder-demo/pom.xml @@ -55,7 +55,7 @@ org.apache.maven.plugins maven-assembly-plugin - 3.7.1 + 3.8.0 From 1f1983a64fb1e0a054802e79bc194c603702937b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 3 Dec 2025 04:18:07 +0000 Subject: [PATCH 089/101] Update dependency org.apache.maven.plugins:maven-source-plugin to v3.4.0 --- template-placeholder/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index d6a7deda..b8c21a4d 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -126,7 +126,7 @@ org.apache.maven.plugins maven-source-plugin - 3.3.1 + 3.4.0 attach-sources From 3fcab4287f04880ecb7f89980d5da2c06134cff6 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 3 Dec 2025 04:18:08 +0000 Subject: [PATCH 090/101] Update net.sourceforge.pmd to v7.19.0 --- pom.xml | 4 ++-- template-placeholder/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 8eef4999..14c61ce7 100644 --- a/pom.xml +++ b/pom.xml @@ -83,12 +83,12 @@ net.sourceforge.pmd pmd-core - 7.18.0 + 7.19.0 net.sourceforge.pmd pmd-java - 7.18.0 + 7.19.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index d6a7deda..4f5d9ecc 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -253,12 +253,12 @@ net.sourceforge.pmd pmd-core - 7.18.0 + 7.19.0 net.sourceforge.pmd pmd-java - 7.18.0 + 7.19.0 From b7be80a0ffaca6fdb3d3d68bebf98c8c85fd9947 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 12 Dec 2025 04:23:26 +0000 Subject: [PATCH 091/101] Update actions/cache action to v5 --- .github/workflows/check-build.yml | 10 +++++----- .github/workflows/release.yml | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 38497bb1..e558a919 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -40,7 +40,7 @@ jobs: java-version: ${{ matrix.java }} - name: Cache Maven - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-mvn-build-${{ hashFiles('**/pom.xml') }} @@ -93,7 +93,7 @@ jobs: java-version: ${{ matrix.java }} - name: Cache Maven - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-mvn-checkstyle-${{ hashFiles('**/pom.xml') }} @@ -101,7 +101,7 @@ jobs: ${{ runner.os }}-mvn-checkstyle- - name: CheckStyle Cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: '**/target/checkstyle-cachefile' key: ${{ runner.os }}-checkstyle-${{ hashFiles('**/pom.xml') }} @@ -129,7 +129,7 @@ jobs: java-version: ${{ matrix.java }} - name: Cache Maven - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-mvn-pmd-${{ hashFiles('**/pom.xml') }} @@ -137,7 +137,7 @@ jobs: ${{ runner.os }}-mvn-pmd- - name: PMD Cache - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: '**/target/pmd/pmd.cache' key: ${{ runner.os }}-pmd-${{ hashFiles('**/pom.xml') }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e0265f26..63c583f7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -28,7 +28,7 @@ jobs: # Try to reuse existing cache from check-build - name: Try restore Maven Cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-mvn-build-${{ hashFiles('**/pom.xml') }} @@ -179,7 +179,7 @@ jobs: # Try to reuse existing cache from check-build - name: Try restore Maven Cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: ~/.m2/repository key: ${{ runner.os }}-mvn-build-${{ hashFiles('**/pom.xml') }} From e8b3af3ec268496ac1d909949cf9eb205165a284 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 13 Dec 2025 04:18:02 +0000 Subject: [PATCH 092/101] Update dependency org.apache.maven.plugins:maven-source-plugin to v3.4.0 --- spring-data-eclipse-store/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-data-eclipse-store/pom.xml b/spring-data-eclipse-store/pom.xml index 87c20c47..52785052 100644 --- a/spring-data-eclipse-store/pom.xml +++ b/spring-data-eclipse-store/pom.xml @@ -322,7 +322,7 @@ org.apache.maven.plugins maven-source-plugin - 3.3.1 + 3.4.0 attach-sources From 94faaa817fcf0586ef2f77ad66fdc582e3cbc5b3 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sat, 13 Dec 2025 04:18:54 +0000 Subject: [PATCH 093/101] Update actions/upload-artifact action to v6 --- .github/workflows/check-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 38497bb1..5b1ddcde 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -69,7 +69,7 @@ jobs: fi - name: Upload demo files - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: demo-files-java-${{ matrix.java }} path: ${{ env.DEMO_MAVEN_MODULE }}/target/${{ env.DEMO_MAVEN_MODULE }}.jar @@ -152,7 +152,7 @@ jobs: - name: Upload report if: always() - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: pmd-report if-no-files-found: ignore From 9d0fc14dce5143c432b7674dfdc94b577df1d61c Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Sun, 14 Dec 2025 04:26:08 +0000 Subject: [PATCH 094/101] Update dependency com.puppycrawl.tools:checkstyle to v12.3.0 --- pom.xml | 2 +- template-placeholder/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 4ddf0d83..0a33102a 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ com.puppycrawl.tools checkstyle - 12.2.0 + 12.3.0 diff --git a/template-placeholder/pom.xml b/template-placeholder/pom.xml index 57263e36..32974642 100644 --- a/template-placeholder/pom.xml +++ b/template-placeholder/pom.xml @@ -215,7 +215,7 @@ com.puppycrawl.tools checkstyle - 12.2.0 + 12.3.0 From 8aeb3fe5588657c0e8d45ae12e6ffee4ad4a760b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 19 Dec 2025 04:25:06 +0000 Subject: [PATCH 095/101] Update org.springframework.boot.version to v3.5.9 --- pom.xml | 2 +- spring-data-eclipse-store/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 7bcce1c5..b1b8fed3 100644 --- a/pom.xml +++ b/pom.xml @@ -22,7 +22,7 @@ UTF-8 - 3.5.6 + 3.5.9 2.1.3 2.1.3 2.1.3 diff --git a/spring-data-eclipse-store/pom.xml b/spring-data-eclipse-store/pom.xml index 87c20c47..2db52252 100644 --- a/spring-data-eclipse-store/pom.xml +++ b/spring-data-eclipse-store/pom.xml @@ -51,7 +51,7 @@ UTF-8 - 3.5.6 + 3.5.9 2.1.3 2.1.3 9.0.1.Final From 8a80c01965e96e643c34493beb6f94326dfac5f6 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Wed, 31 Dec 2025 04:28:08 +0000 Subject: [PATCH 096/101] Update net.sourceforge.pmd to v7.20.0 --- pom.xml | 4 ++-- spring-data-eclipse-store/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index 7bcce1c5..a54ef1fb 100644 --- a/pom.xml +++ b/pom.xml @@ -151,12 +151,12 @@ net.sourceforge.pmd pmd-core - 7.17.0 + 7.20.0 net.sourceforge.pmd pmd-java - 7.17.0 + 7.20.0 diff --git a/spring-data-eclipse-store/pom.xml b/spring-data-eclipse-store/pom.xml index 87c20c47..a08834e5 100644 --- a/spring-data-eclipse-store/pom.xml +++ b/spring-data-eclipse-store/pom.xml @@ -454,12 +454,12 @@ net.sourceforge.pmd pmd-core - 7.17.0 + 7.20.0 net.sourceforge.pmd pmd-java - 7.17.0 + 7.20.0 From e8830673b3f99ac16b4d537eaa8a1a95b8fc3bc2 Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Thu, 1 Jan 2026 04:31:44 +0000 Subject: [PATCH 097/101] Update shogo82148/actions-create-release digest to 559c27c --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 103c9b10..ccf02b31 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,7 +91,7 @@ jobs: - name: Create Release id: create-release - uses: shogo82148/actions-create-release@28d99e2a5b407558d17c15d0384fc0d7fb625b4c # v1 + uses: shogo82148/actions-create-release@559c27ce7eb834825e2b55927c64f6d1bd1db716 # v1 with: tag_name: v${{ steps.version.outputs.release }} release_name: v${{ steps.version.outputs.release }} From 9b1b68b85163d7b3d81d817063e78b473ac4296b Mon Sep 17 00:00:00 2001 From: XDEV Renovate Bot Date: Fri, 2 Jan 2026 04:28:06 +0000 Subject: [PATCH 098/101] Update dependency maven to v3.9.12 --- .mvn/wrapper/maven-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index c0bcafe9..8dea6c22 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,3 +1,3 @@ wrapperVersion=3.3.4 distributionType=only-script -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.12/apache-maven-3.9.12-bin.zip From 698a946ab12f261bd96925d5fd46394e1dbd6659 Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 7 Jan 2026 12:49:31 +0100 Subject: [PATCH 099/101] Fix checkstyles --- .../data/eclipse/store/demo/lazy/LazyDemoApplication.java | 3 +++ .../spring/data/eclipse/store/repository/root/RootDataV2.java | 2 ++ .../repository/support/copier/version/VersionManager.java | 1 - .../store/integration/isolated/tests/query/hsql/HsqlTest.java | 1 + .../isolated/tests/query/hsql/MyEntityRepository.java | 1 + .../repository/query/EclipseStoreQueryCreatorAndOrTest.java | 1 + 6 files changed, 8 insertions(+), 1 deletion(-) diff --git a/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java b/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java index 7fcd5ec8..4bc2f5b8 100644 --- a/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java +++ b/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java @@ -26,6 +26,7 @@ @SpringBootApplication public class LazyDemoApplication implements CommandLineRunner { + @SuppressWarnings("CPD-START") private static final Logger LOG = LoggerFactory.getLogger(LazyDemoApplication.class); private final CustomerRepository customerRepository; private final PetRepository petRepository; @@ -64,4 +65,6 @@ public void run(final String... args) LOG.info("Pets found with findAll():"); this.petRepository.findAll().forEach(p -> LOG.info(p.toString())); } + + @SuppressWarnings("CPD-END") } diff --git a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java index fe5d4c4f..d9da942e 100644 --- a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java +++ b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java @@ -28,6 +28,7 @@ @SuppressWarnings({"java:S119", "unchecked"}) public class RootDataV2 { + @SuppressWarnings("CPD-START") private final Map> entityLists; public RootDataV2() @@ -83,6 +84,7 @@ public void setLastId(final Class entityClass, final Object lastId) this.entityLists.get(this.getEntityName(entityClass)).setLastId(lastId); } + @SuppressWarnings("CPD-END") public Object getObjectsToStoreAfterNewLastId(final Class entityClass) { return this.entityLists.get(this.getEntityName(entityClass)); diff --git a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionManager.java b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionManager.java index 1845e72a..dffbedb2 100644 --- a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionManager.java +++ b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/support/copier/version/VersionManager.java @@ -59,7 +59,6 @@ public void incrementVersion(final T entity) * Checks if the two entities are valid for merge. If they have the same version, everything is ok. But if the * workingCopy-version is null or different from the original-version, an Exception is thrown. */ - @SuppressWarnings("PMD.AvoidRethrowingException") public void ensureSameVersion(final T workingCopy, final T original) { if(this.versionField.isPresent() && original != null) diff --git a/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/HsqlTest.java b/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/HsqlTest.java index 620afbc7..0dfda3b9 100644 --- a/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/HsqlTest.java +++ b/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/HsqlTest.java @@ -35,6 +35,7 @@ import software.xdev.spring.data.eclipse.store.integration.isolated.IsolatedTestAnnotations; +@SuppressWarnings("checkstyle:TodoComment") @IsolatedTestAnnotations @ContextConfiguration(classes = {HsqlTestConfiguration.class}) class HsqlTest diff --git a/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/MyEntityRepository.java b/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/MyEntityRepository.java index 2e9b7ae6..07b6af92 100644 --- a/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/MyEntityRepository.java +++ b/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/integration/isolated/tests/query/hsql/MyEntityRepository.java @@ -22,6 +22,7 @@ import software.xdev.spring.data.eclipse.store.repository.Query; +@SuppressWarnings("checkstyle:TodoComment") public interface MyEntityRepository extends ListCrudRepository { // Simple Select diff --git a/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/repository/query/EclipseStoreQueryCreatorAndOrTest.java b/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/repository/query/EclipseStoreQueryCreatorAndOrTest.java index 2d55db8c..b2eaf020 100644 --- a/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/repository/query/EclipseStoreQueryCreatorAndOrTest.java +++ b/spring-data-eclipse-store/src/test/java/software/xdev/spring/data/eclipse/store/repository/query/EclipseStoreQueryCreatorAndOrTest.java @@ -31,6 +31,7 @@ import software.xdev.spring.data.eclipse.store.helper.TestData; +@SuppressWarnings("checkstyle:TodoComment") class EclipseStoreQueryCreatorAndOrTest { static Stream generateDataWithCountOfFirstNameAndLastName() From 96080deafcf627e1071b6f527cdead71c87e6b5b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 7 Jan 2026 13:20:29 +0100 Subject: [PATCH 100/101] Fix checkstyle --- .../data/eclipse/store/demo/lazy/LazyDemoApplication.java | 5 ++--- .../data/eclipse/store/repository/root/RootDataV2.java | 4 ++-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java b/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java index 4bc2f5b8..30579b87 100644 --- a/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java +++ b/spring-data-eclipse-store-demo/src/main/java/software/xdev/spring/data/eclipse/store/demo/lazy/LazyDemoApplication.java @@ -26,7 +26,7 @@ @SpringBootApplication public class LazyDemoApplication implements CommandLineRunner { - @SuppressWarnings("CPD-START") + // CPD-OFF private static final Logger LOG = LoggerFactory.getLogger(LazyDemoApplication.class); private final CustomerRepository customerRepository; private final PetRepository petRepository; @@ -65,6 +65,5 @@ public void run(final String... args) LOG.info("Pets found with findAll():"); this.petRepository.findAll().forEach(p -> LOG.info(p.toString())); } - - @SuppressWarnings("CPD-END") + // CPD-ON } diff --git a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java index d9da942e..1148f52b 100644 --- a/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java +++ b/spring-data-eclipse-store/src/main/java/software/xdev/spring/data/eclipse/store/repository/root/RootDataV2.java @@ -28,7 +28,7 @@ @SuppressWarnings({"java:S119", "unchecked"}) public class RootDataV2 { - @SuppressWarnings("CPD-START") + // CPD-OFF private final Map> entityLists; public RootDataV2() @@ -84,9 +84,9 @@ public void setLastId(final Class entityClass, final Object lastId) this.entityLists.get(this.getEntityName(entityClass)).setLastId(lastId); } - @SuppressWarnings("CPD-END") public Object getObjectsToStoreAfterNewLastId(final Class entityClass) { return this.entityLists.get(this.getEntityName(entityClass)); } + // CPD-ON } From 1493de25a1045060ba7355af9790839ef64b156b Mon Sep 17 00:00:00 2001 From: Johannes Rabauer Date: Wed, 7 Jan 2026 13:26:32 +0100 Subject: [PATCH 101/101] Update version --- README.md | 3 ++- docs/antora.yml | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index dfedc700..e48c30f9 100644 --- a/README.md +++ b/README.md @@ -60,7 +60,8 @@ instructions** are in the documentation](https://xdev-software.github.io/spring- | ``2.4.1`` | ``17+`` | ``3.4.0`` | ``2.1.0`` | | ``2.5.0`` | ``17+`` | ``3.4.1`` | ``2.1.0`` | | ``2.5.1-2.5.2`` | ``17+`` | ``3.4.2`` | ``2.1.1`` | -| ``>= 2.5.3`` | ``17+`` | ``3.5.3`` | ``2.1.3`` | +| ``2.5.3`` | ``17+`` | ``3.5.3`` | ``2.1.3`` | +| ``>= 2.5.4`` | ``17+`` | ``3.5.9`` | ``2.1.3`` | ## Demo diff --git a/docs/antora.yml b/docs/antora.yml index 781a0082..75f6c219 100644 --- a/docs/antora.yml +++ b/docs/antora.yml @@ -1,14 +1,14 @@ name: ROOT title: Spring-Data-Eclipse-Store version: master -display_version: '2.5.3' +display_version: '2.5.4' start_page: index.adoc nav: - modules/ROOT/nav.adoc asciidoc: attributes: product-name: 'Spring-Data-Eclipse-Store' - display-version: '2.5.3' - maven-version: '2.5.3' + display-version: '2.5.4' + maven-version: '2.5.4' page-editable: false page-out-of-support: false