diff --git a/.config/pmd/java/ruleset.xml b/.config/pmd/java/ruleset.xml
index d8daabf..aed3c83 100644
--- a/.config/pmd/java/ruleset.xml
+++ b/.config/pmd/java/ruleset.xml
@@ -218,6 +218,71 @@
+
+
+ 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.
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ `@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.
+
+ 3
+
+
+
+
+
+
+
+
+
+
+
+ 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.
+
+ 3
+
+
+
+
+
+
+
+
+
> $GITHUB_OUTPUT
env:
GH_TOKEN: ${{ github.token }}
-
+
- name: Close issue if everything is fine
if: steps.lychee.outputs.exit_code == 0 && steps.find-issue.outputs.number != ''
run: gh issue close -r 'not planned' ${{ steps.find-issue.outputs.number }}
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 31c53ca..a68c375 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -26,22 +26,27 @@ jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 30
-
strategy:
matrix:
java: [17, 21]
distribution: [temurin]
-
steps:
- uses: actions/checkout@v5
-
+
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
- cache: 'maven'
-
+
+ - name: Cache Maven
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-mvn-build-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-mvn-build-
+
- name: Cache Vaadin prod bundles
uses: actions/cache@v4
with:
@@ -50,10 +55,10 @@ jobs:
key: ${{ runner.os }}-vaadin-prod-bundles-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-vaadin-prod-bundles-
-
+
- name: Build with Maven
- run: ./mvnw -B clean package -Pproduction
-
+ run: ./mvnw -B clean package
+
- name: Check for uncommited changes
run: |
if [[ "$(git status --porcelain)" != "" ]]; then
@@ -83,21 +88,34 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }}
timeout-minutes: 15
-
strategy:
matrix:
java: [17]
distribution: [temurin]
-
steps:
- uses: actions/checkout@v5
-
+
- name: Set up JDK
uses: actions/setup-java@v5
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
- cache: 'maven'
+
+ - name: Cache Maven
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-mvn-checkstyle-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-mvn-checkstyle-
+
+ - name: CheckStyle Cache
+ uses: actions/cache@v4
+ with:
+ path: '**/target/checkstyle-cachefile'
+ key: ${{ runner.os }}-checkstyle-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-checkstyle-
- name: Run Checkstyle
run: ./mvnw -B checkstyle:check -P checkstyle -T2C
@@ -106,12 +124,10 @@ jobs:
runs-on: ubuntu-latest
if: ${{ github.event_name != 'pull_request' || !startsWith(github.head_ref, 'renovate/') }}
timeout-minutes: 15
-
strategy:
matrix:
java: [17]
distribution: [temurin]
-
steps:
- uses: actions/checkout@v5
@@ -120,7 +136,22 @@ jobs:
with:
distribution: ${{ matrix.distribution }}
java-version: ${{ matrix.java }}
- cache: 'maven'
+
+ - name: Cache Maven
+ uses: actions/cache@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-mvn-pmd-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-mvn-pmd-
+
+ - name: PMD Cache
+ uses: actions/cache@v4
+ with:
+ path: '**/target/pmd/pmd.cache'
+ key: ${{ runner.os }}-pmd-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-pmd-
- name: Run PMD
run: ./mvnw -B test pmd:aggregate-pmd-no-fork pmd:check -P pmd -DskipTests -T2C
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 65fd862..503de42 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -11,20 +11,30 @@ permissions:
contents: write
pull-requests: write
+# DO NOT RESTORE CACHE for critical release steps to prevent a (extremely unlikely) scenario
+# where a supply chain attack could be achieved due to poisoned cache
jobs:
check-code:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
-
+
- name: Set up JDK
uses: actions/setup-java@v5
with:
java-version: '17'
distribution: 'temurin'
- cache: 'maven'
-
+
+ # Try to reuse existing cache from check-build
+ - name: Try restore Maven Cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-mvn-build-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-mvn-build-
+
- name: Build with Maven
run: ./mvnw -B clean package -Pproduction -T2C
@@ -54,15 +64,15 @@ jobs:
upload_url: ${{ steps.create-release.outputs.upload_url }}
steps:
- uses: actions/checkout@v5
-
+
- name: Configure Git
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
-
+
- name: Un-SNAP
run: ./mvnw -B versions:set -DremoveSnapshot -DprocessAllModules -DgenerateBackupPoms=false
-
+
- name: Get version
id: version
run: |
@@ -70,7 +80,7 @@ jobs:
echo "release=$version" >> $GITHUB_OUTPUT
echo "releasenumber=${version//[!0-9]/}" >> $GITHUB_OUTPUT
working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
-
+
- name: Commit and Push
run: |
git add -A
@@ -78,7 +88,7 @@ jobs:
git push origin
git tag v${{ steps.version.outputs.release }}
git push origin --tags
-
+
- name: Create Release
id: create-release
uses: shogo82148/actions-create-release@4661dc54f7b4b564074e9fbf73884d960de569a3 # v1
@@ -109,7 +119,7 @@ jobs:
timeout-minutes: 60
steps:
- uses: actions/checkout@v5
-
+
- name: Init Git and pull
run: |
git config --global user.email "actions@github.com"
@@ -125,7 +135,7 @@ jobs:
server-password: PACKAGES_CENTRAL_TOKEN
gpg-passphrase: MAVEN_GPG_PASSPHRASE
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once
-
+
- name: Publish to GitHub Packages Central
run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central
working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
@@ -157,7 +167,7 @@ jobs:
timeout-minutes: 15
steps:
- uses: actions/checkout@v5
-
+
- name: Init Git and pull
run: |
git config --global user.email "actions@github.com"
@@ -169,7 +179,15 @@ jobs:
with:
java-version: '17'
distribution: 'temurin'
- cache: 'maven'
+
+ # Try to reuse existing cache from check-build
+ - name: Try restore Maven Cache
+ uses: actions/cache/restore@v4
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-mvn-build-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-mvn-build-
- name: Build site
run: ../mvnw -B compile site -DskipTests -T2C
@@ -188,7 +206,7 @@ jobs:
timeout-minutes: 10
steps:
- uses: actions/checkout@v5
-
+
- name: Init Git and pull
run: |
git config --global user.email "actions@github.com"
@@ -203,7 +221,7 @@ jobs:
git add -A
git commit -m "Preparing for next development iteration"
git push origin
-
+
- name: pull-request
env:
GH_TOKEN: ${{ github.token }}
diff --git a/.github/workflows/test-deploy.yml b/.github/workflows/test-deploy.yml
index cfd79b4..b75a246 100644
--- a/.github/workflows/test-deploy.yml
+++ b/.github/workflows/test-deploy.yml
@@ -22,14 +22,14 @@ jobs:
server-password: PACKAGES_CENTRAL_TOKEN
gpg-passphrase: MAVEN_GPG_PASSPHRASE
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Only import once
-
+
- name: Publish to GitHub Packages Central
run: ../mvnw -B deploy -P publish -DskipTests -DaltDeploymentRepository=github-central::https://maven.pkg.github.com/xdev-software/central
working-directory: ${{ env.PRIMARY_MAVEN_MODULE }}
env:
PACKAGES_CENTRAL_TOKEN: ${{ secrets.PACKAGES_CENTRAL_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
-
+
- name: Set up JDK
uses: actions/setup-java@v5
with: # running setup-java again overwrites the settings.xml
diff --git a/.github/workflows/update-from-template.yml b/.github/workflows/update-from-template.yml
index 28bc32c..86f8b89 100644
--- a/.github/workflows/update-from-template.yml
+++ b/.github/workflows/update-from-template.yml
@@ -43,7 +43,7 @@ jobs:
# If no PAT is used the following error occurs on a push:
# refusing to allow a GitHub App to create or update workflow `.github/workflows/xxx.yml` without `workflows` permission
token: ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }}
-
+
- name: Init Git
run: |
git config --global user.email "111048771+xdev-gh-bot@users.noreply.github.com"
@@ -190,7 +190,7 @@ jobs:
# If no PAT is used the following error occurs on a push:
# refusing to allow a GitHub App to create or update workflow `.github/workflows/xxx.yml` without `workflows` permission
token: ${{ secrets.UPDATE_FROM_TEMPLATE_PAT }}
-
+
- name: Init Git
run: |
git config --global user.email "111048771+xdev-gh-bot@users.noreply.github.com"
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
index 19681fa..21e0aff 100644
--- a/.idea/codeStyles/Project.xml
+++ b/.idea/codeStyles/Project.xml
@@ -96,4 +96,4 @@
-
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 7592fce..a7d9335 100644
--- a/pom.xml
+++ b/pom.xml
@@ -45,7 +45,7 @@
com.puppycrawl.tools
checkstyle
- 11.0.0
+ 11.0.1
@@ -72,6 +72,7 @@
maven-pmd-plugin
3.27.0
+ true
true
true
diff --git a/vaadin-chartjs-wrapper/pom.xml b/vaadin-chartjs-wrapper/pom.xml
index 0db814a..00d0ff1 100644
--- a/vaadin-chartjs-wrapper/pom.xml
+++ b/vaadin-chartjs-wrapper/pom.xml
@@ -261,7 +261,7 @@
com.puppycrawl.tools
checkstyle
- 11.0.0
+ 11.0.1
@@ -288,6 +288,7 @@
maven-pmd-plugin
3.27.0
+ true
true
true