From dd92845898bf2637530dfbb670c93d372af4d331 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 27 Jan 2026 15:13:49 +0100
Subject: [PATCH 001/116] chore: bump github/codeql-action from 4.31.10 to
4.32.0 (#2369)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.31.10 to 4.32.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/cdefb33c0f6224e58673d9004f47f7cb3e328b89...b20883b0cd1f46c72ae0ba6d1090936928f9fa30)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: 4.32.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 774bd2745..29c98c0e7 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -52,6 +52,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@cdefb33c0f6224e58673d9004f47f7cb3e328b89 # v3.29.5
+ uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v3.29.5
with:
sarif_file: results.sarif
From ae1ac47f67c827780289ed661d695c51f4d4b94c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 27 Jan 2026 15:14:09 +0100
Subject: [PATCH 002/116] chore: bump actions/checkout from 6.0.1 to 6.0.2
(#2365)
Bumps [actions/checkout](https://github.com/actions/checkout) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/8e8c483db84b4bee98b60c0593521ed34d9990e8...de0fac2e4500dabe0009e67214ff5f5447ce83dd)
---
updated-dependencies:
- dependency-name: actions/checkout
dependency-version: 6.0.2
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/build-docs.yml | 2 +-
.github/workflows/check-build.yml | 4 ++--
.github/workflows/check-e2e.yml | 4 ++--
.github/workflows/check-pmd.yml | 2 +-
.github/workflows/check-spotbugs.yml | 2 +-
.github/workflows/release.yml | 6 +++---
.github/workflows/security-dependencies-check.yml | 2 +-
.github/workflows/security-scorecard.yml | 2 +-
8 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index a94ace711..fbe7ec659 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -32,7 +32,7 @@ jobs:
environment: Docs
steps:
- name: Checkout Repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
fetch-depth: 0
- name: Build
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 31a286318..b3773944c 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -77,7 +77,7 @@ jobs:
steps:
- id: checkout
name: Checkout repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e
with:
@@ -94,7 +94,7 @@ jobs:
steps:
- id: checkout
name: Checkout repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Get changed files
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index 378d48a60..27b8fd95a 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -57,7 +57,7 @@ jobs:
- 25
steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup java
uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
with:
@@ -88,7 +88,7 @@ jobs:
- 25
steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup java
uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
with:
diff --git a/.github/workflows/check-pmd.yml b/.github/workflows/check-pmd.yml
index 7e7dce429..3955d2072 100644
--- a/.github/workflows/check-pmd.yml
+++ b/.github/workflows/check-pmd.yml
@@ -29,7 +29,7 @@ jobs:
id-token: write
steps:
- name: Checkout Repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
with:
diff --git a/.github/workflows/check-spotbugs.yml b/.github/workflows/check-spotbugs.yml
index c5c8197f9..09ed1c224 100644
--- a/.github/workflows/check-spotbugs.yml
+++ b/.github/workflows/check-spotbugs.yml
@@ -41,7 +41,7 @@ jobs:
codecheck:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
with:
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 630b91321..7b52d88de 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -103,7 +103,7 @@ jobs:
steps:
- id: checkout
name: Checkout repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- id: version
name: version
uses: ./.github/actions/version
@@ -224,7 +224,7 @@ jobs:
steps:
- id: checkout
name: Checkout repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
ref: ${{ env.RELEASE_COMMIT }}
- id: download_source
@@ -272,7 +272,7 @@ jobs:
steps:
- id: checkout
name: Checkout repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
# Checkout PR branch to make sure we build the version-bumped docs
ref: ci-${{ github.run_id }}
diff --git a/.github/workflows/security-dependencies-check.yml b/.github/workflows/security-dependencies-check.yml
index 6729fd304..bbf53db8a 100644
--- a/.github/workflows/security-dependencies-check.yml
+++ b/.github/workflows/security-dependencies-check.yml
@@ -24,7 +24,7 @@ jobs:
pull-requests: write
steps:
- name: Checkout Repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Verify Contents
uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
with:
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 29c98c0e7..019de1435 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -35,7 +35,7 @@ jobs:
id-token: write
steps:
- name: Checkout Repository
- uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
+ uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run Analysis
From c387dd7e28318fbcb719f7e0c46dd9f0a00330bd Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 27 Jan 2026 15:14:26 +0100
Subject: [PATCH 003/116] chore: bump actions/setup-java from 5.1.0 to 5.2.0
(#2363)
Bumps [actions/setup-java](https://github.com/actions/setup-java) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/f2beeb24e141e01a676f977032f5a29d81c9e27e...be666c2fcd27ec809703dec50e508c2fdc7f6654)
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-version: 5.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/check-build.yml | 2 +-
.github/workflows/check-e2e.yml | 4 ++--
.github/workflows/check-pmd.yml | 2 +-
.github/workflows/check-spotbugs.yml | 2 +-
.github/workflows/release.yml | 6 +++---
5 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index b3773944c..06566d17a 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -79,7 +79,7 @@ jobs:
name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654
with:
distribution: corretto
java-version: ${{ matrix.java }}
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index 27b8fd95a..f18a1438b 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -59,7 +59,7 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'corretto'
java-version: ${{ matrix.java }}
@@ -90,7 +90,7 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'corretto'
java-version: ${{ matrix.java }}
diff --git a/.github/workflows/check-pmd.yml b/.github/workflows/check-pmd.yml
index 3955d2072..78b872744 100644
--- a/.github/workflows/check-pmd.yml
+++ b/.github/workflows/check-pmd.yml
@@ -31,7 +31,7 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
java-version: 21
distribution: corretto
diff --git a/.github/workflows/check-spotbugs.yml b/.github/workflows/check-spotbugs.yml
index 09ed1c224..4e5fbcea3 100644
--- a/.github/workflows/check-spotbugs.yml
+++ b/.github/workflows/check-spotbugs.yml
@@ -43,7 +43,7 @@ jobs:
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Setup Java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e # v5.1.0
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
with:
distribution: 'corretto'
java-version: 21
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7b52d88de..b71237ae3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -137,7 +137,7 @@ jobs:
with:
name: source
- name: Setup Java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654
with:
distribution: corretto
java-version: 21
@@ -172,7 +172,7 @@ jobs:
with:
name: source
- name: Setup Java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654
with:
distribution: corretto
java-version: ${{ matrix.java }}
@@ -195,7 +195,7 @@ jobs:
with:
name: source
- name: Setup Java
- uses: actions/setup-java@f2beeb24e141e01a676f977032f5a29d81c9e27e
+ uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654
with:
distribution: corretto
java-version: 21
From 8c1f59b57dcb0cad62471bd2d67f9223ab9e8f42 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 27 Jan 2026 15:14:47 +0100
Subject: [PATCH 004/116] chore: bump release-drafter/release-drafter from
6.1.1 to 6.2.0 (#2362)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6.1.1 to 6.2.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/267d2e0268deae5d44f3ba5029dd4d6e85f9d52d...6db134d15f3909ccc9eefd369f02bd1e9cffdf97)
---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
dependency-version: 6.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index 46f6db489..71416342e 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -22,6 +22,6 @@ jobs:
id-token: write
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@267d2e0268deae5d44f3ba5029dd4d6e85f9d52d
+ uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
From 61fd80a6c5dab1d0ffd3cb163b0e120ae643d1fa Mon Sep 17 00:00:00 2001
From: Philipp Page
Date: Thu, 29 Jan 2026 12:46:23 +0000
Subject: [PATCH 005/116] chore(ci): harden GitHub Actions workflow permissions
(#2370)
---
.github/workflows/build-docs.yml | 6 ++++--
.github/workflows/check-pmd.yml | 8 +++-----
.github/workflows/release-drafter.yml | 7 ++++---
.github/workflows/release.yml | 20 +++++++++++--------
.../workflows/security-dependencies-check.yml | 7 +++----
.github/workflows/security-scorecard.yml | 7 ++++---
.../demo/kafka/protobuf/ProtobufProduct.java | 4 ++--
.../protobuf/ProtobufProductOrBuilder.java | 2 +-
.../protobuf/ProtobufProductOuterClass.java | 4 ++--
9 files changed, 35 insertions(+), 30 deletions(-)
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index fbe7ec659..deadf289a 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -23,12 +23,14 @@ on:
name: Build Latest Docs
run-name: Build Latest Docs - ${{ inputs.version }}
+permissions: {}
+
jobs:
docs:
runs-on: ubuntu-latest
permissions:
- contents: read
- id-token: write
+ contents: read # checkout repository
+ id-token: write # OIDC for AWS credentials
environment: Docs
steps:
- name: Checkout Repository
diff --git a/.github/workflows/check-pmd.yml b/.github/workflows/check-pmd.yml
index 78b872744..cc6c53766 100644
--- a/.github/workflows/check-pmd.yml
+++ b/.github/workflows/check-pmd.yml
@@ -18,15 +18,13 @@ on:
name: PMD
run-name: PMD - ${{ github.event_name }}
-permissions:
- contents: read
+permissions: {}
jobs:
pmd_analyse:
runs-on: ubuntu-latest
permissions:
- contents: write
- id-token: write
+ contents: read # checkout repository
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -39,4 +37,4 @@ jobs:
- uses: pmd/pmd-github-action@d9c1f3c5940cbf5923f1354e83fa858b4496ebaa # v2.0.0
with:
rulesets: '.github/pmd-ruleset.xml'
- token: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
+ token: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index 71416342e..9ef7426f9 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -14,14 +14,15 @@ on:
name: Release Drafter
run-name: Release Drafter
+permissions: {}
+
jobs:
update_release:
runs-on: ubuntu-latest
permissions:
- contents: write
- id-token: write
+ contents: write # required for creating draft releases
steps:
- name: Relase Drafter
uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97
env:
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
\ No newline at end of file
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b71237ae3..e1a35a4ac 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -55,8 +55,7 @@ on:
name: Release
run-name: Release – ${{ inputs.version }}
-permissions:
- contents: read
+permissions: {}
env:
RELEASE_COMMIT: ${{ github.sha }}
@@ -98,6 +97,8 @@ jobs:
runs-on: ubuntu-latest
needs:
- setup
+ permissions:
+ contents: read # checkout repository
outputs:
source_hash: ${{ steps.upload_source.outputs.artifact-digest }}
steps:
@@ -128,8 +129,7 @@ jobs:
- version_seal
if: ${{ inputs.skip_checks == false }}
permissions:
- contents: write
- id-token: write
+ contents: read # checkout and run tests
steps:
- id: download_source
name: Download artifacts
@@ -162,6 +162,8 @@ jobs:
- quality
- version_seal
if: ${{ always() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
+ permissions:
+ contents: read # download artifacts
strategy:
matrix:
java: ${{ fromJson(needs.setup.outputs.build_matrix) }}
@@ -187,6 +189,8 @@ jobs:
if: ${{ github.repository == 'aws-powertools/powertools-lambda-java' && inputs.skip_publish == false && always() && !contains(needs.*.result, 'failure') && !contains(needs.*.result, 'cancelled') }}
needs:
- build
+ permissions:
+ contents: read # download artifacts
environment: Release
steps:
- id: download_source
@@ -219,8 +223,8 @@ jobs:
- build
- publish
permissions:
- pull-requests: write
- contents: write
+ contents: write # create tag and branch
+ pull-requests: write # create PR
steps:
- id: checkout
name: Checkout repository
@@ -266,8 +270,8 @@ jobs:
needs:
- create_pr
permissions:
- contents: read
- id-token: write
+ contents: read # checkout repository
+ id-token: write # OIDC for AWS credentials
environment: Docs
steps:
- id: checkout
diff --git a/.github/workflows/security-dependencies-check.yml b/.github/workflows/security-dependencies-check.yml
index bbf53db8a..31f7491a2 100644
--- a/.github/workflows/security-dependencies-check.yml
+++ b/.github/workflows/security-dependencies-check.yml
@@ -13,15 +13,14 @@ on:
name: Verify Dependencies
run-name: Verify Dependencies – ${{ github.event_name }}
-permissions:
- contents: read
+permissions: {}
jobs:
verify:
runs-on: ubuntu-latest
permissions:
- contents: read
- pull-requests: write
+ contents: read # checkout repository and read dependency snapshots
+ pull-requests: write # post review comments
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 019de1435..e98c97662 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -23,7 +23,7 @@ on:
name: OpenSSF Scorecard
run-name: OpenSSF Scorecard
-permissions: read-all
+permissions: {}
jobs:
analysis:
@@ -31,8 +31,9 @@ jobs:
runs-on: ubuntu-latest
environment: Security
permissions:
- security-events: write
- id-token: write
+ contents: read # checkout repository
+ security-events: write # upload SARIF results
+ id-token: write # OIDC authentication
steps:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java
index 2bf5db844..196c0fa52 100644
--- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java
+++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: ProtobufProduct.proto
-// Protobuf Java Version: 4.33.1
+// Protobuf Java Version: 4.33.2
package org.demo.kafka.protobuf;
@@ -19,7 +19,7 @@ public final class ProtobufProduct extends
com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
/* major= */ 4,
/* minor= */ 33,
- /* patch= */ 1,
+ /* patch= */ 2,
/* suffix= */ "",
"ProtobufProduct");
}
diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java
index caf17ad50..714a2c110 100644
--- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java
+++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: ProtobufProduct.proto
-// Protobuf Java Version: 4.33.1
+// Protobuf Java Version: 4.33.2
package org.demo.kafka.protobuf;
diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java
index ce3214777..abefa922f 100644
--- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java
+++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: ProtobufProduct.proto
-// Protobuf Java Version: 4.33.1
+// Protobuf Java Version: 4.33.2
package org.demo.kafka.protobuf;
@@ -13,7 +13,7 @@ private ProtobufProductOuterClass() {}
com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
/* major= */ 4,
/* minor= */ 33,
- /* patch= */ 1,
+ /* patch= */ 2,
/* suffix= */ "",
"ProtobufProductOuterClass");
}
From fc6ce9f673116f63a94c7ab7e18e36c5a0172821 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Feb 2026 14:13:08 +0100
Subject: [PATCH 006/116] chore: bump github/codeql-action from 4.32.0 to
4.32.3 (#2387)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.0 to 4.32.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b20883b0cd1f46c72ae0ba6d1090936928f9fa30...9e907b5e64f6b83e7804b09294d44122997950d6)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: 4.32.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index e98c97662..5b3d91efc 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@b20883b0cd1f46c72ae0ba6d1090936928f9fa30 # v3.29.5
+ uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v3.29.5
with:
sarif_file: results.sarif
From 6f6c219f53ebd843b0f26b54aea4fa5dba7027af Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Feb 2026 14:13:25 +0100
Subject: [PATCH 007/116] chore: bump tj-actions/changed-files from 47.0.1 to
47.0.4 (#2388)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 47.0.1 to 47.0.4.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/e0021407031f5be11a464abee9a0776171c79891...7dee1b0c1557f278e5c7dc244927139d78c0e22a)
---
updated-dependencies:
- dependency-name: tj-actions/changed-files
dependency-version: 47.0.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 06566d17a..e2c1e5053 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -99,7 +99,7 @@ jobs:
fetch-depth: 0
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@e0021407031f5be11a464abee9a0776171c79891 # v47.0.1
+ uses: tj-actions/changed-files@7dee1b0c1557f278e5c7dc244927139d78c0e22a # v47.0.4
with:
files: |
powertools-*/**
From 11233c8eb4aaceb7abf599b8786bb08088d0d1a1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Feb 2026 14:13:44 +0100
Subject: [PATCH 008/116] chore: bump org.apache.avro:avro (#2386)
Bumps org.apache.avro:avro from 1.12.0 to 1.12.1.
---
updated-dependencies:
- dependency-name: org.apache.avro:avro
dependency-version: 1.12.1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-kafka/tools/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/powertools-examples-kafka/tools/pom.xml b/examples/powertools-examples-kafka/tools/pom.xml
index e6f2654d1..7fb12f136 100644
--- a/examples/powertools-examples-kafka/tools/pom.xml
+++ b/examples/powertools-examples-kafka/tools/pom.xml
@@ -11,7 +11,7 @@
11
11
- 1.12.0
+ 1.12.1
4.31.0
4.0.0
From 31b4677e7a76430ba7cfc88ef5407ae766cb2455 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Feb 2026 14:14:04 +0100
Subject: [PATCH 009/116] chore: bump sam/build-java25 (#2385)
Bumps sam/build-java25 from `bffac7d` to `15e69d9`.
---
updated-dependencies:
- dependency-name: sam/build-java25
dependency-version: 15e69d9776709e299d2913e546d8d7fb30b9ca0b66e4fce6f3beb41604242bd8
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index 1ceb29aa0..2b587e0a0 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:bffac7de6e418a93d2aefc1e8e7c79eda0971e7a026725fe618b58ddfba7a128
+FROM public.ecr.aws/sam/build-java25@sha256:15e69d9776709e299d2913e546d8d7fb30b9ca0b66e4fce6f3beb41604242bd8
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From 66b0c14116a1b6f285f683c3ccd54cf18182b55a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Feb 2026 14:14:40 +0100
Subject: [PATCH 010/116] chore: bump aws-actions/configure-aws-credentials
from 5.1.1 to 6.0.0 (#2382)
Bumps [aws-actions/configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials) from 5.1.1 to 6.0.0.
- [Release notes](https://github.com/aws-actions/configure-aws-credentials/releases)
- [Changelog](https://github.com/aws-actions/configure-aws-credentials/blob/main/CHANGELOG.md)
- [Commits](https://github.com/aws-actions/configure-aws-credentials/compare/61815dcd50bd041e203e49132bacad1fd04d2708...8df5847569e6427dd6c4fb1cf565c83acfa8afa7)
---
updated-dependencies:
- dependency-name: aws-actions/configure-aws-credentials
dependency-version: 6.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/build-docs.yml | 2 +-
.github/workflows/check-e2e.yml | 4 ++--
.github/workflows/release.yml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index deadf289a..6a33820c7 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -43,7 +43,7 @@ jobs:
docker build -t squidfunk/mkdocs-material ./docs/
docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708
+ uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_DOCS_ROLE_ARN }}
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index f18a1438b..e89051154 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -65,7 +65,7 @@ jobs:
java-version: ${{ matrix.java }}
cache: maven
- name: Setup AWS credentials
- uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5.1.1
+ uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
@@ -96,7 +96,7 @@ jobs:
java-version: ${{ matrix.java }}
cache: maven
- name: Setup AWS credentials
- uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708 # v5.1.1
+ uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index e1a35a4ac..ee6582551 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -286,7 +286,7 @@ jobs:
docker build -t squidfunk/mkdocs-material ./docs/
docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@61815dcd50bd041e203e49132bacad1fd04d2708
+ uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_DOCS_ROLE_ARN }}
From 7a188fa9ce910bc001b5f3480fbca9e944dedf6a Mon Sep 17 00:00:00 2001
From: cmtjk
Date: Mon, 2 Mar 2026 14:27:43 +0100
Subject: [PATCH 011/116] feat(logging): add support for key-value pairs in
using SLF4J fluent API and Logback backend (#2377)
* feat(logging): add support for key-value pairs in LambdaJsonEncoder
* feat(logging): add support for key-value pairs in LambdaEcsEncoder
* feat(logging): add e2e tests for fluent api
* feat(logging): cleanup, remove unused import
* feat(logging/logback): exclude Powertools reserved keys from key-value pairs and sort remaining entries to match existing MDC handling behavior
* feat(logging/logback): fix typos
* feat(logging/logback): add logging docs regarding SLF4J Fluent Logging API
* feat(logging/logback): remove test cases related to key-value pair deduplication and refactor
* feat(logging/logback): update docs, align logback with log4j implementation
---
docs/core/logging.md | 12 +++
.../handlers/logging-log4j-fluent-api/pom.xml | 82 +++++++++++++++++++
.../lambda/powertools/e2e/Function.java | 41 ++++++++++
.../amazon/lambda/powertools/e2e/Input.java | 38 +++++++++
.../aws-lambda-java-core/reflect-config.json | 13 +++
.../reflect-config.json | 35 ++++++++
.../jni-config.json | 11 +++
.../native-image.properties | 1 +
.../reflect-config.json | 62 ++++++++++++++
.../resource-config.json | 19 +++++
.../reflect-config.json | 25 ++++++
.../reflect-config.json | 20 +++++
.../resource-config.json | 7 ++
.../src/main/resources/log4j2.xml | 17 ++++
.../logging-logback-fluent-api/pom.xml | 82 +++++++++++++++++++
.../lambda/powertools/e2e/Function.java | 41 ++++++++++
.../amazon/lambda/powertools/e2e/Input.java | 38 +++++++++
.../aws-lambda-java-core/reflect-config.json | 13 +++
.../reflect-config.json | 35 ++++++++
.../jni-config.json | 11 +++
.../native-image.properties | 1 +
.../reflect-config.json | 62 ++++++++++++++
.../resource-config.json | 19 +++++
.../reflect-config.json | 25 ++++++
.../reflect-config.json | 20 +++++
.../resource-config.json | 7 ++
.../src/main/resources/logback.xml | 16 ++++
powertools-e2e-tests/handlers/pom.xml | 2 +
.../amazon/lambda/powertools/LoggingE2ET.java | 2 +-
.../logging/logback/LambdaEcsEncoder.java | 18 ++--
.../logging/logback/LambdaJsonEncoder.java | 19 +++--
.../internal/LambdaEcsEncoderTest.java | 40 +++++++++
.../internal/LambdaJsonEncoderTest.java | 39 +++++++++
33 files changed, 858 insertions(+), 15 deletions(-)
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/log4j2.xml
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json
create mode 100644 powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/logback.xml
diff --git a/docs/core/logging.md b/docs/core/logging.md
index 8358087d2..4a53e06e2 100644
--- a/docs/core/logging.md
+++ b/docs/core/logging.md
@@ -378,6 +378,18 @@ You can use Powertools for AWS Lambda Logging with either the `@Logging` annotat
}
```
+???+ warning "Do not reuse reserved keys"
+
+ Do not reuse reserved keys listed in [standard structured keys](#standard-structured-keys) and [additional structured keys](#additional-structured-keys).
+ This restriction applies to all structured logging mechanisms, including:
+
+ - Log arguments
+ - MDC entries
+ - `addKeyValue(...)` or `addArgument(...)` of [SLF4J Fluent Logging API](https://www.slf4j.org/manual.html#fluent)
+ - Any other structured data fields
+
+ Reusing reserved keys in any of these contexts may result in unintended or inconsistent behavior.
+
## Standard structured keys
Your logs will always include the following keys in your structured logging:
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml
new file mode 100644
index 000000000..8432aa604
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml
@@ -0,0 +1,82 @@
+
+ 4.0.0
+
+
+ software.amazon.lambda
+ e2e-test-handlers-parent
+ 2.9.0
+
+
+ e2e-test-handler-logging-log4j-fluent-api
+ jar
+ E2E test handler – Logging Log4j Fluent API
+
+
+
+ software.amazon.lambda
+ powertools-logging-log4j
+
+
+ org.aspectj
+ aspectjrt
+
+
+ com.amazonaws
+ aws-lambda-java-events
+
+
+ com.amazonaws
+ aws-lambda-java-runtime-interface-client
+
+
+ com.amazonaws
+ aws-lambda-java-core
+
+
+
+
+
+
+ dev.aspectj
+ aspectj-maven-plugin
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+ ${maven.compiler.target}
+
+
+ software.amazon.lambda
+ powertools-logging
+
+
+
+
+
+
+ compile
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+
+
+
+ native-image
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+
+
+
+
+
+
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
new file mode 100644
index 000000000..fbd6d7286
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.e2e;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.spi.LoggingEventBuilder;
+import software.amazon.lambda.powertools.logging.Logging;
+import software.amazon.lambda.powertools.logging.PowertoolsLogging;
+
+public class Function implements RequestHandler {
+ private static final Logger LOG = LoggerFactory.getLogger(Function.class);
+
+ @Logging
+ public String handleRequest(Input input, Context context) {
+
+ LoggingEventBuilder loggingEventBuilder = LOG.atInfo().setMessage(input.getMessage());
+ //noinspection ResultOfMethodCallIgnored
+ input.getKeys().forEach(loggingEventBuilder::addKeyValue);
+ loggingEventBuilder.log();
+
+ // Flush buffer manually since we buffer at INFO level to test log buffering
+ PowertoolsLogging.flushBuffer();
+
+ return "OK";
+ }
+}
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java
new file mode 100644
index 000000000..66fd49ddc
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.e2e;
+
+import java.util.Map;
+
+public class Input {
+ private String message;
+ private Map keys;
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Map getKeys() {
+ return keys;
+ }
+
+ public void setKeys(Map keys) {
+ this.keys = keys;
+ }
+}
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
new file mode 100644
index 000000000..2780aca09
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
@@ -0,0 +1,13 @@
+[
+ {
+ "name":"com.amazonaws.services.lambda.runtime.LambdaRuntime",
+ "methods":[{"name":"","parameterTypes":[] }],
+ "fields":[{"name":"logger"}],
+ "allPublicMethods":true
+ },
+ {
+ "name":"com.amazonaws.services.lambda.runtime.LambdaRuntimeInternal",
+ "methods":[{"name":"","parameterTypes":[] }],
+ "allPublicMethods":true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
new file mode 100644
index 000000000..ddda5d5f1
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
@@ -0,0 +1,35 @@
+[
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
new file mode 100644
index 000000000..91be72f7a
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
@@ -0,0 +1,11 @@
+[
+ {
+ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.LambdaRuntimeClientException",
+ "methods":[{"name":"","parameterTypes":["java.lang.String","int"] }]
+ },
+ {
+ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
+ "allPublicMethods":true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
new file mode 100644
index 000000000..20f8b7801
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
@@ -0,0 +1 @@
+Args = --initialize-at-build-time=jdk.xml.internal.SecuritySupport
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
new file mode 100644
index 000000000..467af67a0
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -0,0 +1,62 @@
+[
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]"
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.LambdaRuntime",
+ "fields": [{ "name": "logger" }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.logging.LogLevel",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredFields": true,
+ "allPublicFields": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.logging.LogFormat",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredFields": true,
+ "allPublicFields": true
+ },
+ {
+ "name": "java.lang.Void",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "java.util.Collections$UnmodifiableMap",
+ "fields": [{ "name": "m" }]
+ },
+ {
+ "name": "jdk.internal.module.IllegalAccessLogger",
+ "fields": [{ "name": "logger" }]
+ },
+ {
+ "name": "sun.misc.Unsafe",
+ "fields": [{ "name": "theUnsafe" }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
new file mode 100644
index 000000000..1062b4249
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
@@ -0,0 +1,19 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux-aarch_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux-x86_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux_musl-aarch_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux_musl-x86_64.so\\E"
+ }
+ ]
+ },
+ "bundles": []
+}
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
new file mode 100644
index 000000000..9890688f9
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
@@ -0,0 +1,25 @@
+[
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]"
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7HandlersImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ser.Serializers[]"
+ },
+ {
+ "name": "org.joda.time.DateTime",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
new file mode 100644
index 000000000..9ddd235e2
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
@@ -0,0 +1,20 @@
+[
+ {
+ "name": "software.amazon.lambda.powertools.e2e.Function",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "software.amazon.lambda.powertools.e2e.Input",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json
new file mode 100644
index 000000000..be6aac3f6
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json
@@ -0,0 +1,7 @@
+{
+ "resources":{
+ "includes":[{
+ "pattern":"\\Qlog4j2.xml\\E"
+ }]},
+ "bundles":[]
+}
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/log4j2.xml b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/log4j2.xml
new file mode 100644
index 000000000..28e03a9e0
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/src/main/resources/log4j2.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml b/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml
new file mode 100644
index 000000000..83d0abddb
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml
@@ -0,0 +1,82 @@
+
+ 4.0.0
+
+
+ software.amazon.lambda
+ e2e-test-handlers-parent
+ 2.9.0
+
+
+ e2e-test-handler-logging-logback-fluent-api
+ jar
+ E2E test handler – Logging Logback Fluent API
+
+
+
+ software.amazon.lambda
+ powertools-logging-logback
+
+
+ org.aspectj
+ aspectjrt
+
+
+ com.amazonaws
+ aws-lambda-java-events
+
+
+ com.amazonaws
+ aws-lambda-java-runtime-interface-client
+
+
+ com.amazonaws
+ aws-lambda-java-core
+
+
+
+
+
+
+ dev.aspectj
+ aspectj-maven-plugin
+
+ ${maven.compiler.source}
+ ${maven.compiler.target}
+ ${maven.compiler.target}
+
+
+ software.amazon.lambda
+ powertools-logging
+
+
+
+
+
+
+ compile
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+
+
+
+ native-image
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+
+
+
+
+
+
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
new file mode 100644
index 000000000..fbd6d7286
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.e2e;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.slf4j.spi.LoggingEventBuilder;
+import software.amazon.lambda.powertools.logging.Logging;
+import software.amazon.lambda.powertools.logging.PowertoolsLogging;
+
+public class Function implements RequestHandler {
+ private static final Logger LOG = LoggerFactory.getLogger(Function.class);
+
+ @Logging
+ public String handleRequest(Input input, Context context) {
+
+ LoggingEventBuilder loggingEventBuilder = LOG.atInfo().setMessage(input.getMessage());
+ //noinspection ResultOfMethodCallIgnored
+ input.getKeys().forEach(loggingEventBuilder::addKeyValue);
+ loggingEventBuilder.log();
+
+ // Flush buffer manually since we buffer at INFO level to test log buffering
+ PowertoolsLogging.flushBuffer();
+
+ return "OK";
+ }
+}
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java
new file mode 100644
index 000000000..66fd49ddc
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/java/software/amazon/lambda/powertools/e2e/Input.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.e2e;
+
+import java.util.Map;
+
+public class Input {
+ private String message;
+ private Map keys;
+
+ public String getMessage() {
+ return message;
+ }
+
+ public void setMessage(String message) {
+ this.message = message;
+ }
+
+ public Map getKeys() {
+ return keys;
+ }
+
+ public void setKeys(Map keys) {
+ this.keys = keys;
+ }
+}
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
new file mode 100644
index 000000000..2780aca09
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
@@ -0,0 +1,13 @@
+[
+ {
+ "name":"com.amazonaws.services.lambda.runtime.LambdaRuntime",
+ "methods":[{"name":"","parameterTypes":[] }],
+ "fields":[{"name":"logger"}],
+ "allPublicMethods":true
+ },
+ {
+ "name":"com.amazonaws.services.lambda.runtime.LambdaRuntimeInternal",
+ "methods":[{"name":"","parameterTypes":[] }],
+ "allPublicMethods":true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
new file mode 100644
index 000000000..ddda5d5f1
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
@@ -0,0 +1,35 @@
+[
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
new file mode 100644
index 000000000..91be72f7a
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
@@ -0,0 +1,11 @@
+[
+ {
+ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.LambdaRuntimeClientException",
+ "methods":[{"name":"","parameterTypes":["java.lang.String","int"] }]
+ },
+ {
+ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
+ "allPublicMethods":true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
new file mode 100644
index 000000000..20f8b7801
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
@@ -0,0 +1 @@
+Args = --initialize-at-build-time=jdk.xml.internal.SecuritySupport
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
new file mode 100644
index 000000000..467af67a0
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -0,0 +1,62 @@
+[
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]"
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.LambdaRuntime",
+ "fields": [{ "name": "logger" }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.logging.LogLevel",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredFields": true,
+ "allPublicFields": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.logging.LogFormat",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredFields": true,
+ "allPublicFields": true
+ },
+ {
+ "name": "java.lang.Void",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "java.util.Collections$UnmodifiableMap",
+ "fields": [{ "name": "m" }]
+ },
+ {
+ "name": "jdk.internal.module.IllegalAccessLogger",
+ "fields": [{ "name": "logger" }]
+ },
+ {
+ "name": "sun.misc.Unsafe",
+ "fields": [{ "name": "theUnsafe" }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
new file mode 100644
index 000000000..1062b4249
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
@@ -0,0 +1,19 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux-aarch_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux-x86_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux_musl-aarch_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux_musl-x86_64.so\\E"
+ }
+ ]
+ },
+ "bundles": []
+}
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
new file mode 100644
index 000000000..9890688f9
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
@@ -0,0 +1,25 @@
+[
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]"
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7HandlersImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ser.Serializers[]"
+ },
+ {
+ "name": "org.joda.time.DateTime",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
new file mode 100644
index 000000000..9ddd235e2
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
@@ -0,0 +1,20 @@
+[
+ {
+ "name": "software.amazon.lambda.powertools.e2e.Function",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ },
+ {
+ "name": "software.amazon.lambda.powertools.e2e.Input",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json
new file mode 100644
index 000000000..a603a9398
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/resource-config.json
@@ -0,0 +1,7 @@
+{
+ "resources":{
+ "includes":[{
+ "pattern":"\\Qlogback.xml\\E"
+ }]},
+ "bundles":[]
+}
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/logback.xml b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/logback.xml
new file mode 100644
index 000000000..0a5e4d146
--- /dev/null
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/src/main/resources/logback.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+ INFO
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 585bb83db..c9a4826a2 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -30,7 +30,9 @@
largemessage-functional
largemessage_idempotent
logging-log4j
+ logging-log4j-fluent-api
logging-logback
+ logging-logback-fluent-api
logging-functional
tracing
metrics
diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LoggingE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LoggingE2ET.java
index 20bc5394d..364029214 100644
--- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LoggingE2ET.java
+++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LoggingE2ET.java
@@ -70,7 +70,7 @@ void tearDown() {
}
@ParameterizedTest
- @ValueSource(strings = { "logging-log4j", "logging-logback", "logging-functional" })
+ @ValueSource(strings = { "logging-log4j", "logging-log4j-fluent-api", "logging-logback", "logging-logback-fluent-api", "logging-functional" })
@Timeout(value = 15, unit = TimeUnit.MINUTES)
void test_logInfoWithAdditionalKeys(String pathToFunction) throws JsonProcessingException {
setupInfrastructure(pathToFunction);
diff --git a/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java b/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java
index 6a82d8e67..b934f378d 100644
--- a/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java
+++ b/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java
@@ -23,9 +23,7 @@
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_REQUEST_ID;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_TRACE_ID;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_VERSION;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeArguments;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeMDCEntries;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeTimestamp;
+import static software.amazon.lambda.powertools.logging.logback.JsonUtils.*;
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
@@ -34,8 +32,8 @@
import ch.qos.logback.classic.spi.ThrowableProxy;
import ch.qos.logback.core.encoder.EncoderBase;
import java.io.IOException;
-import java.util.Arrays;
-import java.util.Map;
+import java.util.*;
+
import software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor;
import software.amazon.lambda.powertools.logging.internal.JsonSerializer;
@@ -99,7 +97,8 @@ public byte[] headerBytes() {
@SuppressWarnings("java:S106")
@Override
public byte[] encode(ILoggingEvent event) {
- final Map mdcPropertyMap = event.getMDCPropertyMap();
+ final Map mdcPropertyMap = new TreeMap<>(event.getMDCPropertyMap());
+ mdcPropertyMap.putAll(getKeyValuePairs(event));
StringBuilder builder = new StringBuilder();
try (JsonSerializer serializer = new JsonSerializer(builder)) {
@@ -142,6 +141,13 @@ public byte[] encode(ILoggingEvent event) {
return builder.toString().getBytes(UTF_8);
}
+ private Map getKeyValuePairs(ILoggingEvent event) {
+ return Optional.ofNullable(event.getKeyValuePairs())
+ .orElse(Collections.emptyList()).stream()
+ .filter(Objects::nonNull)
+ .collect(TreeMap::new, (map, kvp) -> map.put(String.valueOf(kvp.key), String.valueOf(kvp.value)), TreeMap::putAll);
+ }
+
private void serializeFunctionInfo(JsonSerializer serializer, String arn, Map mdcPropertyMap) {
if (includeFaasInfo) {
serializer.writeRaw(',');
diff --git a/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaJsonEncoder.java b/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaJsonEncoder.java
index 9afaf0ab7..49368ae99 100644
--- a/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaJsonEncoder.java
+++ b/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaJsonEncoder.java
@@ -15,10 +15,7 @@
package software.amazon.lambda.powertools.logging.logback;
import static java.nio.charset.StandardCharsets.UTF_8;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeArguments;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeMDCEntries;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeMDCEntry;
-import static software.amazon.lambda.powertools.logging.logback.JsonUtils.serializeTimestamp;
+import static software.amazon.lambda.powertools.logging.logback.JsonUtils.*;
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
@@ -27,10 +24,8 @@
import ch.qos.logback.classic.spi.ThrowableProxy;
import ch.qos.logback.core.encoder.EncoderBase;
import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TreeMap;
+import java.util.*;
+
import software.amazon.lambda.powertools.logging.internal.JsonSerializer;
import software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields;
@@ -84,6 +79,7 @@ public byte[] encode(ILoggingEvent event) {
serializeException(event, serializer);
TreeMap sortedMap = new TreeMap<>(event.getMDCPropertyMap());
+ sortedMap.putAll(getKeyValuePairs(event));
serializePowertools(sortedMap, serializer);
serializeMDCEntries(sortedMap, serializer);
@@ -104,6 +100,13 @@ public byte[] encode(ILoggingEvent event) {
return builder.toString().getBytes(UTF_8);
}
+ private Map getKeyValuePairs(ILoggingEvent event) {
+ return Optional.ofNullable(event.getKeyValuePairs())
+ .orElse(Collections.emptyList()).stream()
+ .filter(Objects::nonNull)
+ .collect(TreeMap::new, (map, kvp) -> map.put(String.valueOf(kvp.key), String.valueOf(kvp.value)), TreeMap::putAll);
+ }
+
private void serializeThreadInfo(ILoggingEvent event, JsonSerializer serializer) {
if (includeThreadInfo) {
if (event.getThreadName() != null) {
diff --git a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java
index 30ede8ba8..2d5cb0a00 100644
--- a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java
+++ b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java
@@ -25,6 +25,7 @@
import java.nio.file.NoSuchFileException;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
+import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.jupiter.api.AfterEach;
@@ -40,9 +41,11 @@
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.pattern.RootCauseFirstThrowableProxyConverter;
import ch.qos.logback.classic.spi.LoggingEvent;
+import org.slf4j.event.KeyValuePair;
import software.amazon.lambda.powertools.common.internal.LambdaHandlerProcessor;
import software.amazon.lambda.powertools.common.stubs.TestLambdaContext;
import software.amazon.lambda.powertools.logging.PowertoolsLogging;
+import software.amazon.lambda.powertools.logging.argument.StructuredArguments;
import software.amazon.lambda.powertools.logging.internal.handler.PowertoolsLogEnabled;
import software.amazon.lambda.powertools.logging.logback.LambdaEcsEncoder;
@@ -179,4 +182,41 @@ private void setMDC() {
MDC.put(PowertoolsLoggedFields.CORRELATION_ID.getName(), "test-correlation-id");
}
+ @Test
+ void shouldLogKeyValuePairs() {
+ // GIVEN
+ LambdaEcsEncoder encoder = new LambdaEcsEncoder();
+ encoder.start();
+
+ LoggingEvent keyValuePairsLoggingEvent = new LoggingEvent("fqcn", logger, Level.INFO, "Key Value Pairs Test",
+ null, new Object[0]);
+
+ keyValuePairsLoggingEvent.setKeyValuePairs(List.of(
+ new KeyValuePair("key_01_string", "value_01"),
+ new KeyValuePair("key_02_numeric", 2),
+ new KeyValuePair("key_03_decimal", 2.333),
+ new KeyValuePair("key_04_null", null),
+ new KeyValuePair("", "value_05_empty_key"),
+ new KeyValuePair(null, "value_06_null_key"),
+ new KeyValuePair("key_07_boolean_true", true),
+ new KeyValuePair("key_08_boolean_false", false)
+ ));
+
+ // WHEN
+ byte[] encoded = encoder.encode(keyValuePairsLoggingEvent);
+ String result = new String(encoded, StandardCharsets.UTF_8);
+
+ // THEN
+ assertThat(result)
+ .contains("\"key_01_string\":\"value_01\"")
+ .contains("\"key_02_numeric\":2")
+ .contains("\"key_03_decimal\":2.333")
+ .contains("\"key_04_null\":\"null\"")
+ .contains("\"\":\"value_05_empty_key\"")
+ .contains("\"null\":\"value_06_null_key\"")
+ .contains("\"key_07_boolean_true\":true")
+ .contains("\"key_08_boolean_false\":false")
+ ;
+ }
+
}
diff --git a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java
index 16bd9e92a..ca256ad5d 100644
--- a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java
+++ b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java
@@ -40,6 +40,7 @@
import java.nio.file.StandardOpenOption;
import java.text.SimpleDateFormat;
import java.util.Arrays;
+import java.util.List;
import java.util.Collections;
import java.util.Date;
import java.util.TimeZone;
@@ -50,6 +51,7 @@
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Order;
import org.junit.jupiter.api.Test;
+import org.slf4j.event.KeyValuePair;
import software.amazon.lambda.powertools.common.stubs.TestLambdaContext;
import org.slf4j.LoggerFactory;
import org.slf4j.MDC;
@@ -442,4 +444,41 @@ void shouldLogException() {
.contains("\"stack\":\"java.lang.IllegalStateException: Unexpected value\\n");
}
+ @Test
+ void shouldLogKeyValuePairs() {
+ // GIVEN
+ LambdaJsonEncoder encoder = new LambdaJsonEncoder();
+ encoder.start();
+
+ LoggingEvent keyValuePairsLoggingEvent = new LoggingEvent("fqcn", logger, Level.INFO, "Key Value Pairs Test",
+ null, new Object[0]);
+
+ keyValuePairsLoggingEvent.setKeyValuePairs(List.of(
+ new KeyValuePair("key_01_string", "value_01"),
+ new KeyValuePair("key_02_numeric", 2),
+ new KeyValuePair("key_03_decimal", 2.333),
+ new KeyValuePair("key_04_null", null),
+ new KeyValuePair("", "value_05_empty_key"),
+ new KeyValuePair(null, "value_06_null_key"),
+ new KeyValuePair("key_07_boolean_true", true),
+ new KeyValuePair("key_08_boolean_false", false)
+ ));
+
+ // WHEN
+ byte[] encoded = encoder.encode(keyValuePairsLoggingEvent);
+ String result = new String(encoded, StandardCharsets.UTF_8);
+
+ // THEN
+ assertThat(result)
+ .contains("\"key_01_string\":\"value_01\"")
+ .contains("\"key_02_numeric\":2")
+ .contains("\"key_03_decimal\":2.333")
+ .contains("\"key_04_null\":\"null\"")
+ .contains("\"\":\"value_05_empty_key\"")
+ .contains("\"null\":\"value_06_null_key\"")
+ .contains("\"key_07_boolean_true\":true")
+ .contains("\"key_08_boolean_false\":false")
+ ;
+ }
+
}
From c04034984b28477d772c879201d1204249ae71c8 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 2 Mar 2026 14:28:08 +0100
Subject: [PATCH 012/116] chore: bump github/codeql-action from 4.32.3 to
4.32.5 (#2396)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.3 to 4.32.5.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/9e907b5e64f6b83e7804b09294d44122997950d6...c793b717bc78562f491db7b0e93a3a178b099162)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: 4.32.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 5b3d91efc..65ecbbd50 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@9e907b5e64f6b83e7804b09294d44122997950d6 # v3.29.5
+ uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v3.29.5
with:
sarif_file: results.sarif
From f4f216254c7ab3f7c8b595db4eb02ce9dff6cf3d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 2 Mar 2026 16:56:48 +0100
Subject: [PATCH 013/116] chore: bump actions/upload-artifact from 6.0.0 to
7.0.0 (#2394)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6.0.0 to 7.0.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/b7c566a772e6b6bfb58ed0dc250532a479d7789f...bbbca2ddaa5d8feaa63e36b76fdaad77386f024f)
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release.yml | 2 +-
.github/workflows/security-scorecard.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ee6582551..d6105e282 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -113,7 +113,7 @@ jobs:
snapshot: ${{ inputs.snapshot}}
- id: upload_source
name: Upload artifacts
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
+ uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
if-no-files-found: error
name: source
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 65ecbbd50..23957036c 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -47,7 +47,7 @@ jobs:
publish_results: true
repo_token: ${{ secrets.SCORECARD_TOKEN }}
- name: Upload Results
- uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
+ uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: SARIF file
path: results.sarif
From 6f18fb9acb51ec2c98b025478b6a7ad37db9236c Mon Sep 17 00:00:00 2001
From: Philipp Page
Date: Tue, 3 Mar 2026 15:56:50 +0100
Subject: [PATCH 014/116] chore(ci): Run E2E tests in a per-test matrix (#2398)
* Setup initial test matrix for test classes.
* Increase concurrency and move build to its own step.
* Add dynamic discovery of test classes to avoid duplication between pom.xml and GH actions script.
* output single-line JSON as multi-line is not supported with GITHUB_OUTPUT.
* increase degree of concurreny to max 25 (20 for e2e and 5 for e2e-graal).
* Update .github/workflows/check-e2e.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Address PR comments by Copilot.
* Update .github/workflows/check-e2e.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/workflows/check-e2e.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Fix syntax error caused by Copilot.
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---
.github/workflows/check-e2e.yml | 74 +++++++++++++++++++++++++++++----
1 file changed, 67 insertions(+), 7 deletions(-)
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index e89051154..daf079efe 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -40,21 +40,69 @@ permissions:
contents: read
jobs:
- e2e:
- name: End-to-end Tests (Java ${{ matrix.java }})
+ discover-tests:
+ name: Discover E2E test classes
+ runs-on: ubuntu-latest
+ outputs:
+ e2e-classes: ${{ steps.parse.outputs.e2e-classes }}
+ e2e-graal-classes: ${{ steps.parse.outputs.e2e-graal-classes }}
+ steps:
+ - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
+ - name: Parse test classes from POM profiles
+ id: parse
+ run: |
+ TEST_DIR="powertools-e2e-tests/src/test/java"
+ POM="powertools-e2e-tests/pom.xml"
+
+ # Extracts patterns from a POM profile, resolves them
+ # against the test directory, and outputs a compact JSON array
+ # of class names (without .java suffix).
+ resolve_classes() {
+ local profile_id="$1"
+ awk "/${profile_id}<\\/id>/,/<\\/profile>/" "$POM" \
+ | { grep '' || true; } \
+ | sed 's/.*\(.*\)<\/include>.*/\1/' \
+ | while read -r pattern; do
+ find "$TEST_DIR" -type f -path "$TEST_DIR/$pattern" -print0 | xargs -0 -r basename -a
+ done \
+ | sed 's/\.java$//' | sort -u | jq -R . | jq -sc .
+ }
+
+ E2E_CLASSES=$(resolve_classes "e2e")
+ GRAAL_CLASSES=$(resolve_classes "e2e-graal")
+
+ echo "e2e test classes: $E2E_CLASSES"
+ echo "e2e-graal test classes: $GRAAL_CLASSES"
+
+ if [ "$E2E_CLASSES" = "[]" ] || [ -z "$E2E_CLASSES" ]; then
+ echo "::error::No e2e test classes found — check POM includes and test directory"
+ exit 1
+ fi
+ if [ "$GRAAL_CLASSES" = "[]" ] || [ -z "$GRAAL_CLASSES" ]; then
+ echo "::error::No e2e-graal test classes found — check POM includes and test directory"
+ exit 1
+ fi
+
+ echo "e2e-classes=$E2E_CLASSES" >> "$GITHUB_OUTPUT"
+ echo "e2e-graal-classes=$GRAAL_CLASSES" >> "$GITHUB_OUTPUT"
+
+ e2e:
+ name: E2E ${{ matrix.test-class }} (Java ${{ matrix.java }})
+ needs: discover-tests
runs-on: ubuntu-latest
permissions:
id-token: write
environment: E2E
strategy:
fail-fast: false
- max-parallel: 4
+ max-parallel: 20
matrix:
java:
- 11
- 17
- 21
- 25
+ test-class: ${{ fromJSON(needs.discover-tests.outputs.e2e-classes) }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -64,6 +112,8 @@ jobs:
distribution: 'corretto'
java-version: ${{ matrix.java }}
cache: maven
+ - name: Build all modules
+ run: mvn -B -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
with:
@@ -72,20 +122,25 @@ jobs:
- name: Run e2e test with Maven
env:
JAVA_VERSION: ${{ matrix.java }}
- run: mvn -DskipTests -ntp install --file pom.xml && mvn -Pe2e -B -ntp verify --file powertools-e2e-tests/pom.xml
+ run: >
+ mvn -Pe2e -B -ntp
+ -Dit.test="${{ matrix.test-class }}"
+ verify --file powertools-e2e-tests/pom.xml
e2e-graal:
- name: End-to-end GraalVM Tests (Java ${{ matrix.java }})
+ name: E2E GraalVM ${{ matrix.test-class }} (Java ${{ matrix.java }})
+ needs: discover-tests
runs-on: ubuntu-latest
permissions:
id-token: write
environment: E2E
strategy:
fail-fast: false
- max-parallel: 1
+ max-parallel: 5
matrix:
java:
- 25
+ test-class: ${{ fromJSON(needs.discover-tests.outputs.e2e-graal-classes) }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
@@ -95,6 +150,8 @@ jobs:
distribution: 'corretto'
java-version: ${{ matrix.java }}
cache: maven
+ - name: Build all modules
+ run: mvn -B -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
with:
@@ -103,4 +160,7 @@ jobs:
- name: Run e2e-graal test with Maven
env:
JAVA_VERSION: ${{ matrix.java }}
- run: mvn -DskipTests -ntp install --file pom.xml && mvn -Pe2e-graal -B -ntp verify --file powertools-e2e-tests/pom.xml
+ run: >
+ mvn -Pe2e-graal -B -ntp
+ -Dit.test="${{ matrix.test-class }}"
+ verify --file powertools-e2e-tests/pom.xml
From c8c3e85650e8eca5911ca7351fb10244aa1dfe35 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 15:57:29 +0100
Subject: [PATCH 015/116] chore: bump tj-actions/changed-files from 47.0.4 to
47.0.5 (#2399)
Bumps [tj-actions/changed-files](https://github.com/tj-actions/changed-files) from 47.0.4 to 47.0.5.
- [Release notes](https://github.com/tj-actions/changed-files/releases)
- [Changelog](https://github.com/tj-actions/changed-files/blob/main/HISTORY.md)
- [Commits](https://github.com/tj-actions/changed-files/compare/7dee1b0c1557f278e5c7dc244927139d78c0e22a...22103cc46bda19c2b464ffe86db46df6922fd323)
---
updated-dependencies:
- dependency-name: tj-actions/changed-files
dependency-version: 47.0.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index e2c1e5053..5507ccc6f 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -99,7 +99,7 @@ jobs:
fetch-depth: 0
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@7dee1b0c1557f278e5c7dc244927139d78c0e22a # v47.0.4
+ uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5
with:
files: |
powertools-*/**
From 1f23d85ee9c1bfe65c33abb198079216a5754224 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 15:57:51 +0100
Subject: [PATCH 016/116] chore: bump aws.sdk.version from 2.39.3 to 2.41.11
(#2359)
Bumps `aws.sdk.version` from 2.39.3 to 2.41.11.
Updates `software.amazon.awssdk:url-connection-client` from 2.39.3 to 2.41.11
Updates `software.amazon.awssdk:sdk-core` from 2.39.3 to 2.41.11
Updates `software.amazon.awssdk:s3` from 2.39.3 to 2.41.11
Updates `software.amazon.awssdk:kinesis` from 2.39.3 to 2.41.11
Updates `software.amazon.awssdk:sqs` from 2.39.3 to 2.41.11
Updates `software.amazon.awssdk:dynamodb-enhanced` from 2.39.3 to 2.41.11
---
updated-dependencies:
- dependency-name: software.amazon.awssdk:url-connection-client
dependency-version: 2.41.11
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:sdk-core
dependency-version: 2.41.11
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:s3
dependency-version: 2.41.11
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:kinesis
dependency-version: 2.41.11
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:sqs
dependency-version: 2.41.11
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:dynamodb-enhanced
dependency-version: 2.41.11
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-batch/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/powertools-examples-batch/pom.xml b/examples/powertools-examples-batch/pom.xml
index 0091fb5ca..7d1253d7d 100644
--- a/examples/powertools-examples-batch/pom.xml
+++ b/examples/powertools-examples-batch/pom.xml
@@ -14,7 +14,7 @@
11
11
1.9.20.1
- 2.39.3
+ 2.41.11
From 61e954e63a7c93e6c70d50a8eece5989292b80c5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 15:58:14 +0100
Subject: [PATCH 017/116] chore: bump com.google.protobuf:protobuf-java from
4.33.2 to 4.33.4 (#2360)
Bumps [com.google.protobuf:protobuf-java](https://github.com/protocolbuffers/protobuf) from 4.33.2 to 4.33.4.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Commits](https://github.com/protocolbuffers/protobuf/commits)
---
updated-dependencies:
- dependency-name: com.google.protobuf:protobuf-java
dependency-version: 4.33.4
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-kafka/pom.xml | 2 +-
powertools-kafka/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-kafka/pom.xml b/examples/powertools-examples-kafka/pom.xml
index 99e04e8a8..70eef52c1 100644
--- a/examples/powertools-examples-kafka/pom.xml
+++ b/examples/powertools-examples-kafka/pom.xml
@@ -12,7 +12,7 @@
11
1.9.20.1
1.12.1
- 4.33.2
+ 4.33.4
diff --git a/powertools-kafka/pom.xml b/powertools-kafka/pom.xml
index ccb63e38f..6cade6bbf 100644
--- a/powertools-kafka/pom.xml
+++ b/powertools-kafka/pom.xml
@@ -36,7 +36,7 @@
4.1.1
1.12.1
- 4.33.2
+ 4.33.4
1.1.6
From b025010a93d214b781d2362141e127787169d824 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 15:58:54 +0100
Subject: [PATCH 018/116] chore: bump actions/download-artifact from 7.0.0 to
8.0.0 (#2393)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 7.0.0 to 8.0.0.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/37930b1c2abaa49bbe596cd826c3c89aef350131...70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: 8.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index d6105e282..8a074740a 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -133,7 +133,7 @@ jobs:
steps:
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v4.6.1
+ uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
with:
name: source
- name: Setup Java
@@ -170,7 +170,7 @@ jobs:
steps:
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v4.6.1
+ uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
with:
name: source
- name: Setup Java
@@ -195,7 +195,7 @@ jobs:
steps:
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v4.6.1
+ uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
with:
name: source
- name: Setup Java
@@ -233,7 +233,7 @@ jobs:
ref: ${{ env.RELEASE_COMMIT }}
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v4.6.1
+ uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
with:
name: source
- id: setup-git
From 3968419b8d8949fb71a61b312aedc60d489bb7d0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 15:59:15 +0100
Subject: [PATCH 019/116] chore: bump squidfunk/mkdocs-material in /docs
(#2392)
Bumps squidfunk/mkdocs-material from `3bba0a9` to `8f41b60`.
---
updated-dependencies:
- dependency-name: squidfunk/mkdocs-material
dependency-version: 8f41b6089700e1c32212c3857936f14e88a3306a35be4ffd1826420e2f3e4197
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docs/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Dockerfile b/docs/Dockerfile
index ee71acb0e..08635aa72 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,4 +1,4 @@
-FROM squidfunk/mkdocs-material@sha256:3bba0a99bc6e635bb8e53f379d32ab9cecb554adee9cc8f59a347f93ecf82f3b
+FROM squidfunk/mkdocs-material@sha256:8f41b6089700e1c32212c3857936f14e88a3306a35be4ffd1826420e2f3e4197
COPY requirements.txt /tmp/
RUN pip install --require-hashes -r /tmp/requirements.txt
From 69ee83aa8464a6810b3a7eadd6b8419891749735 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 3 Mar 2026 15:59:34 +0100
Subject: [PATCH 020/116] chore: bump actions/dependency-review-action from
4.8.2 to 4.8.3 (#2390)
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.8.2 to 4.8.3.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261...05fe4576374b728f0c523d6a13d64c25081e0803)
---
updated-dependencies:
- dependency-name: actions/dependency-review-action
dependency-version: 4.8.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-dependencies-check.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-dependencies-check.yml b/.github/workflows/security-dependencies-check.yml
index 31f7491a2..79022bece 100644
--- a/.github/workflows/security-dependencies-check.yml
+++ b/.github/workflows/security-dependencies-check.yml
@@ -25,6 +25,6 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Verify Contents
- uses: actions/dependency-review-action@3c4e3dcb1aa7874d2c16be7d79418e9b7efd6261 # v4.8.2
+ uses: actions/dependency-review-action@05fe4576374b728f0c523d6a13d64c25081e0803 # v4.8.3
with:
config-file: './.github/dependency-review-config.yml'
From 3638af6d1c36c7ea6e06669155e496a3392f5783 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 5 Mar 2026 16:03:36 +0100
Subject: [PATCH 021/116] chore: bump actions/dependency-review-action from
4.8.3 to 4.9.0 (#2402)
Bumps [actions/dependency-review-action](https://github.com/actions/dependency-review-action) from 4.8.3 to 4.9.0.
- [Release notes](https://github.com/actions/dependency-review-action/releases)
- [Commits](https://github.com/actions/dependency-review-action/compare/05fe4576374b728f0c523d6a13d64c25081e0803...2031cfc080254a8a887f58cffee85186f0e49e48)
---
updated-dependencies:
- dependency-name: actions/dependency-review-action
dependency-version: 4.9.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-dependencies-check.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-dependencies-check.yml b/.github/workflows/security-dependencies-check.yml
index 79022bece..b2b5c7f8b 100644
--- a/.github/workflows/security-dependencies-check.yml
+++ b/.github/workflows/security-dependencies-check.yml
@@ -25,6 +25,6 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Verify Contents
- uses: actions/dependency-review-action@05fe4576374b728f0c523d6a13d64c25081e0803 # v4.8.3
+ uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0
with:
config-file: './.github/dependency-review-config.yml'
From 1debdb9ec9c301b1bb565172ca2c97586eaa9ef7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 5 Mar 2026 16:03:42 +0100
Subject: [PATCH 022/116] chore: bump squidfunk/mkdocs-material in /docs
(#2401)
Bumps squidfunk/mkdocs-material from `8f41b60` to `f4332a8`.
---
updated-dependencies:
- dependency-name: squidfunk/mkdocs-material
dependency-version: f4332a8e8895aa303bf7f3ceede749980a98cf79f5d87ad567b4d41f037b0101
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docs/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Dockerfile b/docs/Dockerfile
index 08635aa72..31d375d32 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,4 +1,4 @@
-FROM squidfunk/mkdocs-material@sha256:8f41b6089700e1c32212c3857936f14e88a3306a35be4ffd1826420e2f3e4197
+FROM squidfunk/mkdocs-material@sha256:f4332a8e8895aa303bf7f3ceede749980a98cf79f5d87ad567b4d41f037b0101
COPY requirements.txt /tmp/
RUN pip install --require-hashes -r /tmp/requirements.txt
From 3b6b670f22b938272b214583b4bae18f186ced4b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 18:29:33 +0100
Subject: [PATCH 023/116] chore: bump graalvm/setup-graalvm from 1.4.5 to 1.5.0
(#2412)
Bumps [graalvm/setup-graalvm](https://github.com/graalvm/setup-graalvm) from 1.4.5 to 1.5.0.
- [Release notes](https://github.com/graalvm/setup-graalvm/releases)
- [Commits](https://github.com/graalvm/setup-graalvm/compare/54b4f5a65c1a84b2fdfdc2078fe43df32819e4b1...f744c72a42b1995d7b0cbc314bde4bace7ac1fe1)
---
updated-dependencies:
- dependency-name: graalvm/setup-graalvm
dependency-version: 1.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 5507ccc6f..f8c79b1aa 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -105,7 +105,7 @@ jobs:
powertools-*/**
pom.xml
- name: Setup GraalVM
- uses: graalvm/setup-graalvm@54b4f5a65c1a84b2fdfdc2078fe43df32819e4b1 # v1.4.5
+ uses: graalvm/setup-graalvm@f744c72a42b1995d7b0cbc314bde4bace7ac1fe1 # v1.5.0
with:
java-version: "21"
distribution: "graalvm"
From c73ac7feef27af4be84ce408d1f60ba54334653f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 18:29:57 +0100
Subject: [PATCH 024/116] chore: bump markdown from 3.7 to 3.8.1 in /docs
(#2405)
Bumps [markdown](https://github.com/Python-Markdown/markdown) from 3.7 to 3.8.1.
- [Release notes](https://github.com/Python-Markdown/markdown/releases)
- [Changelog](https://github.com/Python-Markdown/markdown/blob/master/docs/changelog.md)
- [Commits](https://github.com/Python-Markdown/markdown/compare/3.7...3.8.1)
---
updated-dependencies:
- dependency-name: markdown
dependency-version: 3.8.1
dependency-type: indirect
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docs/requirements.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 16529cf3b..ab4b1d48f 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -39,9 +39,9 @@ jinja2==3.1.6 \
# mkdocs
# mkdocs-git-revision-date-plugin
# mkdocs-macros-plugin
-markdown==3.7 \
- --hash=sha256:2ae2471477cfd02dbbf038d5d9bc226d40def84b4fe2986e49b59b6b472bbed2 \
- --hash=sha256:7eb6df5690b81a1d7942992c97fad2938e956e79df20cbc6186e9c3a77b1c803
+markdown==3.8.1 \
+ --hash=sha256:46cc0c0f1e5211ab2e9d453582f0b28a1bfaf058a9f7d5c50386b99b588d8811 \
+ --hash=sha256:a2e2f01cead4828ee74ecca9623045f62216aef2212a7685d6eb9163f590b8c1
# via mkdocs
markdown-it-py==3.0.0 \
--hash=sha256:355216845c60bd96232cd8d8c40e8f9765cc86f46880e43a8fd22dc1a1a8cab1 \
From 3e8d8ae6c0caa4f4b616e8e9b74f4b8a50f223fc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 18:43:07 +0100
Subject: [PATCH 025/116] chore: bump squidfunk/mkdocs-material in /docs
(#2410)
Bumps squidfunk/mkdocs-material from `f4332a8` to `c373999`.
---
updated-dependencies:
- dependency-name: squidfunk/mkdocs-material
dependency-version: c3739993c3e7c92cfe649ba03cbc04f4fa9b1497886abd16267eb413cda8aecf
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docs/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Dockerfile b/docs/Dockerfile
index 31d375d32..b72dc7057 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,4 +1,4 @@
-FROM squidfunk/mkdocs-material@sha256:f4332a8e8895aa303bf7f3ceede749980a98cf79f5d87ad567b4d41f037b0101
+FROM squidfunk/mkdocs-material@sha256:c3739993c3e7c92cfe649ba03cbc04f4fa9b1497886abd16267eb413cda8aecf
COPY requirements.txt /tmp/
RUN pip install --require-hashes -r /tmp/requirements.txt
From d1f34af4ee40732d0e21b93a1a4c7a08f7bd7282 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 18:43:17 +0100
Subject: [PATCH 026/116] chore: bump actions/download-artifact from 8.0.0 to
8.0.1 (#2411)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 8.0.0 to 8.0.1.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](https://github.com/actions/download-artifact/compare/70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3...3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c)
---
updated-dependencies:
- dependency-name: actions/download-artifact
dependency-version: 8.0.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release.yml | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 8a074740a..eab539ee1 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -133,7 +133,7 @@ jobs:
steps:
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v4.6.1
with:
name: source
- name: Setup Java
@@ -170,7 +170,7 @@ jobs:
steps:
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v4.6.1
with:
name: source
- name: Setup Java
@@ -195,7 +195,7 @@ jobs:
steps:
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v4.6.1
with:
name: source
- name: Setup Java
@@ -233,7 +233,7 @@ jobs:
ref: ${{ env.RELEASE_COMMIT }}
- id: download_source
name: Download artifacts
- uses: actions/download-artifact@70fc10c6e5e1ce46ad2ea6f2b72d43f7d47b13c3 # v4.6.1
+ uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v4.6.1
with:
name: source
- id: setup-git
From 6449eb3cd2eabf78474bab9e6ae07bf51fb2830a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 18:43:26 +0100
Subject: [PATCH 027/116] chore: bump github/codeql-action from 4.32.5 to
4.33.0 (#2414)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.5 to 4.33.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/c793b717bc78562f491db7b0e93a3a178b099162...b1bff81932f5cdfc8695c7752dcee935dcd061c8)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: 4.33.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 23957036c..01bdf2621 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@c793b717bc78562f491db7b0e93a3a178b099162 # v3.29.5
+ uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v3.29.5
with:
sarif_file: results.sarif
From 0c10b7482684cd9060d8d73216b176d6e364117e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 18:43:35 +0100
Subject: [PATCH 028/116] chore: bump release-drafter/release-drafter from
6.2.0 to 7.0.0 (#2415)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 6.2.0 to 7.0.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/6db134d15f3909ccc9eefd369f02bd1e9cffdf97...3a7fb5c85b80b1dda66e1ccb94009adbbd32fce3)
---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
dependency-version: 7.0.0
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index 9ef7426f9..4b00ed541 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -23,6 +23,6 @@ jobs:
contents: write # required for creating draft releases
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@6db134d15f3909ccc9eefd369f02bd1e9cffdf97
+ uses: release-drafter/release-drafter@3a7fb5c85b80b1dda66e1ccb94009adbbd32fce3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From e35c5acbf651c546dcd20fcfd83519abd82ea2f0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 16 Mar 2026 19:22:38 +0100
Subject: [PATCH 029/116] chore: bump sam/build-java25 (#2406)
Bumps sam/build-java25 from `15e69d9` to `32b91ab`.
---
updated-dependencies:
- dependency-name: sam/build-java25
dependency-version: 32b91ab2cbab1eb7b165546f1788e1b113ea1c913aa68c16501458934692fcd2
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index 2b587e0a0..cb8ea7dcd 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:15e69d9776709e299d2913e546d8d7fb30b9ca0b66e4fce6f3beb41604242bd8
+FROM public.ecr.aws/sam/build-java25@sha256:32b91ab2cbab1eb7b165546f1788e1b113ea1c913aa68c16501458934692fcd2
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From 5c6bca27212aa9d6b938ee0ed68f75be454ef982 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 17 Mar 2026 11:53:25 +0100
Subject: [PATCH 030/116] chore: bump com.fasterxml.jackson:jackson-bom from
2.20.1 to 2.21.1 (#2403)
* chore: bump com.fasterxml.jackson:jackson-bom from 2.20.1 to 2.21.1
Bumps [com.fasterxml.jackson:jackson-bom](https://github.com/FasterXML/jackson-bom) from 2.20.1 to 2.21.1.
- [Commits](https://github.com/FasterXML/jackson-bom/compare/jackson-bom-2.20.1...jackson-bom-2.21.1)
---
updated-dependencies:
- dependency-name: com.fasterxml.jackson:jackson-bom
dependency-version: 2.21.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
* Pin GraalVM version in CI to 21.0.8 (temporary fix).
* Add comment why graalvm version was pinned.
---------
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Philipp Page
Co-authored-by: Philipp Page
---
.github/workflows/check-build.yml | 3 ++-
pom.xml | 2 +-
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index f8c79b1aa..d0d45354b 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -107,7 +107,8 @@ jobs:
- name: Setup GraalVM
uses: graalvm/setup-graalvm@f744c72a42b1995d7b0cbc314bde4bace7ac1fe1 # v1.5.0
with:
- java-version: "21"
+ # Pinned to 21.0.8 due to unsafeAllocated enforcement in 21.0.10+. See #2416
+ java-version: "21.0.8"
distribution: "graalvm"
cache: maven
- id: graalvm-native-test
diff --git a/pom.xml b/pom.xml
index f42f95299..a97929c28 100644
--- a/pom.xml
+++ b/pom.xml
@@ -84,7 +84,7 @@
3.1.2
2.25.3
2.0.17
- 2.20.1
+ 2.21.1
2.41.10
2.20.0
2.2.0
From 87f164435229b79d377884272ae28477106cf160 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 17 Mar 2026 13:23:46 +0100
Subject: [PATCH 031/116] chore: bump software.amazon.awscdk:aws-cdk-lib from
2.224.0 to 2.243.0 (#2418)
Bumps [software.amazon.awscdk:aws-cdk-lib](https://github.com/aws/aws-cdk) from 2.224.0 to 2.243.0.
- [Release notes](https://github.com/aws/aws-cdk/releases)
- [Changelog](https://github.com/aws/aws-cdk/blob/main/CHANGELOG.v2.alpha.md)
- [Commits](https://github.com/aws/aws-cdk/compare/v2.224.0...v2.243.0)
---
updated-dependencies:
- dependency-name: software.amazon.awscdk:aws-cdk-lib
dependency-version: 2.243.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
powertools-e2e-tests/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index e3ceb7e65..f71f446b6 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -7,7 +7,7 @@
2.9.0
UTF-8
- 2.224.0
+ 2.243.0
[10.0.0,11.0.0)
5.14.1
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index fec4dec92..6953b6781 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -31,7 +31,7 @@
11
11
10.4.3
- 2.224.0
+ 2.243.0
From 07f091c7fc21af75e749f68b73301d41720e0903 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 17 Mar 2026 13:23:51 +0100
Subject: [PATCH 032/116] chore: bump org.assertj:assertj-core in
/powertools-tracing (#2417)
Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.27.6 to 3.27.7.
- [Release notes](https://github.com/assertj/assertj/releases)
- [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.27.6...assertj-build-3.27.7)
---
updated-dependencies:
- dependency-name: org.assertj:assertj-core
dependency-version: 3.27.7
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index a97929c28..72ea31685 100644
--- a/pom.xml
+++ b/pom.xml
@@ -335,7 +335,7 @@
org.assertj
assertj-core
- 3.27.6
+ 3.27.7
test
From 0dc6279ce01271832c49fd06698ee61c5c8317f1 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 17 Mar 2026 13:23:56 +0100
Subject: [PATCH 033/116] chore: bump aws.sdk.version from 2.41.10 to 2.42.5
(#2400)
Bumps `aws.sdk.version` from 2.41.10 to 2.42.5.
Updates `software.amazon.awssdk:bom` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:http-client-spi` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:url-connection-client` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:s3` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:dynamodb` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:lambda` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:kinesis` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:cloudwatch` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:xray` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:sqs` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:cloudformation` from 2.41.10 to 2.42.5
Updates `software.amazon.awssdk:sts` from 2.41.10 to 2.42.5
---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
dependency-version: 2.42.5
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:http-client-spi
dependency-version: 2.42.5
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:url-connection-client
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:s3
dependency-version: 2.42.5
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:dynamodb
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:lambda
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:kinesis
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudwatch
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:xray
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:sqs
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudformation
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:sts
dependency-version: 2.42.5
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index fcee22d49..0ce5970cb 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.41.10
+ 2.42.14
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 72ea31685..30bc6e334 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
2.25.3
2.0.17
2.21.1
- 2.41.10
+ 2.42.14
2.20.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index c9a4826a2..3be06340f 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.41.10
+ 2.42.14
1.9.20.1
true
From dd7b9c546ddf79b38463bf14a32266f224930000 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Mar 2026 13:34:51 +0100
Subject: [PATCH 034/116] chore: bump
com.amazonaws:aws-lambda-java-runtime-interface-client (#2420)
Bumps [com.amazonaws:aws-lambda-java-runtime-interface-client](https://github.com/aws/aws-lambda-java-libs) from 2.8.7 to 2.9.0.
- [Commits](https://github.com/aws/aws-lambda-java-libs/commits)
---
updated-dependencies:
- dependency-name: com.amazonaws:aws-lambda-java-runtime-interface-client
dependency-version: 2.9.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-idempotency/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-serialization/sam-graalvm/pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 0ce5970cb..4c6976b25 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -77,7 +77,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.8.7
+ 2.9.0
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index cf50e5128..57a3663e7 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -49,7 +49,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.8.7
+ 2.9.0
org.apache.logging.log4j
diff --git a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
index 0536951aa..dc05bddbe 100644
--- a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
@@ -43,7 +43,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.8.7
+ 2.9.0
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index ee3631d8b..aaea139ee 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -49,7 +49,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.8.7
+ 2.9.0
org.apache.logging.log4j
diff --git a/examples/powertools-examples-serialization/sam-graalvm/pom.xml b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
index 5077c8989..73d02365c 100644
--- a/examples/powertools-examples-serialization/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
@@ -36,7 +36,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.8.7
+ 2.9.0
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 3be06340f..07cd3228d 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -131,7 +131,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.8.7
+ 2.9.0
From a78ecf7a49c02fcba48d42723a754d3ae1bb91e9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Mar 2026 13:35:11 +0100
Subject: [PATCH 035/116] chore: bump aws.sdk.version from 2.42.14 to 2.42.15
(#2421)
Bumps `aws.sdk.version` from 2.42.14 to 2.42.15.
Updates `software.amazon.awssdk:bom` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:http-client-spi` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:url-connection-client` from 2.41.11 to 2.42.15
Updates `software.amazon.awssdk:s3` from 2.41.11 to 2.42.15
Updates `software.amazon.awssdk:dynamodb` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:lambda` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:kinesis` from 2.41.11 to 2.42.15
Updates `software.amazon.awssdk:cloudwatch` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:xray` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:sqs` from 2.41.11 to 2.42.15
Updates `software.amazon.awssdk:cloudformation` from 2.42.14 to 2.42.15
Updates `software.amazon.awssdk:sts` from 2.42.14 to 2.42.15
---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
dependency-version: 2.42.15
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:http-client-spi
dependency-version: 2.42.15
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:url-connection-client
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:s3
dependency-version: 2.42.15
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:dynamodb
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:lambda
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:kinesis
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudwatch
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:xray
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:sqs
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudformation
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:sts
dependency-version: 2.42.15
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 4c6976b25..dc4d5857b 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.14
+ 2.42.15
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 30bc6e334..f54205f29 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
2.25.3
2.0.17
2.21.1
- 2.42.14
+ 2.42.15
2.20.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 07cd3228d..aabf2a1a0 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.14
+ 2.42.15
1.9.20.1
true
From c9a52fb5a5e9e54405cfbf32cbfddb20250588c7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 18 Mar 2026 13:35:21 +0100
Subject: [PATCH 036/116] chore: bump release-drafter/release-drafter from
7.0.0 to 7.1.0 (#2423)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 7.0.0 to 7.1.0.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/3a7fb5c85b80b1dda66e1ccb94009adbbd32fce3...44a942e465867c7465b76aa808ddca6e0acae5da)
---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
dependency-version: 7.1.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index 4b00ed541..951a0b0f9 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -23,6 +23,6 @@ jobs:
contents: write # required for creating draft releases
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@3a7fb5c85b80b1dda66e1ccb94009adbbd32fce3
+ uses: release-drafter/release-drafter@44a942e465867c7465b76aa808ddca6e0acae5da
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From d8a3e08169a21d2427993cdd8093084dec937917 Mon Sep 17 00:00:00 2001
From: Philipp Page
Date: Wed, 18 Mar 2026 13:46:15 +0100
Subject: [PATCH 037/116] chore: modernize native maven profiles to using
configuration and move to root pom. Update CI removing unnecessary
metadata generation step. (#2419)
---
.github/workflows/check-build.yml | 11 ++--
GraalVM.md | 41 +++++++-----
.../demo/kafka/protobuf/ProtobufProduct.java | 4 +-
.../protobuf/ProtobufProductOrBuilder.java | 2 +-
.../protobuf/ProtobufProductOuterClass.java | 4 +-
pom.xml | 63 +++++++++++++++++++
powertools-cloudformation/pom.xml | 53 +++-------------
powertools-common/pom.xml | 53 ++--------------
.../powertools-idempotency-core/pom.xml | 53 ++--------------
.../powertools-idempotency-dynamodb/pom.xml | 46 +++-----------
powertools-logging/pom.xml | 46 ++------------
.../powertools-logging-log4j/pom.xml | 46 +++-----------
.../powertools-logging-logback/pom.xml | 46 +++-----------
powertools-metrics/pom.xml | 53 ++--------------
powertools-parameters/pom.xml | 46 ++------------
.../powertools-parameters-appconfig/pom.xml | 54 ++--------------
.../powertools-parameters-dynamodb/pom.xml | 54 ++--------------
.../powertools-parameters-secrets/pom.xml | 54 ++--------------
.../powertools-parameters-ssm/pom.xml | 54 ++--------------
.../powertools-parameters-tests/pom.xml | 54 ++--------------
powertools-serialization/pom.xml | 43 ++-----------
powertools-tracing/pom.xml | 53 +++-------------
22 files changed, 199 insertions(+), 734 deletions(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index d0d45354b..9ba6e2fe9 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -124,9 +124,9 @@ jobs:
echo "Changes detected in powertools modules: $CHANGED_FILES"
- # Find modules with graalvm-native profile and run tests
+ # Find modules with native profile and run tests with the tracing agent
find . -name "pom.xml" -path "./powertools-*" | while read module; do
- if grep -q "graalvm-native " "$module"; then
+ if grep -q "native " "$module"; then
module_dir=$(dirname "$module")
module_name=$(basename "$module_dir")
@@ -135,11 +135,8 @@ jobs:
echo " $CHANGED_FILES " | grep -q " pom.xml " || \
echo "$CHANGED_FILES" | grep -q "powertools-common/"; then
echo "::group::Building $module_name with GraalVM"
- echo "Changes detected in $module_name - running GraalVM tests"
- echo "Regenerating GraalVM metadata for $module_dir"
- mvn -B -q -f "$module" -Pgenerate-graalvm-files clean test
- echo "Running GraalVM native tests for $module_dir"
- mvn -B -q -f "$module" -Pgraalvm-native test
+ echo "Changes detected in $module_name - running GraalVM native tests"
+ mvn -B -q -f "$module" -Pnative -Dagent=true clean test
echo "::endgroup::"
else
echo "No changes detected in $module_name - skipping GraalVM tests"
diff --git a/GraalVM.md b/GraalVM.md
index bbddb5e3b..28004714d 100644
--- a/GraalVM.md
+++ b/GraalVM.md
@@ -19,26 +19,33 @@ GraalVM native image compilation requires complete knowledge of an application's
In order to generate the metadata reachability files for Powertools for Lambda, follow these general steps.
-1. **Add Maven Profiles**
- - Add profile for generating GraalVM reachability metadata files. You can find an example of this in profile `generate-graalvm-files` of this [pom.xml](powertools-common/pom.xml).
- - Add another profile for running the tests in the native image. You can find and example of this in profile `graalvm-native` of this [pom.xml](powertools-common/pom.xml).
+1. **Add the `native` Maven Profile**
+ - The root `pom.xml` provides a shared `pluginManagement` configuration for the `native-maven-plugin` with the `` configuration, common `buildArgs`, and the `test-native` execution.
+ - Each module only needs to define a `native` profile that specifies module-specific configuration: `imageName` and `metadataCopy.outputDirectory`. You can find an example in the `native` profile of this [pom.xml](powertools-common/pom.xml).
+ - If a module needs extra `buildArgs` beyond the common ones, use `` to add them without overriding the parent configuration.
2. **Generate Reachability Metadata**
- Set the `JAVA_HOME` environment variable to use GraalVM
- - Run tests with `-Pgenerate-graalvm-files` profile.
+ - Run tests with the `-Dagent=true` flag to attach the GraalVM tracing agent to the test execution:
```shell
-mvn -Pgenerate-graalvm-files clean test
+mvn -Pnative -Dagent=true clean test
```
-3. **Validate Native Image Tests**
+3. **Copy Metadata to Source**
+ - Copy the generated metadata from the agent output directory to the module's `src/main/resources` directory:
+```shell
+mvn -Pnative native:metadata-copy
+```
+
+4. **Validate Native Image Tests**
- Set the `JAVA_HOME` environment variable to use GraalVM
- - Run tests with `-Pgraalvm-native` profile. This will build a GraalVM native image and run the JUnit tests.
+ - Run tests with `-Pnative` profile. This will build a GraalVM native image and run the JUnit tests.
```shell
-mvn -Pgraalvm-native clean test
+mvn -Pnative test
```
-4. **Clean Up Metadata**
- - GraalVM metadata reachability files generated in Step 2 contains references to the test scoped dependencies as well.
+5. **Clean Up Metadata**
+ - GraalVM metadata reachability files generated in Step 2 contain references to the test scoped dependencies as well.
- Remove the references in generated metadata files for the following (and any other references to test scoped resources and classes):
- JUnit
- Mockito
@@ -46,17 +53,21 @@ mvn -Pgraalvm-native clean test
## Known Issues and Solutions
1. **Mockito Compatibility**
- - Powertools uses Mockito 5.x which uses “inline mock maker” as the default. This mock maker does not play well with GraalVM. Mockito [recommends](https://github.com/mockito/mockito/releases/tag/v5.0.0) using subclass mock maker with GraalVM. Therefore `generate-graalvm-files` profile uses subclass mock maker instead of inline mock maker.
+ - Powertools uses Mockito 5.x which uses "inline mock maker" as the default. This mock maker does not play well with GraalVM. Mockito [recommends](https://github.com/mockito/mockito/releases/tag/v5.0.0) using subclass mock maker with GraalVM. Therefore the `native` profile adds the `mockito-subclass` dependency where needed.
- Subclass mock maker does not support testing static methods. Tests have therefore been modified to use [JUnit Pioneer](https://junit-pioneer.org/docs/environment-variables/) to inject the environment variables in the scope of the test's execution.
-2. **Log4j Compatibility**
+2. **Unsafe Allocation Tracing**
+ - GraalVM 21.0.10+ requires `"unsafeAllocated": true` in `reflect-config.json` for classes instantiated via `Unsafe.allocateInstance()`. Mockito uses Objenesis which relies on this.
+ - The `enableExperimentalUnsafeAllocationTracing` option is enabled in the root `pluginManagement` agent configuration to address this.
+
+3. **Log4j Compatibility**
- Version 2.22.1 fails with this error
```
java.lang.InternalError: com.oracle.svm.core.jdk.UnsupportedFeatureError: Defining hidden classes at runtime is not supported.
```
- This has been [fixed](https://github.com/apache/logging-log4j2/discussions/2364#discussioncomment-8950077) in Log4j 2.24.x. PT has been updated to use this version of Log4j
-3. **Test Class Organization**
+4. **Test Class Organization**
- **Issue**: Anonymous inner classes and lambda expressions in Mockito matchers cause `NoSuchMethodError` in GraalVM native tests
- **Solution**:
- Extract static inner test classes to separate concrete classes in the same package as the class under test
@@ -72,12 +83,12 @@ java.lang.InternalError: com.oracle.svm.core.jdk.UnsupportedFeatureError: Defini
})
```
-4. **Package Visibility Issues**
+5. **Package Visibility Issues**
- **Issue**: Test handler classes cannot access package-private methods when placed in subpackages
- **Solution**: Place test handler classes in the same package as the class under test, not in subpackages like `handlers/`
- **Example**: Use `software.amazon.lambda.powertools.cloudformation` instead of `software.amazon.lambda.powertools.cloudformation.handlers`
-5. **Test Stubs Best Practice**
+6. **Test Stubs Best Practice**
- **Best Practice**: Avoid mocking where possible and use concrete test stubs provided by `powertools-common` package
- **Solution**: Use `TestLambdaContext` and other test stubs from `powertools-common` test-jar instead of Mockito mocks
- **Implementation**: Add `powertools-common` test-jar dependency and replace `mock(Context.class)` with `new TestLambdaContext()`
diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java
index 196c0fa52..99c490869 100644
--- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java
+++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProduct.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: ProtobufProduct.proto
-// Protobuf Java Version: 4.33.2
+// Protobuf Java Version: 4.33.4
package org.demo.kafka.protobuf;
@@ -19,7 +19,7 @@ public final class ProtobufProduct extends
com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
/* major= */ 4,
/* minor= */ 33,
- /* patch= */ 2,
+ /* patch= */ 4,
/* suffix= */ "",
"ProtobufProduct");
}
diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java
index 714a2c110..462d3a66d 100644
--- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java
+++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOrBuilder.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: ProtobufProduct.proto
-// Protobuf Java Version: 4.33.2
+// Protobuf Java Version: 4.33.4
package org.demo.kafka.protobuf;
diff --git a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java
index abefa922f..3edc97e12 100644
--- a/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java
+++ b/examples/powertools-examples-kafka/src/main/java/org/demo/kafka/protobuf/ProtobufProductOuterClass.java
@@ -1,7 +1,7 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: ProtobufProduct.proto
-// Protobuf Java Version: 4.33.2
+// Protobuf Java Version: 4.33.4
package org.demo.kafka.protobuf;
@@ -13,7 +13,7 @@ private ProtobufProductOuterClass() {}
com.google.protobuf.RuntimeVersion.RuntimeDomain.PUBLIC,
/* major= */ 4,
/* minor= */ 33,
- /* patch= */ 2,
+ /* patch= */ 4,
/* suffix= */ "",
"ProtobufProductOuterClass");
}
diff --git a/pom.xml b/pom.xml
index f54205f29..976c57768 100644
--- a/pom.xml
+++ b/pom.xml
@@ -117,6 +117,7 @@
5.21.0
2.3.0
1.5.0
+ 0.11.5
@@ -450,6 +451,45 @@
exec-maven-plugin
3.6.2
+
+ org.graalvm.buildtools
+ native-maven-plugin
+ ${native-maven-plugin.version}
+ true
+
+
+ test-native
+
+ test
+
+ test
+
+
+
+
+ true
+
+ true
+ true
+
+
+
+ main
+
+ false
+
+
+
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens java.base/java.lang=ALL-UNNAMED
+ --no-fallback
+ --verbose
+ --native-image-info
+ -H:+UnlockExperimentalVMOptions
+ -H:+ReportExceptionStackTraces
+
+
+
@@ -635,6 +675,29 @@
+
+
+ native
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ --add-opens java.base/java.util=ALL-UNNAMED --add-opens java.base/java.lang=ALL-UNNAMED
+
+
+
+
+
+
diff --git a/powertools-cloudformation/pom.xml b/powertools-cloudformation/pom.xml
index cb06dc1f3..4c3d2ac70 100644
--- a/powertools-cloudformation/pom.xml
+++ b/powertools-cloudformation/pom.xml
@@ -120,33 +120,7 @@
- generate-graalvm-files
-
-
- org.mockito
- mockito-subclass
- test
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-cloudformation,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
+ native
org.mockito
@@ -159,28 +133,15 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-cloudformation
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-cloudformation
+
+
+
--enable-url-protocols=http
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
diff --git a/powertools-common/pom.xml b/powertools-common/pom.xml
index 75ef10beb..cd43df238 100644
--- a/powertools-common/pom.xml
+++ b/powertools-common/pom.xml
@@ -93,33 +93,7 @@
- generate-graalvm-files
-
-
- org.mockito
- mockito-subclass
- test
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-common,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
+ native
org.mockito
@@ -132,28 +106,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-common
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-common
+
+
diff --git a/powertools-idempotency/powertools-idempotency-core/pom.xml b/powertools-idempotency/powertools-idempotency-core/pom.xml
index 4cba1956f..0676be3fe 100644
--- a/powertools-idempotency/powertools-idempotency-core/pom.xml
+++ b/powertools-idempotency/powertools-idempotency-core/pom.xml
@@ -75,33 +75,7 @@
- generate-graalvm-files
-
-
- org.mockito
- mockito-subclass
- test
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-idempotency-core,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
+ native
org.mockito
@@ -114,28 +88,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-idempotency-core
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-idempotency-core
+
+
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
index d223e0d2f..e7101da6f 100644
--- a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
+++ b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
@@ -107,7 +107,7 @@
- generate-graalvm-files
+ native
org.junit.jupiter
@@ -141,28 +114,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-parameters-appconfig
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-appconfig
+
+
diff --git a/powertools-parameters/powertools-parameters-dynamodb/pom.xml b/powertools-parameters/powertools-parameters-dynamodb/pom.xml
index eb5604046..ff4be1ab6 100644
--- a/powertools-parameters/powertools-parameters-dynamodb/pom.xml
+++ b/powertools-parameters/powertools-parameters-dynamodb/pom.xml
@@ -96,40 +96,13 @@
- generate-graalvm-files
+ native
org.mockito
mockito-subclass
test
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-dynamodb,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
-
-
- org.mockito
- mockito-subclass
- test
-
-
org.junit.jupiter
@@ -142,28 +115,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-parameters-dynamodb
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-dynamodb
+
+
diff --git a/powertools-parameters/powertools-parameters-secrets/pom.xml b/powertools-parameters/powertools-parameters-secrets/pom.xml
index b9535269e..2dddedec2 100644
--- a/powertools-parameters/powertools-parameters-secrets/pom.xml
+++ b/powertools-parameters/powertools-parameters-secrets/pom.xml
@@ -96,40 +96,13 @@
- generate-graalvm-files
+ native
org.mockito
mockito-subclass
test
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-secrets,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
-
-
- org.mockito
- mockito-subclass
- test
-
-
org.junit.jupiter
@@ -142,28 +115,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-parameters-secrets
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-secrets
+
+
diff --git a/powertools-parameters/powertools-parameters-ssm/pom.xml b/powertools-parameters/powertools-parameters-ssm/pom.xml
index e0253e10b..fac44f57f 100644
--- a/powertools-parameters/powertools-parameters-ssm/pom.xml
+++ b/powertools-parameters/powertools-parameters-ssm/pom.xml
@@ -109,40 +109,13 @@
- generate-graalvm-files
+ native
org.mockito
mockito-subclass
test
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-ssm,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
-
-
- org.mockito
- mockito-subclass
- test
-
-
org.junit.jupiter
@@ -155,28 +128,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-parameters-ssm
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-ssm
+
+
diff --git a/powertools-parameters/powertools-parameters-tests/pom.xml b/powertools-parameters/powertools-parameters-tests/pom.xml
index fa2542730..289a86ecb 100644
--- a/powertools-parameters/powertools-parameters-tests/pom.xml
+++ b/powertools-parameters/powertools-parameters-tests/pom.xml
@@ -97,40 +97,13 @@
- generate-graalvm-files
+ native
org.mockito
mockito-subclass
test
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
-
-
- org.mockito
- mockito-subclass
- test
-
-
org.junit.jupiter
@@ -143,28 +116,13 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-parameters
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters
+
+
diff --git a/powertools-serialization/pom.xml b/powertools-serialization/pom.xml
index 81603cd4f..45a724ba6 100644
--- a/powertools-serialization/pom.xml
+++ b/powertools-serialization/pom.xml
@@ -101,50 +101,19 @@
- generate-graalvm-files
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-serialization,experimental-class-define-support
-
-
-
-
-
-
- graalvm-native
+ native
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-serialization
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
-
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-serialization
+
+
diff --git a/powertools-tracing/pom.xml b/powertools-tracing/pom.xml
index a9bb8e61e..b70c23262 100644
--- a/powertools-tracing/pom.xml
+++ b/powertools-tracing/pom.xml
@@ -172,33 +172,7 @@
- generate-graalvm-files
-
-
- org.mockito
- mockito-subclass
- test
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- -Dorg.graalvm.nativeimage.imagecode=agent
- -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-tracing,experimental-class-define-support
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
-
-
-
-
-
-
-
- graalvm-native
+ native
org.mockito
@@ -211,28 +185,15 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
- true
-
-
- test-native
-
- test
-
- test
-
-
powertools-tracing
-
- --add-opens java.base/java.util=ALL-UNNAMED
- --add-opens java.base/java.lang=ALL-UNNAMED
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-tracing
+
+
+
--enable-url-protocols=http
- --no-fallback
- --verbose
- --native-image-info
- -H:+UnlockExperimentalVMOptions
- -H:+ReportExceptionStackTraces
From 480bb4b78bbee2dc2df9be35095cb2f3ec033e51 Mon Sep 17 00:00:00 2001
From: Philipp Page
Date: Thu, 19 Mar 2026 11:31:16 +0100
Subject: [PATCH 038/116] feat(lmds): Add support for Lambda Metadata Service
(#2424)
* feat(lmds): Add powertools-lambda-metadata package.
* Remove unncessary docstring.
* Enable HTTP protocol for native tests.
* Add docs.
* Add powertools-lambda-metadata utility in GH actions workflows paths.
* Remove refresh() method from public API surface area.
* Move validation logic to getRequiredEnvironmentVar.
* Docs for testing your code.
* Add E2E tests.
* Adjust lmds utility pom.xml to modernized tracing agent config.
* Fix E2E tests to return proper json for parsing in test suite.
* Print function error on failure in E2E tests.
* Add reflect-config.json for powertools-lambda-metadata.
---
.github/workflows/check-build.yml | 2 +
.github/workflows/check-e2e.yml | 1 +
.github/workflows/check-spotbugs.yml | 1 +
docs/utilities/lambda_metadata.md | 324 +
mkdocs.yml | 2 +
pom.xml | 1 +
powertools-e2e-tests/README.md | 16 +-
.../handlers/lambda-metadata/pom.xml | 56 +
.../lambda/powertools/e2e/Function.java | 30 +
.../aws-lambda-java-core/reflect-config.json | 13 +
.../reflect-config.json | 35 +
.../jni-config.json | 11 +
.../native-image.properties | 1 +
.../reflect-config.json | 62 +
.../resource-config.json | 19 +
.../reflect-config.json | 25 +
.../reflect-config.json | 11 +
powertools-e2e-tests/handlers/pom.xml | 6 +
powertools-e2e-tests/pom.xml | 1 +
.../lambda/powertools/LambdaMetadataE2ET.java | 95 +
.../testutils/lambda/InvocationResult.java | 6 +
powertools-lambda-metadata/pom.xml | 167 +
.../powertools/metadata/LambdaMetadata.java | 72 +
.../metadata/LambdaMetadataClient.java | 169 +
.../exception/LambdaMetadataException.java | 74 +
.../internal/LambdaMetadataHttpClient.java | 154 +
.../reflect-config.json | 35 +
.../src/main/resources/classesloaded.txt | 7923 +++++++++++++++++
.../LambdaMetadataClientConcurrencyTest.java | 84 +
.../metadata/LambdaMetadataClientTest.java | 128 +
.../metadata/LambdaMetadataTest.java | 68 +
.../LambdaMetadataExceptionTest.java | 58 +
.../LambdaMetadataHttpClientTest.java | 170 +
33 files changed, 9814 insertions(+), 6 deletions(-)
create mode 100644 docs/utilities/lambda_metadata.md
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/pom.xml
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
create mode 100644 powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
create mode 100644 powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LambdaMetadataE2ET.java
create mode 100644 powertools-lambda-metadata/pom.xml
create mode 100644 powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadata.java
create mode 100644 powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClient.java
create mode 100644 powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataException.java
create mode 100644 powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClient.java
create mode 100644 powertools-lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-lambda-metadata/reflect-config.json
create mode 100644 powertools-lambda-metadata/src/main/resources/classesloaded.txt
create mode 100644 powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientConcurrencyTest.java
create mode 100644 powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientTest.java
create mode 100644 powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataTest.java
create mode 100644 powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataExceptionTest.java
create mode 100644 powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClientTest.java
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 9ba6e2fe9..76f6f1a67 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -30,6 +30,7 @@ on:
- 'powertools-tracing/**'
- 'powertools-tracing/**'
- 'powertools-validation/**'
+ - 'powertools-lambda-metadata/**'
- 'examples/**'
- 'pom.xml'
- 'examples/pom.xml'
@@ -54,6 +55,7 @@ on:
- 'powertools-tracing/**'
- 'powertools-tracing/**'
- 'powertools-validation/**'
+ - 'powertools-lambda-metadata/**'
- 'pom.xml'
- 'examples/**'
- 'examples/pom.xml'
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index daf079efe..4cf7234c9 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -31,6 +31,7 @@ on:
- 'powertools-tracing/**'
- 'powertools-tracing/**'
- 'powertools-validation/**'
+ - 'powertools-lambda-metadata/**'
- 'pom.xml'
name: E2E Tests
diff --git a/.github/workflows/check-spotbugs.yml b/.github/workflows/check-spotbugs.yml
index 4e5fbcea3..a64bc6e86 100644
--- a/.github/workflows/check-spotbugs.yml
+++ b/.github/workflows/check-spotbugs.yml
@@ -28,6 +28,7 @@ on:
- 'powertools-tracing/**'
- 'powertools-validation/**'
- 'powertools-test-suite/**'
+ - 'powertools-lambda-metadata/**'
- 'pom.xml'
- '.github/workflows/**'
diff --git a/docs/utilities/lambda_metadata.md b/docs/utilities/lambda_metadata.md
new file mode 100644
index 000000000..e79af2e32
--- /dev/null
+++ b/docs/utilities/lambda_metadata.md
@@ -0,0 +1,324 @@
+---
+title: Lambda Metadata
+description: Utility
+---
+
+Lambda Metadata provides idiomatic access to the Lambda Metadata Endpoint (LMDS), eliminating boilerplate code for retrieving execution environment metadata like Availability Zone ID.
+
+## Key features
+
+* Retrieve Lambda execution environment metadata with a single method call
+* Automatic caching for the sandbox lifetime, avoiding repeated HTTP calls
+* Thread-safe access for concurrent executions (compatible with [Lambda Managed Instances](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html){target="_blank"})
+* Automatic [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html){target="_blank"} cache invalidation via [CRaC](https://openjdk.org/projects/crac/){target="_blank"} integration
+* Lightweight with minimal external dependencies, using built-in `HttpURLConnection`
+* GraalVM support
+
+## Getting started
+
+### Installation
+
+=== "Maven"
+
+ ```xml hl_lines="3-7"
+
+ ...
+
+ software.amazon.lambda
+ powertools-lambda-metadata
+ {{ powertools.version }}
+
+ ...
+
+ ```
+
+=== "Gradle"
+
+ ```groovy hl_lines="6"
+ repositories {
+ mavenCentral()
+ }
+
+ dependencies {
+ implementation 'software.amazon.lambda:powertools-lambda-metadata:{{ powertools.version }}'
+ }
+
+ sourceCompatibility = 11
+ targetCompatibility = 11
+ ```
+
+### IAM Permissions
+
+No additional IAM permissions are required. The Lambda Metadata Endpoint is available within the Lambda execution environment and uses a Bearer token provided automatically via environment variables.
+
+### Basic usage
+
+Retrieve metadata using `LambdaMetadataClient.get()`:
+
+=== "App.java"
+
+ ```java hl_lines="1 2 9 10"
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+
+ public class App implements RequestHandler {
+
+ @Override
+ public String handleRequest(Object input, Context context) {
+ // Fetch metadata (automatically cached after first call)
+ LambdaMetadata metadata = LambdaMetadataClient.get();
+ String azId = metadata.getAvailabilityZoneId(); // e.g., "use1-az1"
+
+ return "{\"az\": \"" + azId + "\"}";
+ }
+ }
+ ```
+
+!!! info "At launch, only `availabilityZoneId` is available. The API is designed to support additional metadata fields as LMDS evolves."
+
+### Caching behavior
+
+Metadata is **cached automatically** after the first call. Subsequent calls return the cached value without making HTTP requests.
+
+=== "CachingExample.java"
+
+ ```java hl_lines="9 12"
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+
+ public class CachingExample implements RequestHandler {
+
+ @Override
+ public String handleRequest(Object input, Context context) {
+ // First call: fetches from endpoint and caches
+ LambdaMetadata metadata = LambdaMetadataClient.get();
+
+ // Subsequent calls: returns cached value (no HTTP call)
+ LambdaMetadata metadataAgain = LambdaMetadataClient.get();
+
+ // Both return the same cached instance
+ assert metadata == metadataAgain;
+
+ return "{\"az\": \"" + metadata.getAvailabilityZoneId() + "\"}";
+ }
+ }
+ ```
+
+This is safe because metadata (like Availability Zone) never changes during a sandbox's lifetime.
+
+## Advanced
+
+### Eager loading at module level
+
+For predictable latency, fetch metadata at class initialization:
+
+=== "EagerLoadingExample.java"
+
+ ```java hl_lines="7"
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+
+ public class EagerLoadingExample implements RequestHandler {
+
+ // Fetch during cold start (class loading)
+ private static final LambdaMetadata METADATA = LambdaMetadataClient.get();
+
+ @Override
+ public String handleRequest(Object input, Context context) {
+ // No latency hit here - already cached
+ return "{\"az\": \"" + METADATA.getAvailabilityZoneId() + "\"}";
+ }
+ }
+ ```
+
+#### SnapStart considerations
+
+When using [SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html){target="_blank"}, the function may restore in a different Availability Zone. The utility automatically handles this by registering with CRaC to invalidate the cache after restore.
+
+Using the same eager loading pattern above, the cache is automatically invalidated on SnapStart restore, ensuring subsequent calls to `LambdaMetadataClient.get()` return refreshed metadata.
+
+!!! note "For module-level usage with SnapStart, ensure `LambdaMetadataClient` is referenced during initialization so the CRaC hook registers before the snapshot is taken."
+
+### Lambda Managed Instances
+
+For [Lambda Managed Instances](https://docs.aws.amazon.com/lambda/latest/dg/lambda-managed-instances.html){target="_blank"} (multi-threaded concurrency), no changes are needed. The utility uses thread-safe caching with `AtomicReference` to ensure correct behavior across concurrent executions on the same instance.
+
+=== "ManagedInstanceHandler.java"
+
+ ```java hl_lines="9"
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+
+ public class ManagedInstanceHandler implements RequestHandler {
+
+ @Override
+ public String handleRequest(Object input, Context context) {
+ // Thread-safe: multiple concurrent invocations safely share cached metadata
+ LambdaMetadata metadata = LambdaMetadataClient.get();
+ return "{\"az\": \"" + metadata.getAvailabilityZoneId() + "\"}";
+ }
+ }
+ ```
+
+### Error handling
+
+The utility throws `LambdaMetadataException` when the metadata endpoint is unavailable or returns an error:
+
+=== "ErrorHandlingExample.java"
+
+ ```java hl_lines="2 7 14 18 21"
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.exception.LambdaMetadataException;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+ import software.amazon.lambda.powertools.logging.Logging;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import static software.amazon.lambda.powertools.logging.argument.StructuredArguments.entry;
+
+ public class ErrorHandlingExample implements RequestHandler {
+
+ private static final Logger LOG = LoggerFactory.getLogger(ErrorHandlingExample.class);
+
+ @Override
+ @Logging
+ public String handleRequest(Object input, Context context) {
+ String az;
+ try {
+ LambdaMetadata metadata = LambdaMetadataClient.get();
+ az = metadata.getAvailabilityZoneId();
+ } catch (LambdaMetadataException e) {
+ LOG.warn("Could not fetch metadata", entry("statusCode", e.getStatusCode()), entry("error", e.getMessage()));
+ az = "unknown";
+ }
+
+ return "{\"az\": \"" + az + "\"}";
+ }
+ }
+ ```
+
+## Testing your code
+
+When running outside a Lambda execution environment (e.g., in unit tests), the `AWS_LAMBDA_METADATA_API` and `AWS_LAMBDA_METADATA_TOKEN` environment variables are not available. Calling `LambdaMetadataClient.get()` in this context throws a `LambdaMetadataException`.
+
+### Mocking LambdaMetadataClient
+
+For tests where you need to control the metadata values, use Mockito's `mockStatic` to mock `LambdaMetadataClient.get()`:
+
+=== "MockedMetadataTest.java"
+
+ ```java hl_lines="15-17"
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+ import org.mockito.MockedStatic;
+ import org.junit.jupiter.api.Test;
+ import static org.assertj.core.api.Assertions.assertThat;
+ import static org.mockito.Mockito.*;
+
+ class MockedMetadataTest {
+
+ @Test
+ void shouldUseMetadataInHandler() {
+ LambdaMetadata mockMetadata = mock(LambdaMetadata.class);
+ when(mockMetadata.getAvailabilityZoneId()).thenReturn("use1-az1");
+
+ try (MockedStatic mockedClient =
+ mockStatic(LambdaMetadataClient.class)) {
+ mockedClient.when(LambdaMetadataClient::get).thenReturn(mockMetadata);
+
+ App handler = new App();
+ String result = handler.handleRequest(null, null);
+
+ assertThat(result).contains("use1-az1");
+ }
+ }
+ }
+ ```
+
+### Using WireMock
+
+For integration tests, you can use [WireMock](https://wiremock.org/){target="_blank"} to mock the metadata HTTP endpoint. Set `AWS_LAMBDA_METADATA_API` and `AWS_LAMBDA_METADATA_TOKEN` environment variables using [junit-pioneer](https://junit-pioneer.org/docs/environment-variables/){target="_blank"}, and stub the endpoint response:
+
+=== "WireMockMetadataTest.java"
+
+ ```java hl_lines="10-12"
+ import static com.github.tomakehurst.wiremock.client.WireMock.*;
+ import static org.assertj.core.api.Assertions.assertThat;
+
+ import com.github.tomakehurst.wiremock.junit5.WireMockTest;
+ import org.junitpioneer.jupiter.SetEnvironmentVariable;
+ import org.junit.jupiter.api.Test;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient;
+
+ @WireMockTest(httpPort = 8089)
+ @SetEnvironmentVariable(key = "AWS_LAMBDA_METADATA_API", value = "localhost:8089")
+ @SetEnvironmentVariable(key = "AWS_LAMBDA_METADATA_TOKEN", value = "test-token")
+ class WireMockMetadataTest {
+
+ @Test
+ void shouldFetchMetadataFromEndpoint() {
+ stubFor(get(urlEqualTo("/2026-01-15/metadata/execution-environment"))
+ .withHeader("Authorization", equalTo("Bearer test-token"))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBody("{\"AvailabilityZoneID\": \"use1-az1\"}")));
+
+ LambdaMetadataHttpClient client = new LambdaMetadataHttpClient();
+ LambdaMetadata metadata = client.fetchMetadata();
+
+ assertThat(metadata.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ }
+ }
+ ```
+
+## Using with other Powertools utilities
+
+Lambda Metadata integrates seamlessly with other Powertools utilities to enrich your observability data with Availability Zone information.
+
+=== "IntegratedExample.java"
+
+ ```java
+ import software.amazon.lambda.powertools.logging.Logging;
+ import software.amazon.lambda.powertools.tracing.Tracing;
+ import software.amazon.lambda.powertools.tracing.TracingUtils;
+ import software.amazon.lambda.powertools.metrics.FlushMetrics;
+ import software.amazon.lambda.powertools.metrics.Metrics;
+ import software.amazon.lambda.powertools.metrics.MetricsFactory;
+ import software.amazon.lambda.powertools.metrics.model.MetricUnit;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+ import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ import org.slf4j.MDC;
+
+ public class IntegratedExample implements RequestHandler {
+
+ private static final Logger LOG = LoggerFactory.getLogger(IntegratedExample.class);
+ private static final Metrics metrics = MetricsFactory.getMetricsInstance();
+
+ @Logging
+ @Tracing
+ @FlushMetrics(captureColdStart = true)
+ @Override
+ public String handleRequest(Object input, Context context) {
+ LambdaMetadata metadata = LambdaMetadataClient.get();
+ String azId = metadata.getAvailabilityZoneId();
+
+ // Add AZ as dimension for all metrics
+ metrics.addDimension("availability_zone_id", azId);
+
+ // Add AZ to structured logs
+ MDC.put("availability_zone_id", azId);
+ LOG.info("Processing request");
+
+ // Add AZ to traces
+ TracingUtils.putAnnotation("availability_zone_id", azId);
+
+ // Add metrics
+ metrics.addMetric("RequestProcessed", 1, MetricUnit.COUNT);
+
+ return "{\"status\": \"ok\"}";
+ }
+ }
+ ```
diff --git a/mkdocs.yml b/mkdocs.yml
index b52b88cca..fea59aae0 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -22,6 +22,7 @@ nav:
- utilities/validation.md
- utilities/custom_resources.md
- utilities/serialization.md
+ - utilities/lambda_metadata.md
- Processes:
- processes/maintainers.md
- "Versioning policy": processes/versioning.md
@@ -114,6 +115,7 @@ plugins:
- utilities/batch.md
- utilities/kafka.md
- utilities/large_messages.md
+ - utilities/lambda_metadata.md
- utilities/validation.md
- utilities/custom_resources.md
- utilities/serialization.md
diff --git a/pom.xml b/pom.xml
index 976c57768..75bdf6187 100644
--- a/pom.xml
+++ b/pom.xml
@@ -70,6 +70,7 @@
powertools-e2e-tests
powertools-e2e-tests/handlers
powertools-batch
+ powertools-lambda-metadata
powertools-parameters/powertools-parameters-ssm
powertools-parameters/powertools-parameters-secrets
powertools-parameters/powertools-parameters-dynamodb
diff --git a/powertools-e2e-tests/README.md b/powertools-e2e-tests/README.md
index 61799e6f7..25571875e 100644
--- a/powertools-e2e-tests/README.md
+++ b/powertools-e2e-tests/README.md
@@ -1,16 +1,20 @@
## End-to-end tests
-This module is internal and meant to be used for end-to-end (E2E) testing of Powertools for AWS Lambda (Java).
-__Prerequisites__:
-- An AWS account is needed as well as a local environment able to reach this account
-([credentials](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html)).
+This module is internal and meant to be used for end-to-end (E2E) testing of Powertools for AWS Lambda (Java).
+
+**Prerequisites**:
+
+- An AWS account is needed as well as a local environment able to reach this account
+ ([credentials](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials.html)).
- [Java 11+](https://docs.aws.amazon.com/corretto/latest/corretto-11-ug/downloads-list.html)
-- [Docker](https://docs.docker.com/engine/install/)
+- [Docker](https://docs.docker.com/engine/install/) (or [Finch](https://github.com/runfinch/finch) — if using Finch, set `export CDK_DOCKER=finch` before running tests)
To execute the E2E tests, use the following command: `export JAVA_VERSION=11 && mvn clean verify -Pe2e`
### Under the hood
+
This module leverages the following components:
+
- AWS CDK to define the infrastructure and synthesize a CloudFormation template and the assets (lambda function packages)
- The AWS S3 SDK to push the assets on S3
-- The AWS CloudFormation SDK to deploy the template
\ No newline at end of file
+- The AWS CloudFormation SDK to deploy the template
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/pom.xml b/powertools-e2e-tests/handlers/lambda-metadata/pom.xml
new file mode 100644
index 000000000..eb69c1d47
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/pom.xml
@@ -0,0 +1,56 @@
+
+ 4.0.0
+
+
+ software.amazon.lambda
+ e2e-test-handlers-parent
+ 2.9.0
+
+
+ e2e-test-handler-lambda-metadata
+ jar
+ E2E test handler – Lambda Metadata
+
+
+
+ software.amazon.lambda
+ powertools-lambda-metadata
+
+
+ com.amazonaws
+ aws-lambda-java-runtime-interface-client
+
+
+ com.amazonaws
+ aws-lambda-java-core
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+
+
+
+
+
+
+ native-image
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+
+
+
+
+
+
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/java/software/amazon/lambda/powertools/e2e/Function.java b/powertools-e2e-tests/handlers/lambda-metadata/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
new file mode 100644
index 000000000..656ab81eb
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/java/software/amazon/lambda/powertools/e2e/Function.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.e2e;
+
+import java.util.Map;
+
+import com.amazonaws.services.lambda.runtime.Context;
+import com.amazonaws.services.lambda.runtime.RequestHandler;
+import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+import software.amazon.lambda.powertools.metadata.LambdaMetadataClient;
+
+public class Function implements RequestHandler> {
+
+ public Map handleRequest(Object input, Context context) {
+ LambdaMetadata metadata = LambdaMetadataClient.get();
+ return Map.of("availabilityZoneId", metadata.getAvailabilityZoneId());
+ }
+}
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
new file mode 100644
index 000000000..2780aca09
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-core/reflect-config.json
@@ -0,0 +1,13 @@
+[
+ {
+ "name":"com.amazonaws.services.lambda.runtime.LambdaRuntime",
+ "methods":[{"name":"","parameterTypes":[] }],
+ "fields":[{"name":"logger"}],
+ "allPublicMethods":true
+ },
+ {
+ "name":"com.amazonaws.services.lambda.runtime.LambdaRuntimeInternal",
+ "methods":[{"name":"","parameterTypes":[] }],
+ "allPublicMethods":true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
new file mode 100644
index 000000000..ddda5d5f1
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-events/reflect-config.json
@@ -0,0 +1,35 @@
+[
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$ProxyRequestContext",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent$RequestIdentity",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent",
+ "allDeclaredFields": true,
+ "allDeclaredMethods": true,
+ "allDeclaredConstructors": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
new file mode 100644
index 000000000..91be72f7a
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/jni-config.json
@@ -0,0 +1,11 @@
+[
+ {
+ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.LambdaRuntimeClientException",
+ "methods":[{"name":"","parameterTypes":["java.lang.String","int"] }]
+ },
+ {
+ "name":"com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields":[{"name":"id"}, {"name":"invokedFunctionArn"}, {"name":"deadlineTimeInMs"}, {"name":"xrayTraceId"}, {"name":"clientContext"}, {"name":"cognitoIdentity"}, {"name": "tenantId"}, {"name":"content"}],
+ "allPublicMethods":true
+ }
+]
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
new file mode 100644
index 000000000..20f8b7801
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/native-image.properties
@@ -0,0 +1 @@
+Args = --initialize-at-build-time=jdk.xml.internal.SecuritySupport
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
new file mode 100644
index 000000000..467af67a0
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/reflect-config.json
@@ -0,0 +1,62 @@
+[
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]"
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.LambdaRuntime",
+ "fields": [{ "name": "logger" }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.logging.LogLevel",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredFields": true,
+ "allPublicFields": true
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.logging.LogFormat",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredFields": true,
+ "allPublicFields": true
+ },
+ {
+ "name": "java.lang.Void",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "java.util.Collections$UnmodifiableMap",
+ "fields": [{ "name": "m" }]
+ },
+ {
+ "name": "jdk.internal.module.IllegalAccessLogger",
+ "fields": [{ "name": "logger" }]
+ },
+ {
+ "name": "sun.misc.Unsafe",
+ "fields": [{ "name": "theUnsafe" }]
+ },
+ {
+ "name": "com.amazonaws.services.lambda.runtime.api.client.runtimeapi.dto.InvocationRequest",
+ "fields": [
+ { "name": "id" },
+ { "name": "invokedFunctionArn" },
+ { "name": "deadlineTimeInMs" },
+ { "name": "xrayTraceId" },
+ { "name": "clientContext" },
+ { "name": "cognitoIdentity" },
+ { "name": "tenantId" },
+ { "name": "content" }
+ ],
+ "allPublicMethods": true,
+ "unsafeAllocated": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
new file mode 100644
index 000000000..1062b4249
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-runtime-interface-client/resource-config.json
@@ -0,0 +1,19 @@
+{
+ "resources": {
+ "includes": [
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux-aarch_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux-x86_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux_musl-aarch_64.so\\E"
+ },
+ {
+ "pattern": "\\Qjni/libaws-lambda-jni.linux_musl-x86_64.so\\E"
+ }
+ ]
+ },
+ "bundles": []
+}
\ No newline at end of file
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
new file mode 100644
index 000000000..9890688f9
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/com.amazonaws/aws-lambda-java-serialization/reflect-config.json
@@ -0,0 +1,25 @@
+[
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.deser.Deserializers[]"
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7HandlersImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ext.Java7SupportImpl",
+ "methods": [{ "name": "", "parameterTypes": [] }]
+ },
+ {
+ "name": "com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.ser.Serializers[]"
+ },
+ {
+ "name": "org.joda.time.DateTime",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
new file mode 100644
index 000000000..e1d6fb127
--- /dev/null
+++ b/powertools-e2e-tests/handlers/lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda.powertools.e2e/reflect-config.json
@@ -0,0 +1,11 @@
+[
+ {
+ "name": "software.amazon.lambda.powertools.e2e.Function",
+ "allDeclaredConstructors": true,
+ "allPublicConstructors": true,
+ "allDeclaredMethods": true,
+ "allPublicMethods": true,
+ "allDeclaredClasses": true,
+ "allPublicClasses": true
+ }
+]
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index aabf2a1a0..abea8288e 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -42,6 +42,7 @@
parameters
validation-alb-event
validation-apigw-event
+ lambda-metadata
@@ -113,6 +114,11 @@
powertools-validation
${project.version}
+
+ software.amazon.lambda
+ powertools-lambda-metadata
+ ${project.version}
+
com.amazonaws
aws-lambda-java-core
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 6953b6781..864440833 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -257,6 +257,7 @@
**/ParametersE2ET.java
**/TracingE2ET.java
**/IdempotencyE2ET.java
+ **/LambdaMetadataE2ET.java
true
diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LambdaMetadataE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LambdaMetadataE2ET.java
new file mode 100644
index 000000000..22b1d702e
--- /dev/null
+++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/LambdaMetadataE2ET.java
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static software.amazon.lambda.powertools.testutils.Infrastructure.FUNCTION_NAME_OUTPUT;
+import static software.amazon.lambda.powertools.testutils.lambda.LambdaInvoker.invokeFunction;
+
+import java.util.Map;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.Timeout;
+
+import com.fasterxml.jackson.databind.JsonNode;
+
+import software.amazon.lambda.powertools.testutils.Infrastructure;
+import software.amazon.lambda.powertools.testutils.lambda.InvocationResult;
+import software.amazon.lambda.powertools.utilities.JsonConfig;
+
+class LambdaMetadataE2ET {
+
+ private static Infrastructure infrastructure;
+ private static String functionName;
+
+ @BeforeAll
+ @Timeout(value = 15, unit = TimeUnit.MINUTES)
+ static void setup() {
+ infrastructure = Infrastructure.builder()
+ .testName(LambdaMetadataE2ET.class.getSimpleName())
+ .pathToFunction("lambda-metadata")
+ .build();
+ Map outputs = infrastructure.deploy();
+ functionName = outputs.get(FUNCTION_NAME_OUTPUT);
+ }
+
+ @AfterAll
+ static void tearDown() {
+ if (infrastructure != null) {
+ infrastructure.destroy();
+ }
+ }
+
+ @Test
+ void test_getMetadata() throws Exception {
+ // WHEN
+ InvocationResult invocationResult = invokeFunction(functionName, "{}");
+
+ // THEN
+ assertThat(invocationResult.getFunctionError())
+ .describedAs("Lambda function failed: %s", invocationResult.getFunctionError())
+ .isNull();
+
+ JsonNode response = JsonConfig.get().getObjectMapper().readTree(invocationResult.getResult());
+ String availabilityZoneId = response.get("availabilityZoneId").asText();
+ assertThat(availabilityZoneId).isNotNull().matches("[a-z]{3,4}\\d+-az\\d+");
+ }
+
+ @Test
+ void test_metadataCaching() throws Exception {
+ // WHEN - invoke twice (both invocations hit the same sandbox)
+ InvocationResult firstResult = invokeFunction(functionName, "{}");
+ InvocationResult secondResult = invokeFunction(functionName, "{}");
+
+ // THEN - both should return the same AZ ID (cached within sandbox)
+ assertThat(firstResult.getFunctionError())
+ .describedAs("Lambda function failed on first invocation: %s", firstResult.getFunctionError())
+ .isNull();
+ assertThat(secondResult.getFunctionError())
+ .describedAs("Lambda function failed on second invocation: %s", secondResult.getFunctionError())
+ .isNull();
+
+ JsonNode firstResponse = JsonConfig.get().getObjectMapper().readTree(firstResult.getResult());
+ JsonNode secondResponse = JsonConfig.get().getObjectMapper().readTree(secondResult.getResult());
+
+ String firstAzId = firstResponse.get("availabilityZoneId").asText();
+ String secondAzId = secondResponse.get("availabilityZoneId").asText();
+
+ assertThat(firstAzId).isNotNull().matches("[a-z]{3,4}\\d+-az\\d+").isEqualTo(secondAzId);
+ }
+}
diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/InvocationResult.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/InvocationResult.java
index b91840b8e..4652f6e82 100644
--- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/InvocationResult.java
+++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/testutils/lambda/InvocationResult.java
@@ -22,6 +22,7 @@ public class InvocationResult {
private final InvocationLogs logs;
private final String result;
+ private final String functionError;
private final String requestId;
private final Instant start;
@@ -31,6 +32,7 @@ public InvocationResult(InvokeResponse response, Instant start, Instant end) {
requestId = response.responseMetadata().requestId();
logs = new InvocationLogs(response.logResult(), requestId);
result = response.payload().asUtf8String();
+ functionError = response.functionError();
this.start = start;
this.end = end;
}
@@ -54,4 +56,8 @@ public Instant getStart() {
public Instant getEnd() {
return end;
}
+
+ public String getFunctionError() {
+ return functionError;
+ }
}
diff --git a/powertools-lambda-metadata/pom.xml b/powertools-lambda-metadata/pom.xml
new file mode 100644
index 000000000..7a5ab6f24
--- /dev/null
+++ b/powertools-lambda-metadata/pom.xml
@@ -0,0 +1,167 @@
+
+
+
+
+ 4.0.0
+
+ powertools-lambda-metadata
+ jar
+
+
+ powertools-parent
+ software.amazon.lambda
+ 2.9.0
+
+
+ Powertools for AWS Lambda (Java) - Lambda Metadata
+
+ A utility for idiomatic access to the Lambda Metadata Endpoint (LMDS), providing
+ automatic caching, thread-safe access, and SnapStart support for retrieving
+ execution environment metadata like Availability Zone ID.
+
+
+
+
+
+ software.amazon.lambda
+ powertools-common
+
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+
+ org.crac
+ crac
+
+
+
+
+ org.slf4j
+ slf4j-api
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-engine
+ test
+
+
+ org.junit-pioneer
+ junit-pioneer
+ test
+
+
+ org.assertj
+ assertj-core
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ test
+
+
+ org.slf4j
+ slf4j-simple
+ test
+
+
+ org.wiremock
+ wiremock
+ test
+
+
+
+
+
+
+ dev.aspectj
+ aspectj-maven-plugin
+ ${aspectj-maven-plugin.version}
+
+ true
+
+
+
+
+
+
+
+ generate-classesloaded-file
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ -Xlog:class+load=info:classesloaded.txt
+ --add-opens java.base/java.util=ALL-UNNAMED
+ --add-opens java.base/java.lang=ALL-UNNAMED
+
+
+
+
+
+
+
+ native
+
+
+ org.mockito
+ mockito-subclass
+ test
+
+
+
+
+
+ org.graalvm.buildtools
+ native-maven-plugin
+
+ powertools-lambda-metadata
+
+
+ src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-lambda-metadata
+
+
+
+ --enable-url-protocols=http
+
+
+
+
+
+
+
+
diff --git a/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadata.java b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadata.java
new file mode 100644
index 000000000..3a2e05b0e
--- /dev/null
+++ b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadata.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+/**
+ * Data class representing Lambda execution environment metadata.
+ *
+ * This class is immutable and contains metadata retrieved from the Lambda Metadata Endpoint (LMDS).
+ * Use {@link LambdaMetadataClient#get()} to obtain an instance.
+ *
+ *
+ * This class is annotated with {@link JsonIgnoreProperties} to ensure forward compatibility.
+ *
+ *
+ * Example Usage
+ * {@code
+ * LambdaMetadata metadata = LambdaMetadataClient.get();
+ * String azId = metadata.getAvailabilityZoneId();
+ * }
+ *
+ * @see LambdaMetadataClient
+ */
+@JsonIgnoreProperties(ignoreUnknown = true)
+public final class LambdaMetadata {
+
+ @JsonProperty("AvailabilityZoneID")
+ private final String availabilityZoneId;
+
+ /**
+ * Default constructor for Jackson deserialization.
+ */
+ public LambdaMetadata() {
+ this.availabilityZoneId = null;
+ }
+
+ /**
+ * Constructor with availability zone ID.
+ *
+ * @param availabilityZoneId the availability zone ID
+ */
+ public LambdaMetadata(String availabilityZoneId) {
+ this.availabilityZoneId = availabilityZoneId;
+ }
+
+ /**
+ * Returns the Availability Zone ID.
+ *
+ * The Availability Zone ID is a unique identifier for the availability zone
+ * where the Lambda function is executing (e.g., "use1-az1").
+ *
+ *
+ * @return the availability zone ID
+ */
+ public String getAvailabilityZoneId() {
+ return availabilityZoneId;
+ }
+}
diff --git a/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClient.java b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClient.java
new file mode 100644
index 000000000..da563359b
--- /dev/null
+++ b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClient.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata;
+
+import java.util.concurrent.atomic.AtomicReference;
+
+import org.crac.Core;
+import org.crac.Resource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import software.amazon.lambda.powertools.common.internal.ClassPreLoader;
+import software.amazon.lambda.powertools.metadata.exception.LambdaMetadataException;
+import software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient;
+
+/**
+ * Client for accessing Lambda execution environment metadata.
+ *
+ * This utility provides idiomatic access to the Lambda Metadata Endpoint (LMDS),
+ * eliminating boilerplate code for retrieving execution environment metadata
+ * like Availability Zone ID.
+ *
+ *
+ * Features:
+ *
+ * Automatic caching for the sandbox lifetime
+ * Thread-safe access for concurrent executions
+ * SnapStart cache invalidation via CRaC
+ * Lazy loading on first access
+ *
+ *
+ *
+ * Basic Usage
+ * {@code
+ * public String handleRequest(Object input, Context context) {
+ * LambdaMetadata metadata = LambdaMetadataClient.get();
+ * String azId = metadata.getAvailabilityZoneId();
+ * return "{\"az\": \"" + azId + "\"}";
+ * }
+ * }
+ *
+ * Eager Loading
+ * {@code
+ * public class MyHandler implements RequestHandler {
+ * // Fetch during cold start
+ * private static final LambdaMetadata METADATA = LambdaMetadataClient.get();
+ *
+ * public String handleRequest(Object input, Context context) {
+ * return "{\"az\": \"" + METADATA.getAvailabilityZoneId() + "\"}";
+ * }
+ * }
+ * }
+ *
+ * @see LambdaMetadata
+ */
+public final class LambdaMetadataClient implements Resource {
+
+ private static final Logger LOG = LoggerFactory.getLogger(LambdaMetadataClient.class);
+
+ private static final AtomicReference cachedInstance = new AtomicReference<>();
+ private static final LambdaMetadataClient CRAC_INSTANCE = new LambdaMetadataClient();
+ private static LambdaMetadataHttpClient httpClient = new LambdaMetadataHttpClient();
+
+ // Register with CRaC for SnapStart cache invalidation
+ static {
+ Core.getGlobalContext().register(CRAC_INSTANCE);
+ }
+
+ private LambdaMetadataClient() {
+ // Utility class
+ }
+
+ /**
+ * Retrieves the cached metadata, fetching from the endpoint if not cached.
+ *
+ * This method is thread-safe and handles concurrent access correctly.
+ * The first call fetches metadata from the Lambda Metadata Endpoint,
+ * subsequent calls return the cached value.
+ *
+ *
+ * @return the LambdaMetadata instance
+ * @throws LambdaMetadataException if the metadata endpoint is unavailable or returns an error
+ */
+ public static LambdaMetadata get() {
+ LambdaMetadata instance = cachedInstance.get();
+ if (instance != null) {
+ return instance;
+ }
+
+ LambdaMetadata newInstance = httpClient.fetchMetadata();
+ // Use compareAndSet to handle race conditions - first writer wins
+ if (cachedInstance.compareAndSet(null, newInstance)) {
+ LOG.debug("Lambda metadata fetched and cached: availabilityZoneId={}",
+ newInstance.getAvailabilityZoneId());
+ return newInstance;
+ }
+ // Another thread won the race, return their instance
+ return cachedInstance.get();
+ }
+
+ /**
+ * Forces a refresh of the cached metadata.
+ *
+ * This method clears the cache and fetches fresh metadata from the endpoint.
+ * Used internally for SnapStart cache invalidation.
+ *
+ *
+ * @return the refreshed LambdaMetadata instance
+ * @throws LambdaMetadataException if the metadata endpoint is unavailable or returns an error
+ */
+ static LambdaMetadata refresh() {
+ cachedInstance.set(null);
+ return get();
+ }
+
+ /**
+ * Called before a CRaC checkpoint is taken.
+ * Preloads classes to ensure faster restore.
+ *
+ * @param context the CRaC context
+ */
+ @Override
+ public void beforeCheckpoint(org.crac.Context extends Resource> context) {
+ // Preload classes for faster restore
+ ClassPreLoader.preloadClasses();
+ LOG.debug("Lambda metadata: beforeCheckpoint completed");
+ }
+
+ /**
+ * Called after a CRaC restore.
+ * Invalidates the cache since the AZ may have changed after cross-AZ restore.
+ *
+ * @param context the CRaC context
+ */
+ @Override
+ public void afterRestore(org.crac.Context extends Resource> context) {
+ resetCache();
+ LOG.debug("Lambda metadata: cache invalidated after SnapStart restore");
+ }
+
+ /**
+ * Sets the HTTP client (for testing purposes only).
+ *
+ * @param client the client to use
+ */
+ static void setHttpClient(LambdaMetadataHttpClient client) {
+ httpClient = client;
+ cachedInstance.set(null);
+ }
+
+ /**
+ * Resets the cached instance (for testing purposes only).
+ */
+ static void resetCache() {
+ cachedInstance.set(null);
+ }
+}
diff --git a/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataException.java b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataException.java
new file mode 100644
index 000000000..659c30468
--- /dev/null
+++ b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataException.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata.exception;
+
+/**
+ * Exception thrown when the Lambda Metadata Endpoint is unavailable or returns an error.
+ *
+ * This exception may be thrown when:
+ *
+ * The metadata endpoint environment variables are not set
+ * The metadata endpoint returns a non-200 status code
+ * Network errors occur when connecting to the endpoint
+ * The response cannot be parsed
+ *
+ *
+ */
+public class LambdaMetadataException extends RuntimeException {
+
+ private static final long serialVersionUID = 1L;
+ private final int statusCode;
+
+ /**
+ * Constructs a new exception with the specified message.
+ *
+ * @param message the error message
+ */
+ public LambdaMetadataException(String message) {
+ super(message);
+ this.statusCode = -1;
+ }
+
+ /**
+ * Constructs a new exception with the specified message and cause.
+ *
+ * @param message the error message
+ * @param cause the underlying cause
+ */
+ public LambdaMetadataException(String message, Throwable cause) {
+ super(message, cause);
+ this.statusCode = -1;
+ }
+
+ /**
+ * Constructs a new exception with the specified message and HTTP status code.
+ *
+ * @param message the error message
+ * @param statusCode the HTTP status code from the metadata endpoint
+ */
+ public LambdaMetadataException(String message, int statusCode) {
+ super(message);
+ this.statusCode = statusCode;
+ }
+
+ /**
+ * Returns the HTTP status code from the metadata endpoint.
+ *
+ * @return the HTTP status code, or -1 if not applicable
+ */
+ public int getStatusCode() {
+ return statusCode;
+ }
+}
diff --git a/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClient.java b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClient.java
new file mode 100644
index 000000000..78b2cf3db
--- /dev/null
+++ b/powertools-lambda-metadata/src/main/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClient.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata.internal;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.HttpURLConnection;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.stream.Collectors;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+import software.amazon.lambda.powertools.metadata.exception.LambdaMetadataException;
+
+/**
+ * Internal HTTP client for fetching metadata from the Lambda Metadata Endpoint.
+ *
+ * Uses {@link HttpURLConnection} to avoid additional dependencies - it's part of the JDK
+ * and works out of the box with GraalVM native image.
+ *
+ */
+public class LambdaMetadataHttpClient {
+
+ private static final Logger LOG = LoggerFactory.getLogger(LambdaMetadataHttpClient.class);
+
+ static final String ENV_METADATA_API = "AWS_LAMBDA_METADATA_API";
+ static final String ENV_METADATA_TOKEN = "AWS_LAMBDA_METADATA_TOKEN";
+ private static final String API_VERSION = "2026-01-15";
+ private static final String METADATA_PATH = "/metadata/execution-environment";
+ private static final int CONNECT_TIMEOUT_MS = 1000;
+ private static final int READ_TIMEOUT_MS = 1000;
+
+ private final ObjectMapper objectMapper;
+
+ public LambdaMetadataHttpClient() {
+ this.objectMapper = new ObjectMapper();
+ }
+
+ /**
+ * Fetches metadata from the Lambda Metadata Endpoint.
+ *
+ * @return the Lambda metadata
+ * @throws LambdaMetadataException if the fetch fails
+ */
+ public LambdaMetadata fetchMetadata() {
+ String token = getRequiredEnvironmentVariable(ENV_METADATA_TOKEN);
+ String api = getRequiredEnvironmentVariable(ENV_METADATA_API);
+
+ String urlString = "http://" + api + "/" + API_VERSION + METADATA_PATH;
+ LOG.debug("Fetching Lambda metadata from: {}", urlString);
+
+ HttpURLConnection conn = null;
+ try {
+ URL url = new URL(urlString);
+ conn = (HttpURLConnection) url.openConnection();
+ conn.setRequestMethod("GET");
+ conn.setRequestProperty("Authorization", "Bearer " + token);
+ conn.setConnectTimeout(CONNECT_TIMEOUT_MS);
+ conn.setReadTimeout(READ_TIMEOUT_MS);
+ conn.setDoInput(true);
+
+ int statusCode = conn.getResponseCode();
+ if (statusCode != HttpURLConnection.HTTP_OK) {
+ String errorMessage = readErrorStream(conn);
+ throw new LambdaMetadataException(
+ "Metadata request failed with status " + statusCode + ": " + errorMessage,
+ statusCode);
+ }
+
+ String responseBody = readInputStream(conn);
+ LOG.debug("Lambda metadata response: {}", responseBody);
+
+ return objectMapper.readValue(responseBody, LambdaMetadata.class);
+ } catch (LambdaMetadataException e) {
+ throw e;
+ } catch (IOException e) {
+ throw new LambdaMetadataException("Failed to fetch Lambda metadata: " + e.getMessage(), e);
+ } finally {
+ if (conn != null) {
+ conn.disconnect();
+ }
+ }
+ }
+
+ /**
+ * Gets a required environment variable value.
+ * Throws {@link LambdaMetadataException} if the value is null or empty.
+ * This method is package-private to allow overriding in tests.
+ *
+ * @param name the environment variable name
+ * @return the value, never null or empty
+ * @throws LambdaMetadataException if the environment variable is not set or empty
+ */
+ String getRequiredEnvironmentVariable(String name) {
+ String value = System.getenv(name);
+ if (value == null || value.isEmpty()) {
+ throw new LambdaMetadataException(
+ "Environment variable " + name + " is not set. Ensure " + name + " is set.");
+ }
+ return value;
+ }
+
+ /**
+ * Reads the input stream from a connection.
+ *
+ * @param conn the HTTP connection
+ * @return the response body as a string
+ * @throws IOException if reading fails
+ */
+ private String readInputStream(HttpURLConnection conn) throws IOException {
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(conn.getInputStream(), StandardCharsets.UTF_8))) {
+ return reader.lines().collect(Collectors.joining("\n"));
+ }
+ }
+
+ /**
+ * Reads the error stream from a connection.
+ *
+ * @param conn the HTTP connection
+ * @return the error message, or empty string if not available
+ */
+ private String readErrorStream(HttpURLConnection conn) {
+ try {
+ if (conn.getErrorStream() != null) {
+ try (BufferedReader reader = new BufferedReader(
+ new InputStreamReader(conn.getErrorStream(), StandardCharsets.UTF_8))) {
+ return reader.lines().collect(Collectors.joining("\n"));
+ }
+ }
+ } catch (IOException e) {
+ LOG.debug("Failed to read error stream", e);
+ }
+ return "";
+ }
+}
diff --git a/powertools-lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-lambda-metadata/reflect-config.json b/powertools-lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-lambda-metadata/reflect-config.json
new file mode 100644
index 000000000..82715e589
--- /dev/null
+++ b/powertools-lambda-metadata/src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-lambda-metadata/reflect-config.json
@@ -0,0 +1,35 @@
+[
+{
+ "name":"org.apiguardian.api.API",
+ "queryAllPublicMethods":true
+},
+{
+ "name":"org.eclipse.jetty.http.pathmap.PathSpecSet",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.eclipse.jetty.servlets.CrossOriginFilter",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.eclipse.jetty.util.AsciiLowerCaseSet",
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"org.eclipse.jetty.util.TypeUtil",
+ "methods":[{"name":"getClassLoaderLocation","parameterTypes":["java.lang.Class"] }, {"name":"getCodeSourceLocation","parameterTypes":["java.lang.Class"] }, {"name":"getModuleLocation","parameterTypes":["java.lang.Class"] }, {"name":"getSystemClassLoaderLocation","parameterTypes":["java.lang.Class"] }]
+},
+{
+ "name":"software.amazon.lambda.powertools.metadata.LambdaMetadata",
+ "allDeclaredFields":true,
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"","parameterTypes":[] }]
+},
+{
+ "name":"software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient",
+ "queryAllDeclaredMethods":true,
+ "queryAllDeclaredConstructors":true,
+ "methods":[{"name":"fetchMetadata","parameterTypes":[] }]
+}
+]
diff --git a/powertools-lambda-metadata/src/main/resources/classesloaded.txt b/powertools-lambda-metadata/src/main/resources/classesloaded.txt
new file mode 100644
index 000000000..0bf80a0c6
--- /dev/null
+++ b/powertools-lambda-metadata/src/main/resources/classesloaded.txt
@@ -0,0 +1,7923 @@
+java.lang.Object
+java.io.Serializable
+java.lang.Comparable
+java.lang.CharSequence
+java.lang.constant.Constable
+java.lang.constant.ConstantDesc
+java.lang.String
+java.lang.reflect.AnnotatedElement
+java.lang.reflect.GenericDeclaration
+java.lang.reflect.Type
+java.lang.invoke.TypeDescriptor
+java.lang.invoke.TypeDescriptor$OfField
+java.lang.Class
+java.lang.Cloneable
+java.lang.ClassLoader
+java.lang.System
+java.lang.Throwable
+java.lang.Error
+java.lang.Exception
+java.lang.RuntimeException
+java.security.ProtectionDomain
+java.security.SecureClassLoader
+java.lang.ReflectiveOperationException
+java.lang.ClassNotFoundException
+java.lang.Record
+java.lang.LinkageError
+java.lang.NoClassDefFoundError
+java.lang.ClassCastException
+java.lang.ArrayStoreException
+java.lang.VirtualMachineError
+java.lang.InternalError
+java.lang.OutOfMemoryError
+java.lang.StackOverflowError
+java.lang.IllegalMonitorStateException
+java.lang.ref.Reference
+java.lang.IllegalCallerException
+java.lang.ref.SoftReference
+java.lang.ref.WeakReference
+java.lang.ref.FinalReference
+java.lang.ref.PhantomReference
+java.lang.ref.Finalizer
+java.lang.Runnable
+java.lang.Thread
+java.lang.Thread$FieldHolder
+java.lang.Thread$Constants
+java.lang.Thread$UncaughtExceptionHandler
+java.lang.ThreadGroup
+java.lang.BaseVirtualThread
+java.lang.VirtualThread
+java.lang.ThreadBuilders$BoundVirtualThread
+java.util.Dictionary
+java.util.Map
+java.util.Hashtable
+java.util.Properties
+java.lang.Module
+java.lang.reflect.AccessibleObject
+java.lang.reflect.Member
+java.lang.reflect.Field
+java.lang.reflect.Parameter
+java.lang.reflect.Executable
+java.lang.reflect.Method
+java.lang.reflect.Constructor
+jdk.internal.vm.ContinuationScope
+jdk.internal.vm.Continuation
+jdk.internal.vm.StackChunk
+jdk.internal.reflect.MethodAccessor
+jdk.internal.reflect.MethodAccessorImpl
+jdk.internal.reflect.ConstantPool
+java.lang.annotation.Annotation
+jdk.internal.reflect.CallerSensitive
+jdk.internal.reflect.ConstructorAccessor
+jdk.internal.reflect.ConstructorAccessorImpl
+jdk.internal.reflect.DirectConstructorHandleAccessor$NativeAccessor
+java.lang.invoke.MethodHandle
+java.lang.invoke.DirectMethodHandle
+java.lang.invoke.VarHandle
+java.lang.invoke.MemberName
+java.lang.invoke.ResolvedMethodName
+java.lang.invoke.MethodHandleImpl
+java.lang.invoke.MethodHandleNatives
+java.lang.invoke.LambdaForm
+java.lang.invoke.TypeDescriptor$OfMethod
+java.lang.invoke.MethodType
+java.lang.BootstrapMethodError
+java.lang.invoke.CallSite
+jdk.internal.foreign.abi.NativeEntryPoint
+jdk.internal.foreign.abi.ABIDescriptor
+jdk.internal.foreign.abi.VMStorage
+jdk.internal.foreign.abi.UpcallLinker$CallRegs
+java.lang.invoke.ConstantCallSite
+java.lang.invoke.MutableCallSite
+java.lang.invoke.VolatileCallSite
+java.lang.AssertionStatusDirectives
+java.lang.Appendable
+java.lang.AbstractStringBuilder
+java.lang.StringBuffer
+java.lang.StringBuilder
+jdk.internal.misc.UnsafeConstants
+jdk.internal.misc.Unsafe
+jdk.internal.module.Modules
+java.lang.AutoCloseable
+java.io.Closeable
+java.io.InputStream
+java.io.ByteArrayInputStream
+java.net.URL
+java.lang.Enum
+java.util.jar.Manifest
+jdk.internal.loader.BuiltinClassLoader
+jdk.internal.loader.ClassLoaders
+jdk.internal.loader.ClassLoaders$AppClassLoader
+jdk.internal.loader.ClassLoaders$PlatformClassLoader
+java.security.CodeSource
+java.util.AbstractMap
+java.util.concurrent.ConcurrentMap
+java.util.concurrent.ConcurrentHashMap
+java.lang.Iterable
+java.util.Collection
+java.util.AbstractCollection
+java.util.SequencedCollection
+java.util.List
+java.util.AbstractList
+java.util.RandomAccess
+java.util.ArrayList
+java.lang.StackTraceElement
+java.nio.Buffer
+java.lang.StackWalker
+java.lang.StackStreamFactory$AbstractStackWalker
+java.lang.StackWalker$StackFrame
+java.lang.ClassFrameInfo
+java.lang.StackFrameInfo
+java.lang.LiveStackFrame
+java.lang.LiveStackFrameInfo
+java.util.concurrent.locks.AbstractOwnableSynchronizer
+java.lang.Boolean
+java.lang.Character
+java.lang.Number
+java.lang.Float
+java.lang.Double
+java.lang.Byte
+java.lang.Short
+java.lang.Integer
+java.lang.Long
+java.lang.Void
+java.util.Iterator
+java.lang.reflect.RecordComponent
+jdk.internal.vm.vector.VectorSupport
+jdk.internal.vm.vector.VectorSupport$VectorPayload
+jdk.internal.vm.vector.VectorSupport$Vector
+jdk.internal.vm.vector.VectorSupport$VectorMask
+jdk.internal.vm.vector.VectorSupport$VectorShuffle
+jdk.internal.vm.FillerObject
+java.lang.Integer$IntegerCache
+java.lang.Long$LongCache
+java.lang.Byte$ByteCache
+java.lang.Short$ShortCache
+java.lang.Character$CharacterCache
+java.util.jar.Attributes$Name
+java.util.ImmutableCollections$AbstractImmutableMap
+java.util.ImmutableCollections$MapN
+sun.util.locale.BaseLocale
+jdk.internal.module.ArchivedModuleGraph
+java.lang.module.ModuleFinder
+jdk.internal.module.SystemModuleFinders$SystemModuleFinder
+java.util.ImmutableCollections$AbstractImmutableCollection
+java.util.Set
+java.util.ImmutableCollections$AbstractImmutableSet
+java.util.ImmutableCollections$SetN
+java.lang.module.ModuleReference
+jdk.internal.module.ModuleReferenceImpl
+java.lang.module.ModuleDescriptor
+java.lang.module.ModuleDescriptor$Version
+java.util.ImmutableCollections$Set12
+java.lang.module.ModuleDescriptor$Requires
+java.lang.module.ModuleDescriptor$Requires$Modifier
+java.lang.module.ModuleDescriptor$Exports
+java.lang.module.ModuleDescriptor$Provides
+java.util.ImmutableCollections$AbstractImmutableList
+java.util.ImmutableCollections$List12
+java.net.URI
+java.util.function.Supplier
+jdk.internal.module.SystemModuleFinders$1
+jdk.internal.module.ModuleHashes$HashSupplier
+jdk.internal.module.SystemModuleFinders$2
+java.util.ImmutableCollections$ListN
+java.lang.module.ModuleDescriptor$Opens
+jdk.internal.module.ModuleTarget
+jdk.internal.module.ModuleHashes
+java.util.Collections$UnmodifiableMap
+java.util.HashMap
+java.util.Map$Entry
+java.util.HashMap$Node
+java.lang.module.Configuration
+java.lang.module.ResolvedModule
+java.util.function.Function
+jdk.internal.module.ModuleLoaderMap$Mapper
+java.util.ImmutableCollections
+java.lang.ModuleLayer
+jdk.internal.math.FDBigInteger
+java.io.ObjectStreamField
+java.util.Comparator
+java.lang.String$CaseInsensitiveComparator
+jdk.internal.misc.VM
+java.lang.Module$ArchivedData
+jdk.internal.misc.CDS
+java.util.Objects
+jdk.internal.access.JavaLangReflectAccess
+java.lang.reflect.ReflectAccess
+jdk.internal.access.SharedSecrets
+jdk.internal.reflect.ReflectionFactory
+java.io.ObjectStreamClass
+java.lang.Math
+jdk.internal.reflect.ReflectionFactory$Config
+jdk.internal.access.JavaLangRefAccess
+java.lang.ref.Reference$1
+java.lang.ref.ReferenceQueue
+java.lang.ref.ReferenceQueue$Null
+java.lang.ref.ReferenceQueue$Lock
+jdk.internal.access.JavaLangAccess
+java.lang.System$1
+jdk.internal.util.SystemProps
+jdk.internal.util.SystemProps$Raw
+java.nio.charset.Charset
+java.nio.charset.spi.CharsetProvider
+sun.nio.cs.StandardCharsets
+java.lang.StringLatin1
+sun.nio.cs.HistoricallyNamedCharset
+sun.nio.cs.Unicode
+sun.nio.cs.UTF_8
+java.lang.StrictMath
+jdk.internal.util.ArraysSupport
+java.util.LinkedHashMap$Entry
+java.util.HashMap$TreeNode
+java.lang.StringConcatHelper
+java.lang.VersionProps
+java.lang.Runtime
+java.util.concurrent.locks.Lock
+java.util.concurrent.locks.ReentrantLock
+java.util.concurrent.ConcurrentHashMap$Segment
+java.util.concurrent.ConcurrentHashMap$CounterCell
+java.util.concurrent.ConcurrentHashMap$Node
+java.util.concurrent.locks.LockSupport
+java.util.concurrent.ConcurrentHashMap$ReservationNode
+java.util.AbstractSet
+java.util.HashMap$EntrySet
+java.util.HashMap$HashIterator
+java.util.HashMap$EntryIterator
+jdk.internal.util.StaticProperty
+java.io.FileInputStream
+java.lang.System$In
+java.io.FileDescriptor
+jdk.internal.access.JavaIOFileDescriptorAccess
+java.io.FileDescriptor$1
+java.io.Flushable
+java.io.OutputStream
+java.io.FileOutputStream
+java.lang.System$Out
+java.io.FilterInputStream
+java.io.BufferedInputStream
+java.io.FilterOutputStream
+java.io.PrintStream
+java.io.BufferedOutputStream
+java.io.Writer
+java.io.OutputStreamWriter
+sun.nio.cs.StreamEncoder
+java.nio.charset.CharsetEncoder
+sun.nio.cs.UTF_8$Encoder
+java.nio.charset.CodingErrorAction
+java.util.Arrays
+java.nio.ByteBuffer
+jdk.internal.misc.ScopedMemoryAccess
+java.nio.Buffer$1
+jdk.internal.util.Preconditions
+jdk.internal.util.Preconditions$1
+java.util.function.BiFunction
+jdk.internal.util.Preconditions$4
+jdk.internal.util.Preconditions$2
+jdk.internal.util.Preconditions$3
+jdk.internal.access.JavaNioAccess
+java.nio.Buffer$2
+java.nio.HeapByteBuffer
+java.nio.ByteOrder
+java.io.BufferedWriter
+java.lang.Terminator
+jdk.internal.misc.Signal$Handler
+java.lang.Terminator$1
+jdk.internal.misc.Signal
+java.util.Hashtable$Entry
+jdk.internal.misc.Signal$NativeHandler
+jdk.internal.misc.OSEnvironment
+java.lang.Thread$State
+java.lang.ref.Reference$ReferenceHandler
+java.lang.Thread$ThreadIdentifiers
+java.lang.ref.Finalizer$FinalizerThread
+jdk.internal.ref.Cleaner
+java.util.Collections
+java.util.Collections$EmptySet
+java.util.Collections$EmptyList
+java.util.Collections$EmptyMap
+java.lang.NullPointerException
+java.lang.ArithmeticException
+java.lang.IndexOutOfBoundsException
+java.lang.ArrayIndexOutOfBoundsException
+java.lang.IllegalArgumentException
+java.lang.invoke.MethodHandleStatics
+java.lang.reflect.ClassFileFormatVersion
+java.lang.CharacterData
+java.lang.CharacterDataLatin1
+jdk.internal.util.ClassFileDumper
+java.util.HexFormat
+java.util.concurrent.atomic.AtomicInteger
+jdk.internal.module.ModuleBootstrap
+java.lang.invoke.MethodHandles
+java.lang.invoke.MemberName$Factory
+jdk.internal.reflect.Reflection
+java.lang.invoke.MethodHandles$Lookup
+java.util.ImmutableCollections$MapN$1
+java.util.ImmutableCollections$MapN$MapNIterator
+java.util.KeyValueHolder
+sun.invoke.util.VerifyAccess
+java.lang.reflect.Modifier
+jdk.internal.access.JavaLangModuleAccess
+java.lang.module.ModuleDescriptor$1
+java.io.File
+java.io.DefaultFileSystem
+java.io.FileSystem
+java.io.UnixFileSystem
+jdk.internal.util.DecimalDigits
+jdk.internal.module.ModulePatcher
+jdk.internal.module.ModuleBootstrap$IllegalNativeAccess
+java.util.HashSet
+jdk.internal.module.ModuleLoaderMap
+jdk.internal.module.ModuleLoaderMap$Modules
+jdk.internal.module.ModuleBootstrap$Counters
+jdk.internal.module.ArchivedBootLayer
+jdk.internal.access.JavaNetUriAccess
+java.net.URI$1
+jdk.internal.loader.ArchivedClassLoaders
+jdk.internal.loader.ClassLoaders$BootClassLoader
+java.security.cert.Certificate
+java.lang.ClassLoader$ParallelLoaders
+java.util.WeakHashMap
+java.util.WeakHashMap$Entry
+java.util.Collections$SetFromMap
+java.util.WeakHashMap$KeySet
+java.security.Principal
+jdk.internal.loader.NativeLibraries
+jdk.internal.loader.ClassLoaderHelper
+jdk.internal.util.OSVersion
+java.util.concurrent.ConcurrentHashMap$CollectionView
+java.util.concurrent.ConcurrentHashMap$KeySetView
+jdk.internal.loader.URLClassPath
+java.net.URLStreamHandlerFactory
+java.net.URL$DefaultFactory
+jdk.internal.access.JavaNetURLAccess
+java.net.URL$1
+java.io.File$PathStatus
+sun.net.www.ParseUtil
+java.net.URLStreamHandler
+sun.net.www.protocol.file.Handler
+sun.net.util.IPAddressUtil
+sun.net.util.IPAddressUtil$MASKS
+java.util.Queue
+java.util.Deque
+java.util.ArrayDeque
+sun.net.www.protocol.jar.Handler
+jdk.internal.module.ServicesCatalog
+jdk.internal.loader.AbstractClassLoaderValue
+jdk.internal.loader.ClassLoaderValue
+java.util.ImmutableCollections$SetN$SetNIterator
+java.util.Optional
+jdk.internal.loader.BootLoader
+java.lang.Module$EnableNativeAccess
+jdk.internal.loader.BuiltinClassLoader$LoadedModule
+java.util.ImmutableCollections$Set12$1
+java.util.ListIterator
+java.util.ImmutableCollections$ListItr
+jdk.internal.loader.AbstractClassLoaderValue$Memoizer
+jdk.internal.module.ServicesCatalog$ServiceProvider
+java.util.concurrent.CopyOnWriteArrayList
+java.util.HashMap$KeySet
+java.util.HashMap$KeyIterator
+java.lang.ModuleLayer$Controller
+java.lang.invoke.LambdaMetafactory
+java.lang.invoke.MethodType$1
+jdk.internal.util.ReferencedKeySet
+jdk.internal.util.ReferencedKeyMap
+jdk.internal.util.ReferenceKey
+jdk.internal.util.StrongReferenceKey
+java.lang.invoke.MethodTypeForm
+jdk.internal.util.WeakReferenceKey
+sun.invoke.util.Wrapper
+sun.invoke.util.Wrapper$Format
+java.lang.constant.ConstantDescs
+java.lang.constant.ClassDesc
+jdk.internal.constant.ClassOrInterfaceDescImpl
+jdk.internal.constant.ArrayClassDescImpl
+jdk.internal.constant.ConstantUtils
+java.lang.constant.DirectMethodHandleDesc$Kind
+java.lang.constant.MethodTypeDesc
+jdk.internal.constant.MethodTypeDescImpl
+java.lang.constant.MethodHandleDesc
+java.lang.constant.MethodHandleDesc$1
+java.lang.constant.DirectMethodHandleDesc
+jdk.internal.constant.DirectMethodHandleDescImpl
+jdk.internal.constant.DirectMethodHandleDescImpl$1
+java.lang.constant.DynamicConstantDesc
+jdk.internal.constant.PrimitiveClassDescImpl
+java.lang.constant.DynamicConstantDesc$AnonymousDynamicConstantDesc
+java.lang.invoke.LambdaForm$NamedFunction
+java.lang.invoke.DirectMethodHandle$Holder
+sun.invoke.util.ValueConversions
+java.lang.invoke.Invokers
+java.lang.invoke.LambdaForm$Kind
+java.lang.NoSuchMethodException
+java.lang.invoke.LambdaForm$BasicType
+java.lang.classfile.TypeKind
+java.lang.reflect.Array
+java.lang.invoke.LambdaForm$Name
+java.lang.invoke.LambdaForm$Holder
+java.lang.invoke.InvokerBytecodeGenerator
+java.lang.classfile.AnnotationElement
+java.lang.classfile.Annotation
+java.lang.classfile.constantpool.ConstantPool
+java.lang.classfile.constantpool.ConstantPoolBuilder
+jdk.internal.classfile.impl.TemporaryConstantPool
+jdk.internal.classfile.impl.AbstractPoolEntry
+java.lang.classfile.constantpool.PoolEntry
+java.lang.classfile.constantpool.AnnotationConstantValueEntry
+java.lang.classfile.constantpool.Utf8Entry
+jdk.internal.classfile.impl.AbstractPoolEntry$Utf8EntryImpl
+jdk.internal.classfile.impl.AbstractPoolEntry$Utf8EntryImpl$State
+jdk.internal.classfile.impl.AnnotationImpl
+java.lang.classfile.ClassFileElement
+java.lang.classfile.Attribute
+java.lang.classfile.ClassElement
+java.lang.classfile.MethodElement
+java.lang.classfile.FieldElement
+java.lang.classfile.attribute.RuntimeVisibleAnnotationsAttribute
+jdk.internal.classfile.impl.AbstractElement
+jdk.internal.classfile.impl.Util$Writable
+jdk.internal.classfile.impl.UnboundAttribute
+jdk.internal.classfile.impl.UnboundAttribute$UnboundRuntimeVisibleAnnotationsAttribute
+java.lang.classfile.Attributes
+java.lang.classfile.AttributeMapper
+jdk.internal.classfile.impl.AbstractAttributeMapper
+jdk.internal.classfile.impl.AbstractAttributeMapper$RuntimeVisibleAnnotationsMapper
+java.lang.classfile.AttributeMapper$AttributeStability
+java.lang.invoke.InvokerBytecodeGenerator$8
+java.lang.invoke.MethodHandleImpl$Intrinsic
+java.lang.invoke.BootstrapMethodInvoker
+java.lang.invoke.AbstractValidatingLambdaMetafactory
+java.lang.invoke.InnerClassLambdaMetafactory
+java.lang.invoke.MethodHandleInfo
+java.lang.invoke.InfoFromMemberName
+jdk.internal.classfile.impl.SplitConstantPool
+java.lang.classfile.BootstrapMethodEntry
+jdk.internal.classfile.impl.BootstrapMethodEntryImpl
+jdk.internal.classfile.impl.EntryMap
+jdk.internal.classfile.impl.Util
+jdk.internal.classfile.impl.AbstractPoolEntry$AbstractRefEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$AbstractNamedEntry
+java.lang.classfile.constantpool.LoadableConstantEntry
+java.lang.classfile.constantpool.ClassEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$ClassEntryImpl
+java.lang.invoke.LambdaProxyClassArchive
+java.lang.classfile.ClassFile
+jdk.internal.classfile.impl.ClassFileImpl
+java.util.function.Consumer
+java.lang.invoke.InnerClassLambdaMetafactory$1
+jdk.internal.classfile.impl.AbstractDirectBuilder
+java.lang.classfile.ClassFileBuilder
+java.lang.classfile.ClassBuilder
+jdk.internal.classfile.impl.DirectClassBuilder
+jdk.internal.classfile.impl.AttributeHolder
+java.util.ImmutableCollections$Access
+jdk.internal.access.JavaUtilCollectionAccess
+java.util.ImmutableCollections$Access$1
+java.lang.classfile.Interfaces
+jdk.internal.classfile.impl.InterfacesImpl
+java.lang.invoke.InnerClassLambdaMetafactory$3
+jdk.internal.classfile.impl.Util$1WithCodeMethodHandler
+java.lang.classfile.MethodBuilder
+jdk.internal.classfile.impl.MethodInfo
+jdk.internal.classfile.impl.TerminalMethodBuilder
+jdk.internal.classfile.impl.DirectMethodBuilder
+java.lang.classfile.CodeBuilder
+jdk.internal.classfile.impl.LabelContext
+jdk.internal.classfile.impl.TerminalCodeBuilder
+jdk.internal.classfile.impl.DirectCodeBuilder
+java.lang.classfile.CodeElement
+java.lang.classfile.PseudoInstruction
+java.lang.classfile.instruction.CharacterRange
+java.lang.classfile.instruction.LocalVariable
+java.lang.classfile.instruction.LocalVariableType
+jdk.internal.classfile.impl.DirectCodeBuilder$DeferredLabel
+java.lang.classfile.BufWriter
+jdk.internal.classfile.impl.BufWriterImpl
+java.lang.classfile.Label
+java.lang.classfile.instruction.LabelTarget
+jdk.internal.classfile.impl.LabelImpl
+jdk.internal.classfile.impl.AbstractPoolEntry$AbstractRefsEntry
+java.lang.classfile.constantpool.NameAndTypeEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$NameAndTypeEntryImpl
+java.lang.classfile.constantpool.MemberRefEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$AbstractMemberRefEntry
+java.lang.classfile.constantpool.MethodRefEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$MethodRefEntryImpl
+jdk.internal.classfile.impl.UnboundAttribute$AdHocAttribute
+jdk.internal.classfile.impl.DirectCodeBuilder$4
+jdk.internal.classfile.impl.AbstractAttributeMapper$CodeMapper
+jdk.internal.classfile.impl.BoundAttribute
+java.lang.invoke.InnerClassLambdaMetafactory$6
+jdk.internal.classfile.impl.DirectCodeBuilder$8
+java.lang.invoke.TypeConvertingMethodAdapter
+java.lang.classfile.Opcode
+java.lang.classfile.Opcode$Kind
+jdk.internal.classfile.impl.BytecodeHelpers
+java.lang.classfile.CustomAttribute
+jdk.internal.classfile.impl.StackMapGenerator
+jdk.internal.classfile.impl.StackMapGenerator$Frame
+jdk.internal.classfile.impl.StackMapGenerator$Type
+jdk.internal.classfile.impl.RawBytecodeHelper
+jdk.internal.classfile.impl.RawBytecodeHelper$1
+jdk.internal.classfile.impl.RawBytecodeHelper$CodeRange
+jdk.internal.classfile.impl.ClassHierarchyImpl
+java.lang.classfile.ClassHierarchyResolver
+jdk.internal.classfile.impl.ClassHierarchyImpl$ClassLoadingClassHierarchyResolver
+jdk.internal.classfile.impl.ClassHierarchyImpl$ClassLoadingClassHierarchyResolver$1
+jdk.internal.classfile.impl.ClassHierarchyImpl$CachedClassHierarchyResolver
+java.lang.classfile.ClassHierarchyResolver$1Factory
+java.lang.classfile.ClassHierarchyResolver$ClassHierarchyInfo
+jdk.internal.classfile.impl.ClassHierarchyImpl$ClassHierarchyInfoImpl
+jdk.internal.classfile.impl.ClassHierarchyImpl$CachedClassHierarchyResolver$1
+java.lang.classfile.ClassReader
+jdk.internal.classfile.impl.ClassReaderImpl
+java.lang.StringCoding
+jdk.internal.util.ModifiedUtf
+java.lang.invoke.MethodHandles$Lookup$ClassDefiner
+jdk.internal.module.ModuleBootstrap$$Lambda/0x00003fc001000800
+java.lang.invoke.DirectMethodHandle$Constructor
+jdk.internal.access.JavaLangInvokeAccess
+java.lang.invoke.MethodHandleImpl$1
+java.lang.invoke.BoundMethodHandle
+java.lang.invoke.ClassSpecializer
+java.lang.invoke.BoundMethodHandle$Specializer
+jdk.internal.vm.annotation.Stable
+java.lang.invoke.ClassSpecializer$1
+java.lang.invoke.ClassSpecializer$SpeciesData
+java.lang.invoke.BoundMethodHandle$SpeciesData
+java.lang.invoke.ClassSpecializer$Factory
+java.lang.invoke.BoundMethodHandle$Specializer$Factory
+java.lang.invoke.SimpleMethodHandle
+java.lang.NoSuchFieldException
+java.lang.invoke.BoundMethodHandle$Species_L
+java.lang.invoke.DirectMethodHandle$2
+java.lang.invoke.DirectMethodHandle$Accessor
+java.lang.invoke.VarHandle$AccessMode
+java.lang.invoke.VarHandle$AccessType
+java.lang.invoke.Invokers$Holder
+java.util.ArrayList$SubList
+java.util.ArrayList$Itr
+java.lang.Module$ReflectionData
+java.lang.WeakPairMap
+java.lang.WeakPairMap$Pair
+java.lang.WeakPairMap$Pair$Lookup
+java.util.ImmutableCollections$Map1
+java.lang.classfile.FieldBuilder
+jdk.internal.classfile.impl.TerminalFieldBuilder
+jdk.internal.classfile.impl.DirectFieldBuilder
+java.lang.classfile.constantpool.FieldRefEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$FieldRefEntryImpl
+java.lang.Module$$Lambda/0x00003fc001000a48
+sun.invoke.util.VerifyType
+sun.invoke.empty.Empty
+jdk.internal.vm.ContinuationSupport
+jdk.internal.vm.Continuation$Pinned
+sun.launcher.LauncherHelper
+java.util.zip.ZipConstants
+java.util.zip.ZipFile
+java.util.jar.JarFile
+java.util.BitSet
+jdk.internal.access.JavaUtilZipFileAccess
+java.util.zip.ZipFile$1
+jdk.internal.access.JavaUtilJarAccess
+java.util.jar.JavaUtilJarAccessImpl
+java.lang.Runtime$Version
+java.util.zip.ZipCoder
+java.util.zip.ZipCoder$UTF8ZipCoder
+java.util.zip.ZipFile$CleanableResource
+jdk.internal.ref.CleanerFactory
+java.util.concurrent.ThreadFactory
+jdk.internal.ref.CleanerFactory$1
+java.lang.ref.Cleaner
+java.lang.ref.Cleaner$1
+jdk.internal.ref.CleanerImpl
+jdk.internal.ref.CleanerImpl$CleanableList
+jdk.internal.ref.CleanerImpl$CleanableList$Node
+java.lang.ref.Cleaner$Cleanable
+jdk.internal.ref.PhantomCleanable
+jdk.internal.ref.CleanerImpl$CleanerCleanable
+jdk.internal.misc.InnocuousThread
+jdk.internal.ref.CleanerImpl$PhantomCleanableRef
+java.util.zip.ZipFile$Source
+sun.nio.fs.DefaultFileSystemProvider
+java.nio.file.spi.FileSystemProvider
+sun.nio.fs.AbstractFileSystemProvider
+sun.nio.fs.UnixFileSystemProvider
+sun.nio.fs.BsdFileSystemProvider
+sun.nio.fs.MacOSXFileSystemProvider
+java.nio.file.OpenOption
+java.nio.file.StandardOpenOption
+java.nio.file.FileSystem
+sun.nio.fs.UnixFileSystem
+sun.nio.fs.BsdFileSystem
+sun.nio.fs.MacOSXFileSystem
+java.nio.file.Watchable
+java.nio.file.Path
+sun.nio.fs.UnixPath
+sun.nio.fs.Util
+sun.nio.fs.UnixNativeDispatcher
+jdk.internal.loader.NativeLibraries$LibraryPaths
+jdk.internal.loader.NativeLibraries$1
+jdk.internal.loader.NativeLibraries$CountedLock
+java.util.concurrent.locks.AbstractQueuedSynchronizer
+java.util.concurrent.locks.ReentrantLock$Sync
+java.util.concurrent.locks.ReentrantLock$NonfairSync
+jdk.internal.loader.NativeLibraries$NativeLibraryContext
+jdk.internal.loader.NativeLibraries$NativeLibraryContext$1
+java.util.ArrayDeque$DeqIterator
+jdk.internal.loader.NativeLibrary
+jdk.internal.loader.NativeLibraries$NativeLibraryImpl
+jdk.internal.loader.NativeLibraries$2
+java.util.concurrent.ConcurrentHashMap$ValuesView
+java.util.concurrent.ConcurrentHashMap$Traverser
+java.util.concurrent.ConcurrentHashMap$BaseIterator
+java.util.Enumeration
+java.util.concurrent.ConcurrentHashMap$ValueIterator
+java.nio.file.attribute.BasicFileAttributes
+java.nio.file.attribute.PosixFileAttributes
+sun.nio.fs.UnixFileAttributes
+sun.nio.fs.UnixFileStoreAttributes
+sun.nio.fs.UnixMountEntry
+java.util.zip.ZipFile$Source$Key
+java.nio.file.CopyOption
+java.nio.file.LinkOption
+java.nio.file.Files
+java.nio.file.attribute.AttributeView
+java.nio.file.attribute.FileAttributeView
+java.nio.file.attribute.BasicFileAttributeView
+sun.nio.fs.BsdFileAttributeViews
+sun.nio.fs.DynamicFileAttributeView
+sun.nio.fs.AbstractBasicFileAttributeView
+sun.nio.fs.UnixFileAttributeViews$Basic
+sun.nio.fs.BsdFileAttributeViews$Basic
+sun.nio.fs.NativeBuffers
+java.lang.ThreadLocal
+jdk.internal.misc.CarrierThreadLocal
+jdk.internal.misc.TerminatingThreadLocal
+sun.nio.fs.NativeBuffers$1
+jdk.internal.misc.TerminatingThreadLocal$1
+java.lang.ThreadLocal$ThreadLocalMap
+java.lang.ThreadLocal$ThreadLocalMap$Entry
+java.util.IdentityHashMap
+java.util.IdentityHashMap$KeySet
+sun.nio.fs.NativeBuffer
+sun.nio.fs.NativeBuffer$Deallocator
+sun.nio.fs.UnixFileAttributes$UnixAsBasicFileAttributes
+java.io.DataOutput
+java.io.DataInput
+java.io.RandomAccessFile
+jdk.internal.access.JavaIORandomAccessFileAccess
+java.io.RandomAccessFile$2
+java.io.FileCleanable
+java.util.zip.ZipFile$Source$End
+java.util.zip.ZipUtils
+java.util.concurrent.TimeUnit
+java.nio.file.attribute.FileTime
+sun.nio.fs.UnixFileKey
+jdk.internal.perf.PerfCounter
+jdk.internal.perf.Perf
+jdk.internal.perf.PerfCounter$CoreCounters
+sun.nio.ch.DirectBuffer
+java.nio.MappedByteBuffer
+java.nio.DirectByteBuffer
+java.nio.Bits
+java.util.concurrent.atomic.AtomicLong
+jdk.internal.misc.VM$BufferPool
+java.nio.Bits$1
+java.nio.LongBuffer
+java.nio.DirectLongBufferU
+java.util.zip.ZipFile$EntryPos
+java.util.zip.ZipEntry
+java.util.jar.JarEntry
+java.util.jar.JarFile$JarFileEntry
+java.util.zip.ZipFile$ZipFileInputStream
+java.util.zip.InflaterInputStream
+java.util.zip.ZipFile$ZipFileInflaterInputStream
+java.util.zip.Inflater
+java.util.zip.Inflater$InflaterZStreamRef
+java.util.zip.ZipFile$InflaterCleanupAction
+sun.security.util.SignatureFileVerifier
+sun.security.util.Debug
+java.util.Locale
+sun.util.locale.LocaleUtils
+java.util.jar.JarVerifier
+java.io.ByteArrayOutputStream
+java.util.jar.Attributes
+java.util.SequencedMap
+java.util.LinkedHashMap
+java.util.jar.Manifest$FastInputStream
+sun.net.util.URLUtil
+jdk.internal.loader.URLClassPath$Loader
+jdk.internal.loader.URLClassPath$JarLoader
+jdk.internal.loader.FileURLMapper
+java.util.StringTokenizer
+jdk.internal.loader.Resource
+jdk.internal.loader.URLClassPath$JarLoader$1
+java.lang.NamedPackage
+java.lang.Package
+java.lang.Package$VersionInfo
+sun.nio.ByteBuffered
+java.util.zip.Checksum
+java.util.zip.CRC32
+java.util.zip.Checksum$1
+java.security.SecureClassLoader$CodeSourceKey
+java.security.SecureClassLoader$1
+java.security.PermissionCollection
+java.security.Permissions
+org.apache.maven.surefire.booter.ForkedBooter
+jdk.internal.misc.MethodFinder
+java.lang.Class$ReflectionData
+java.lang.Class$Atomic
+java.lang.SecurityException
+java.security.AccessControlException
+java.security.PrivilegedAction
+org.apache.maven.surefire.api.provider.CommandListener
+java.util.concurrent.Executor
+java.util.concurrent.ExecutorService
+java.util.concurrent.ScheduledExecutorService
+java.io.IOException
+java.util.concurrent.ConcurrentHashMap$ForwardingNode
+java.lang.InterruptedException
+org.apache.maven.surefire.api.report.ReporterFactory
+org.apache.maven.surefire.api.provider.CommandChainReader
+org.apache.maven.surefire.api.fork.ForkNodeArguments
+org.apache.maven.plugin.surefire.log.api.ConsoleLogger
+java.lang.PublicMethods$MethodList
+java.lang.PublicMethods$Key
+java.util.concurrent.Semaphore
+java.util.concurrent.Semaphore$Sync
+java.util.concurrent.Semaphore$NonfairSync
+org.apache.maven.surefire.booter.BooterDeserializer
+org.apache.maven.surefire.booter.SystemPropertyManager
+java.util.Properties$LineReader
+java.lang.StringUTF16
+java.util.Properties$EntrySet
+java.util.concurrent.ConcurrentHashMap$EntrySetView
+java.util.Collections$SynchronizedCollection
+java.util.Collections$SynchronizedSet
+java.util.concurrent.ConcurrentHashMap$EntryIterator
+java.util.concurrent.ConcurrentHashMap$MapEntry
+java.util.Collections$UnmodifiableCollection
+java.util.Collections$UnmodifiableSet
+java.util.Collections$UnmodifiableCollection$1
+org.apache.maven.surefire.booter.KeyValueSource
+org.apache.maven.surefire.booter.PropertiesWrapper
+java.lang.IllegalStateException
+java.io.FileInputStream$1
+org.apache.maven.surefire.booter.TypeEncodedValue
+org.apache.maven.surefire.api.testset.DirectoryScannerParameters
+org.apache.maven.surefire.api.util.RunOrder
+org.apache.maven.surefire.api.testset.RunOrderParameters
+org.apache.maven.surefire.api.testset.TestArtifactInfo
+org.apache.maven.surefire.api.testset.TestRequest
+org.apache.maven.surefire.api.testset.TestFilter
+org.apache.maven.surefire.api.testset.GenericTestPattern
+org.apache.maven.surefire.api.testset.TestListResolver
+java.util.Collections$SingletonSet
+org.apache.maven.surefire.api.testset.IncludedExcludedPatterns
+java.util.SequencedSet
+java.util.LinkedHashSet
+java.util.Collections$1
+org.apache.maven.surefire.shared.utils.StringUtils
+java.lang.StringIndexOutOfBoundsException
+org.apache.maven.surefire.api.testset.ResolvedTest
+org.apache.maven.surefire.api.testset.ResolvedTest$Type
+org.apache.maven.surefire.api.testset.ResolvedTest$ClassMatcher
+org.apache.maven.surefire.api.testset.ResolvedTest$MethodMatcher
+org.apache.maven.surefire.api.report.ReporterConfiguration
+org.apache.maven.surefire.api.booter.Shutdown
+jdk.internal.reflect.MethodHandleAccessorFactory
+jdk.internal.reflect.MethodHandleAccessorFactory$LazyStaticHolder
+java.lang.invoke.DelegatingMethodHandle
+java.lang.invoke.DelegatingMethodHandle$Holder
+java.lang.invoke.LambdaFormEditor
+java.lang.invoke.LambdaFormEditor$TransformKey
+java.lang.invoke.LambdaFormBuffer
+java.lang.invoke.LambdaFormEditor$Transform
+java.lang.invoke.InvokerBytecodeGenerator$3
+java.lang.invoke.InvokerBytecodeGenerator$1
+java.lang.classfile.Superclass
+jdk.internal.classfile.impl.SuperclassImpl
+java.lang.classfile.attribute.SourceFileAttribute
+jdk.internal.classfile.impl.UnboundAttribute$UnboundSourceFileAttribute
+jdk.internal.classfile.impl.AbstractAttributeMapper$SourceFileMapper
+java.lang.invoke.InvokerBytecodeGenerator$4
+java.lang.invoke.InvokerBytecodeGenerator$ClassData
+java.lang.invoke.InvokerBytecodeGenerator$4$1
+java.lang.invoke.InvokerBytecodeGenerator$2
+jdk.internal.classfile.impl.AnnotationReader
+java.lang.invoke.LambdaForm$MH/0x00003fc001046000
+jdk.internal.reflect.DirectMethodHandleAccessor
+org.apache.maven.surefire.booter.ProviderConfiguration
+org.apache.maven.surefire.api.cli.CommandLineOption
+org.apache.maven.surefire.api.booter.DumpErrorSingleton
+org.apache.maven.surefire.api.util.internal.DumpFileUtils
+java.lang.management.ManagementFactory
+jdk.internal.reflect.Reflection$1Holder
+java.lang.management.PlatformManagedObject
+java.lang.management.RuntimeMXBean
+java.lang.management.ManagementFactory$PlatformMBeanFinder
+sun.management.spi.PlatformMBeanProvider
+java.util.ServiceLoader
+java.util.ServiceLoader$ModuleServicesLookupIterator
+java.util.ServiceLoader$LazyClassPathLookupIterator
+java.util.ServiceLoader$1
+java.util.ServiceLoader$2
+java.util.concurrent.CopyOnWriteArrayList$COWIterator
+com.sun.management.internal.PlatformMBeanProviderImpl
+java.util.ServiceLoader$Provider
+java.util.ServiceLoader$ProviderImpl
+jdk.internal.reflect.DirectConstructorHandleAccessor
+sun.management.spi.PlatformMBeanProvider$PlatformComponent
+com.sun.management.internal.PlatformMBeanProviderImpl$1
+java.util.stream.BaseStream
+java.util.stream.Stream
+java.util.Spliterators
+java.util.Spliterator
+java.util.Spliterators$ArraySpliterator
+java.util.stream.StreamSupport
+java.util.stream.PipelineHelper
+java.util.stream.AbstractPipeline
+java.util.stream.ReferencePipeline
+java.util.stream.ReferencePipeline$Head
+java.util.stream.StreamOpFlag
+java.util.stream.StreamOpFlag$Type
+java.util.stream.StreamOpFlag$MaskBuilder
+java.util.EnumMap
+java.util.EnumMap$1
+sun.reflect.annotation.AnnotationParser
+java.util.stream.Collectors
+java.util.stream.Collector$Characteristics
+java.util.EnumSet
+java.util.RegularEnumSet
+java.util.stream.Collector
+java.util.stream.Collectors$CollectorImpl
+java.util.stream.Collectors$$Lambda/0x800000045
+java.util.function.BiConsumer
+java.lang.invoke.DirectMethodHandle$Interface
+java.util.stream.Collectors$$Lambda/0x800000038
+java.util.function.BinaryOperator
+java.util.stream.Collectors$$Lambda/0x800000040
+java.util.stream.Collectors$$Lambda/0x800000042
+java.util.stream.ReduceOps
+java.util.stream.TerminalOp
+java.util.stream.ReduceOps$ReduceOp
+java.util.stream.ReduceOps$3
+java.util.stream.StreamShape
+java.util.stream.ReduceOps$Box
+java.util.stream.Sink
+java.util.stream.TerminalSink
+java.util.stream.ReduceOps$AccumulatingSink
+java.util.stream.ReduceOps$3ReducingSink
+com.sun.management.internal.PlatformMBeanProviderImpl$2
+com.sun.management.internal.PlatformMBeanProviderImpl$3
+jdk.management.VirtualThreadSchedulerMXBean
+com.sun.management.internal.PlatformMBeanProviderImpl$4
+com.sun.management.internal.PlatformMBeanProviderImpl$5
+javax.management.DynamicMBean
+com.sun.management.DiagnosticCommandMBean
+javax.management.NotificationBroadcaster
+javax.management.NotificationEmitter
+sun.management.NotificationEmitterSupport
+com.sun.management.internal.DiagnosticCommandImpl
+sun.management.ManagementFactoryHelper
+sun.management.VMManagement
+sun.management.VMManagementImpl
+com.sun.management.internal.PlatformMBeanProviderImpl$6
+java.util.Collections$UnmodifiableList
+java.util.Collections$UnmodifiableRandomAccessList
+jdk.management.jfr.internal.FlightRecorderMXBeanProvider
+java.util.concurrent.Callable
+java.util.Collections$EmptyEnumeration
+java.lang.management.DefaultPlatformMBeanProvider
+java.lang.management.DefaultPlatformMBeanProvider$1
+java.lang.management.DefaultPlatformMBeanProvider$2
+java.lang.management.DefaultPlatformMBeanProvider$3
+java.lang.management.DefaultPlatformMBeanProvider$4
+java.lang.management.DefaultPlatformMBeanProvider$5
+java.lang.management.DefaultPlatformMBeanProvider$6
+java.lang.management.DefaultPlatformMBeanProvider$7
+java.lang.management.DefaultPlatformMBeanProvider$8
+sun.management.ManagementFactoryHelper$LoggingMXBeanAccess
+java.util.logging.LogManager
+java.lang.management.DefaultPlatformMBeanProvider$9
+java.lang.management.DefaultPlatformMBeanProvider$10
+java.lang.management.DefaultPlatformMBeanProvider$11
+jdk.management.jfr.FlightRecorderMXBean
+jdk.management.jfr.internal.FlightRecorderMXBeanProvider$SingleMBeanComponent
+java.util.Collections$SingletonList
+java.util.HashMap$Values
+java.util.HashMap$HashMapSpliterator
+java.util.HashMap$ValueSpliterator
+java.util.function.Predicate
+java.lang.management.ManagementFactory$PlatformMBeanFinder$$Lambda/0x00003fc001008cf0
+java.util.stream.ReferencePipeline$StatelessOp
+java.util.stream.ReferencePipeline$2
+java.lang.management.ManagementFactory$PlatformMBeanFinder$$Lambda/0x00003fc001008f50
+java.util.stream.ReduceOps$2
+java.util.stream.ReduceOps$2ReducingSink
+java.util.stream.Sink$ChainedReference
+java.util.stream.ReferencePipeline$2$1
+sun.management.RuntimeImpl
+java.util.Collections$SingletonMap
+java.util.Collections$2
+sun.management.spi.PlatformMBeanProvider$PlatformComponent$$Lambda/0x00003fc001009ac0
+sun.management.spi.PlatformMBeanProvider$PlatformComponent$$Lambda/0x00003fc001009d20
+java.util.stream.ReferencePipeline$3
+java.util.stream.Collectors$$Lambda/0x00003fc001009f70
+java.lang.classfile.constantpool.InterfaceMethodRefEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$InterfaceMethodRefEntryImpl
+java.util.stream.Collectors$$Lambda/0x00003fc00100a198
+java.util.stream.Collectors$$Lambda/0x00003fc00100a3d0
+java.util.stream.ReferencePipeline$3$1
+java.util.Arrays$ArrayList
+java.util.Arrays$ArrayItr
+org.apache.maven.surefire.booter.ClassLoaderConfiguration
+org.apache.maven.surefire.booter.AbstractPathConfiguration
+org.apache.maven.surefire.booter.ClasspathConfiguration
+org.apache.maven.surefire.booter.Classpath
+java.net.MalformedURLException
+java.net.URLClassLoader
+org.apache.maven.surefire.booter.IsolatedClassLoader
+org.apache.maven.surefire.booter.SurefireExecutionException
+org.apache.maven.surefire.booter.ProcessCheckerType
+org.apache.maven.surefire.booter.StartupConfiguration
+org.apache.maven.surefire.spi.MasterProcessChannelProcessorFactory
+java.util.Spliterators$1Adapter
+java.util.HashMap$ValueIterator
+jdk.internal.module.Resources
+jdk.internal.loader.BuiltinClassLoader$2
+java.lang.module.ModuleReader
+jdk.internal.module.SystemModuleFinders$SystemModuleReader
+jdk.internal.module.SystemModuleFinders$SystemImage
+jdk.internal.jimage.ImageReaderFactory
+jdk.internal.jimage.ImageReaderFactory$1
+jdk.internal.jimage.ImageReader
+jdk.internal.jimage.BasicImageReader
+jdk.internal.jimage.ImageReader$SharedImageReader
+jdk.internal.jimage.BasicImageReader$1
+java.security.AccessController
+java.security.AccessControlContext
+jdk.internal.jimage.NativeImageBuffer
+jdk.internal.jimage.NativeImageBuffer$1
+jdk.internal.jimage.ImageHeader
+java.nio.IntBuffer
+java.nio.DirectIntBufferU
+java.nio.DirectByteBufferR
+java.nio.DirectIntBufferRU
+jdk.internal.jimage.ImageStrings
+jdk.internal.jimage.ImageStringsReader
+jdk.internal.jimage.decompressor.Decompressor
+jdk.internal.jimage.ImageLocation
+jdk.internal.loader.BuiltinClassLoader$1
+java.lang.CompoundEnumeration
+jdk.internal.loader.URLClassPath$1
+jdk.internal.loader.URLClassPath$FileLoader
+java.util.zip.ZipFile$Source$$Lambda/0x00003fc00100b050
+java.net.URLConnection
+java.net.JarURLConnection
+sun.net.www.protocol.jar.JarURLConnection
+sun.net.www.protocol.jar.URLJarFile$URLJarFileCloseController
+sun.net.www.protocol.jar.JarFileFactory
+sun.net.www.URLConnection
+sun.net.www.protocol.file.FileURLConnection
+sun.net.www.MessageHeader
+jdk.internal.util.OperatingSystem
+java.lang.IncompatibleClassChangeError
+java.lang.NoSuchMethodError
+java.lang.invoke.LambdaForm$DMH/0x00003fc001046400
+sun.net.www.protocol.jar.URLJarFile
+sun.net.www.protocol.jar.URLJarFile$URLJarFileEntry
+sun.net.www.protocol.jar.JarURLConnection$JarURLInputStream
+java.lang.Readable
+java.io.Reader
+java.io.BufferedReader
+java.io.InputStreamReader
+sun.nio.cs.StreamDecoder
+java.nio.charset.CharsetDecoder
+sun.nio.cs.UTF_8$Decoder
+java.nio.CharBuffer
+java.nio.HeapCharBuffer
+java.nio.charset.CoderResult
+java.util.LinkedHashMap$LinkedKeySet
+java.util.LinkedHashMap$LinkedHashIterator
+java.util.LinkedHashMap$LinkedKeyIterator
+org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory
+org.apache.maven.surefire.booter.spi.LegacyMasterProcessChannelProcessorFactory
+org.apache.maven.surefire.api.booter.MasterProcessChannelEncoder
+org.apache.maven.surefire.api.booter.MasterProcessChannelDecoder
+org.apache.maven.surefire.api.util.internal.DaemonThreadFactory
+java.util.concurrent.Executors
+java.util.concurrent.Executors$DefaultThreadFactory
+org.apache.maven.surefire.api.util.internal.DaemonThreadFactory$NamedThreadFactory
+java.util.concurrent.AbstractExecutorService
+java.util.concurrent.ThreadPoolExecutor
+java.util.concurrent.ScheduledThreadPoolExecutor
+java.util.concurrent.RejectedExecutionHandler
+java.util.concurrent.ThreadPoolExecutor$AbortPolicy
+java.util.concurrent.BlockingQueue
+java.util.AbstractQueue
+java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue
+java.util.concurrent.Future
+java.util.concurrent.RunnableFuture
+java.util.concurrent.Delayed
+java.util.concurrent.ScheduledFuture
+java.util.concurrent.RunnableScheduledFuture
+java.util.concurrent.locks.Condition
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject
+jdk.internal.vm.StackableScope
+jdk.internal.vm.ThreadContainer
+jdk.internal.vm.SharedThreadContainer
+jdk.internal.invoke.MhUtil
+java.lang.invoke.VarHandles
+java.lang.invoke.VarHandleBooleans$FieldInstanceReadOnly
+java.lang.invoke.VarHandleBooleans$FieldInstanceReadWrite
+java.lang.invoke.VarHandleGuards
+java.lang.invoke.VarForm
+java.lang.invoke.VarHandleReferences$FieldInstanceReadOnly
+java.lang.invoke.VarHandleReferences$FieldInstanceReadWrite
+jdk.internal.vm.ThreadContainers
+jdk.internal.vm.ThreadContainers$RootContainer
+jdk.internal.vm.ThreadContainers$RootContainer$TrackingRootContainer
+org.apache.maven.surefire.booter.spi.SurefireMasterProcessChannelProcessorFactory
+java.nio.channels.Channel
+java.nio.channels.AsynchronousChannel
+java.nio.channels.AsynchronousByteChannel
+java.net.URISyntaxException
+java.util.concurrent.ExecutionException
+java.net.SocketAddress
+java.net.InetSocketAddress
+org.apache.maven.surefire.booter.ForkedNodeArg
+java.lang.UnsupportedOperationException
+org.apache.maven.plugin.surefire.log.api.NullConsoleLogger
+org.apache.maven.surefire.api.util.internal.Channels
+org.apache.maven.surefire.api.util.internal.Channels$1
+org.apache.maven.surefire.api.util.internal.Channels$2
+java.nio.channels.WritableByteChannel
+org.apache.maven.surefire.api.util.internal.WritableBufferedByteChannel
+java.nio.channels.ReadableByteChannel
+org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleWritableChannel
+org.apache.maven.surefire.api.util.internal.Channels$4
+java.nio.channels.ClosedChannelException
+java.nio.channels.NonWritableChannelException
+org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory$1
+java.util.concurrent.FutureTask
+java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask
+java.lang.invoke.VarHandleInts$FieldInstanceReadOnly
+java.lang.invoke.VarHandleInts$FieldInstanceReadWrite
+java.util.concurrent.FutureTask$WaitNode
+java.util.concurrent.Executors$RunnableAdapter
+java.util.concurrent.ThreadPoolExecutor$Worker
+java.lang.invoke.VarHandle$AccessDescriptor
+java.util.concurrent.locks.AbstractQueuedSynchronizer$Node
+org.apache.maven.surefire.api.stream.AbstractStreamEncoder
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ExclusiveNode
+org.apache.maven.surefire.booter.stream.EventEncoder
+org.apache.maven.surefire.booter.spi.EventChannelEncoder
+java.util.concurrent.ForkJoinPool$ManagedBlocker
+java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionNode
+java.lang.AssertionError
+org.apache.maven.surefire.api.report.ReportEntry
+org.apache.maven.surefire.api.booter.ForkedProcessEventType
+java.util.concurrent.atomic.AtomicBoolean
+org.apache.maven.surefire.booter.spi.CommandChannelDecoder
+org.apache.maven.surefire.api.stream.MalformedChannelException
+org.apache.maven.surefire.api.stream.AbstractStreamDecoder
+org.apache.maven.surefire.booter.stream.CommandDecoder
+org.apache.maven.surefire.api.util.internal.AbstractNoninterruptibleReadableChannel
+org.apache.maven.surefire.api.util.internal.Channels$3
+java.nio.channels.NonReadableChannelException
+org.apache.maven.surefire.api.stream.AbstractStreamDecoder$MalformedFrameException
+java.io.EOFException
+org.apache.maven.surefire.api.stream.SegmentType
+java.io.FileNotFoundException
+org.apache.maven.surefire.api.booter.Constants
+java.nio.charset.StandardCharsets
+sun.nio.cs.US_ASCII
+sun.nio.cs.ISO_8859_1
+sun.nio.cs.UTF_16BE
+sun.nio.cs.UTF_16LE
+sun.nio.cs.UTF_16
+sun.nio.cs.UTF_32BE
+sun.nio.cs.UTF_32LE
+sun.nio.cs.UTF_32
+org.apache.maven.surefire.api.booter.MasterProcessCommand
+org.apache.maven.surefire.api.stream.AbstractStreamDecoder$Segment
+org.apache.maven.surefire.booter.ForkedBooter$8
+java.lang.Thread$ThreadNumbering
+org.apache.maven.surefire.shared.utils.cli.ShutdownHookUtils
+java.lang.ApplicationShutdownHooks
+java.lang.ApplicationShutdownHooks$1
+java.lang.Shutdown
+java.lang.Shutdown$Lock
+org.apache.maven.surefire.api.booter.ForkingReporterFactory
+org.apache.maven.surefire.api.report.RunListener
+org.apache.maven.surefire.api.report.TestOutputReceiver
+org.apache.maven.surefire.api.report.TestReportListener
+org.apache.maven.surefire.api.booter.ForkingRunListener
+org.apache.maven.surefire.booter.CommandReader
+org.apache.maven.surefire.api.testset.TestSetFailedException
+java.util.concurrent.ConcurrentLinkedQueue
+java.util.concurrent.ConcurrentLinkedQueue$Node
+org.apache.maven.surefire.booter.CommandReader$CommandRunnable
+java.util.concurrent.atomic.AtomicReference
+java.util.concurrent.CountDownLatch
+java.util.concurrent.CountDownLatch$Sync
+org.apache.maven.surefire.api.stream.AbstractStreamDecoder$Memento
+org.apache.maven.surefire.booter.PpidChecker
+org.apache.maven.surefire.booter.PpidChecker$ProcessInfoConsumer
+org.apache.maven.surefire.api.stream.AbstractStreamDecoder$BufferedStream
+org.apache.maven.surefire.booter.PpidChecker$2
+jdk.internal.misc.Blocker
+org.apache.maven.surefire.booter.PpidChecker$1
+org.apache.maven.surefire.api.stream.AbstractStreamDecoder$StreamReadStatus
+org.apache.maven.surefire.booter.stream.CommandDecoder$1
+java.lang.NoSuchFieldError
+org.apache.maven.surefire.shared.lang3.SystemUtils
+org.apache.maven.surefire.api.booter.Command
+org.apache.maven.surefire.booter.CommandReader$1
+java.util.concurrent.ConcurrentLinkedQueue$Itr
+org.apache.maven.surefire.shared.lang3.SystemProperties
+org.apache.maven.surefire.shared.lang3.function.Suppliers
+org.apache.maven.surefire.shared.lang3.function.Suppliers$$Lambda/0x00003fc00104fb98
+org.apache.maven.surefire.shared.lang3.StringUtils
+java.util.regex.Pattern
+java.util.regex.Pattern$Node
+java.util.regex.Pattern$LastNode
+java.util.regex.Pattern$GroupHead
+java.util.regex.CharPredicates
+java.lang.Character$Subset
+java.lang.Character$UnicodeBlock
+java.util.regex.Pattern$CharPredicate
+java.util.regex.CharPredicates$$Lambda/0x00003fc0010185c8
+java.util.regex.Pattern$BmpCharPredicate
+java.util.regex.Pattern$CharProperty
+java.util.regex.Pattern$Qtype
+java.util.regex.Pattern$BmpCharProperty
+java.util.regex.Pattern$CharPropertyGreedy
+java.util.regex.Pattern$SliceNode
+java.util.regex.Pattern$Slice
+java.util.regex.Pattern$Begin
+java.util.regex.Pattern$First
+java.util.regex.Pattern$Start
+java.util.regex.Pattern$StartS
+java.util.regex.Pattern$TreeInfo
+org.apache.maven.surefire.shared.lang3.JavaVersion
+org.apache.maven.surefire.shared.lang3.SystemProperties$$Lambda/0x00003fc001050250
+org.apache.maven.surefire.shared.lang3.math.NumberUtils
+java.lang.NumberFormatException
+java.math.BigInteger
+java.math.BigDecimal
+jdk.internal.math.FloatingDecimal
+jdk.internal.math.FloatingDecimal$BinaryToASCIIConverter
+jdk.internal.math.FloatingDecimal$ExceptionalBinaryToASCIIBuffer
+jdk.internal.math.FloatingDecimal$BinaryToASCIIBuffer
+jdk.internal.math.FloatingDecimal$1
+jdk.internal.math.FloatingDecimal$ASCIIToBinaryConverter
+jdk.internal.math.FloatingDecimal$PreparedASCIIToBinaryBuffer
+jdk.internal.math.MathUtils
+jdk.internal.math.FloatingDecimal$ASCIIToBinaryBuffer
+jdk.internal.math.ToDecimal
+jdk.internal.math.FloatToDecimal
+org.apache.maven.surefire.shared.lang3.SystemUtils$$Lambda/0x00003fc001050890
+org.apache.maven.surefire.shared.lang3.Strings
+org.apache.maven.surefire.shared.lang3.Strings$CiStrings
+org.apache.maven.surefire.shared.lang3.Strings$CsStrings
+org.apache.maven.surefire.shared.lang3.CharSequenceUtils
+java.util.regex.Pattern$GroupTail
+java.util.regex.CharPredicates$$Lambda/0x800000024
+java.util.regex.Pattern$BmpCharPropertyGreedy
+java.util.regex.Pattern$$Lambda/0x800000027
+java.util.regex.Pattern$Ques
+java.util.regex.Pattern$BranchConn
+java.util.regex.Pattern$Branch
+java.util.regex.ASCII
+java.util.regex.Pattern$Curly
+java.util.regex.CharPredicates$$Lambda/0x800000025
+java.util.regex.Pattern$Dollar
+java.util.regex.Pattern$BitClass
+org.apache.maven.surefire.booter.ForkedBooter$4
+org.apache.maven.surefire.api.booter.BiProperty
+org.apache.maven.surefire.booter.ForkedBooter$3
+org.apache.maven.surefire.booter.ForkedBooter$PingScheduler
+org.apache.maven.surefire.api.provider.ProviderParameters
+org.apache.maven.surefire.api.booter.BaseProviderFactory
+org.apache.maven.surefire.api.util.ScanResult
+org.apache.maven.surefire.api.util.DirectoryScanner
+org.apache.maven.surefire.api.util.RunOrderCalculator
+org.apache.maven.surefire.api.util.ReflectionUtils
+java.lang.IllegalAccessException
+java.lang.reflect.InvocationTargetException
+org.apache.maven.surefire.api.util.SurefireReflectionException
+org.apache.maven.surefire.api.provider.SurefireProvider
+org.apache.maven.surefire.api.provider.AbstractProvider
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider
+java.io.StringReader
+java.io.UncheckedIOException
+org.apache.maven.surefire.api.util.ScannerFilter
+java.lang.invoke.BoundMethodHandle$Species_LL
+java.lang.invoke.LambdaForm$MH/0x00003fc001054000
+java.lang.invoke.LambdaForm$MH/0x00003fc001054400
+org.apache.maven.surefire.junitplatform.LauncherSessionFactory
+org.apache.maven.surefire.junitplatform.CancellationTokenAdapter
+org.apache.maven.surefire.junitplatform.LauncherSessionAdapter
+org.apache.maven.surefire.junitplatform.LauncherSessionFactory$$Lambda/0x00003fc001053d30
+org.junit.platform.launcher.TagFilter
+org.junit.platform.commons.JUnitException
+org.junit.platform.commons.util.PreconditionViolationException
+org.junit.platform.commons.PreconditionViolationException
+org.junit.platform.engine.Filter
+org.junit.platform.launcher.PostDiscoveryFilter
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001056d58
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001056fa0
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc0010571e0
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001057428
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001057668
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc0010578c0
+org.apache.maven.surefire.junitplatform.TestMethodFilter
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001057d80
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001055000
+org.junit.platform.launcher.EngineFilter
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc0010554a0
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc0010556e8
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001055928
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc001055b70
+org.junit.platform.engine.ExecutionRequest
+org.apache.maven.surefire.api.report.Stoppable
+java.lang.invoke.LambdaForm$DMH/0x00003fc001058000
+org.apache.maven.surefire.api.report.Stoppable$$Lambda/0x00003fc001054c50
+org.junit.platform.launcher.TestExecutionListener
+org.apache.maven.surefire.report.RunModeSetter
+org.apache.maven.surefire.junitplatform.RunListenerAdapter
+org.apache.maven.surefire.api.report.OutputReportEntry
+org.apache.maven.surefire.api.report.StackTraceWriter
+org.apache.maven.surefire.api.report.TestSetReportEntry
+org.apache.maven.surefire.report.ClassMethodIndexer
+org.apache.maven.surefire.api.report.RunMode
+org.apache.maven.surefire.api.report.ConsoleOutputCapture
+org.apache.maven.surefire.api.report.ConsoleOutputCapture$ForwardingPrintStream
+org.apache.maven.surefire.api.report.ConsoleOutputCapture$NullOutputStream
+java.util.logging.Logger
+java.util.logging.Handler
+java.util.logging.Level
+java.util.logging.Level$KnownLevel
+java.util.logging.Level$KnownLevel$$Lambda/0x800000020
+java.util.logging.Level$KnownLevel$$Lambda/0x800000021
+java.util.logging.Logger$LoggerBundle
+java.util.logging.Logger$ConfigurationData
+java.util.logging.LogManager$LoggerContext
+java.util.logging.LogManager$SystemLoggerContext
+java.util.logging.LogManager$LogNode
+java.util.Collections$SynchronizedMap
+java.util.logging.LogManager$Cleaner
+sun.util.logging.internal.LoggingProviderImpl$LogManagerAccess
+java.util.logging.LogManager$LoggingProviderAccess
+java.lang.System$LoggerFinder
+jdk.internal.logger.DefaultLoggerFinder
+sun.util.logging.internal.LoggingProviderImpl
+java.util.logging.LogManager$RootLogger
+java.nio.file.Paths
+java.nio.file.FileSystems
+java.nio.file.FileSystems$DefaultFileSystemHolder
+java.net.URI$Parser
+java.util.logging.LogManager$LoggerWeakRef
+java.lang.invoke.StringConcatFactory
+java.lang.invoke.MethodHandleImpl$AsVarargsCollector
+java.lang.invoke.LambdaForm$MH/0x00003fc001058400
+java.util.logging.LogManager$VisitedLoggers
+java.util.Collections$3
+java.util.concurrent.ConcurrentHashMap$KeyIterator
+java.util.Hashtable$Enumerator
+java.util.logging.Level$$Lambda/0x80000001f
+java.util.ArrayList$ArrayListSpliterator
+java.util.logging.Level$KnownLevel$$Lambda/0x800000022
+java.util.stream.ReferencePipeline$7
+java.util.stream.FindOps
+java.util.stream.FindOps$FindSink
+java.util.stream.FindOps$FindSink$OfRef
+java.util.stream.FindOps$FindSink$OfRef$$Lambda/0x800000049
+java.util.stream.FindOps$FindSink$OfRef$$Lambda/0x800000048
+java.util.stream.FindOps$FindOp
+java.util.stream.ReferencePipeline$7$1FlatMap
+java.util.stream.Streams$AbstractStreamBuilderImpl
+java.util.stream.Stream$Builder
+java.util.stream.Streams$StreamBuilderImpl
+java.util.stream.Streams
+java.util.stream.MatchOps$MatchKind
+java.util.stream.MatchOps
+java.util.stream.MatchOps$MatchOp
+java.util.stream.MatchOps$BooleanTerminalSink
+java.util.stream.MatchOps$$Lambda/0x800000004
+java.util.stream.MatchOps$1MatchSink
+java.util.IdentityHashMap$Values
+java.lang.System$Logger
+sun.util.logging.PlatformLogger$Bridge
+sun.util.logging.PlatformLogger$ConfigurableBridge
+jdk.internal.logger.BootstrapLogger
+jdk.internal.logger.BootstrapLogger$DetectBackend
+jdk.internal.logger.BootstrapLogger$LoggingBackend
+jdk.internal.logger.BootstrapLogger$RedirectedLoggers
+jdk.internal.logger.BootstrapLogger$BootstrapExecutors
+java.util.logging.Logger$SystemLoggerHelper
+org.junit.platform.launcher.LauncherSession
+org.junit.platform.launcher.core.LauncherFactory
+org.junit.platform.engine.ConfigurationParameters
+org.junit.platform.launcher.Launcher
+org.junit.platform.launcher.core.LauncherConfig
+org.junit.platform.launcher.core.LauncherConfig$Builder
+org.junit.platform.launcher.core.DefaultLauncherConfig
+org.junit.platform.commons.util.Preconditions
+org.junit.platform.launcher.core.LauncherConfigurationParameters
+org.junit.platform.commons.logging.LoggerFactory
+org.junit.platform.commons.logging.Logger
+org.junit.platform.commons.logging.LoggerFactory$DelegatingLogger
+org.junit.platform.launcher.core.LauncherConfigurationParameters$Builder
+java.lang.invoke.LambdaForm$DMH/0x00003fc001058800
+org.junit.platform.launcher.core.LauncherConfigurationParameters$Builder$$Lambda/0x00003fc00105f838
+org.junit.platform.commons.util.CollectionUtils
+org.junit.platform.launcher.core.LauncherConfigurationParameters$ParameterProvider
+org.junit.platform.launcher.core.LauncherConfigurationParameters$ParameterProvider$2
+org.junit.platform.commons.util.StringUtils
+org.junit.platform.commons.util.StringUtils$TwoPartSplitResult
+java.util.regex.CharPredicates$$Lambda/0x00003fc00101b928
+org.junit.platform.commons.util.ClassLoaderUtils
+org.junit.platform.launcher.core.LauncherConfigurationParameters$ParameterProvider$3
+org.junit.platform.launcher.core.DefaultLauncherSession
+org.junit.platform.launcher.LauncherInterceptor
+org.junit.platform.launcher.core.DefaultLauncherSession$1
+org.junit.platform.launcher.core.LauncherConfigurationParameters$$Lambda/0x00003fc00105b190
+org.junit.platform.launcher.core.LauncherConfigurationParameters$$Lambda/0x00003fc00105b3e0
+java.lang.invoke.TypeConvertingMethodAdapter$1
+java.lang.invoke.TypeConvertingMethodAdapter$BoxHolder
+org.junit.platform.launcher.core.LauncherConfigurationParameters$$Lambda/0x00003fc00105b638
+org.junit.platform.launcher.core.ClasspathAlignmentCheckingLauncherInterceptor
+org.junit.platform.launcher.LauncherSessionListener
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc00105bcc8
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001059230
+org.junit.platform.engine.support.store.NamespacedHierarchicalStoreException
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$CloseAction
+java.lang.invoke.LambdaForm$DMH/0x00003fc001058c00
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$CloseAction$$Lambda/0x00003fc0010598f0
+java.util.stream.SliceOps
+java.util.stream.ReferencePipeline$StatefulOp
+java.util.stream.SliceOps$1
+org.junit.platform.launcher.core.DefaultLauncherSession$$Lambda/0x00003fc001059b18
+java.util.stream.ReduceOps$1
+java.util.stream.ReduceOps$1ReducingSink
+java.util.stream.SliceOps$1$1
+org.junit.platform.launcher.LauncherInterceptor$Invocation
+java.lang.invoke.LambdaForm$DMH/0x00003fc001060000
+org.junit.platform.launcher.core.DefaultLauncherSession$$Lambda/0x00003fc001064000
+org.junit.platform.launcher.core.ListenerRegistry
+org.junit.platform.launcher.listeners.session.LauncherSessionListeners
+org.junit.platform.launcher.core.ListenerRegistry$$Lambda/0x00003fc001064678
+org.junit.platform.launcher.core.ServiceLoaderRegistry
+org.junit.platform.launcher.core.ServiceLoaderRegistry$$Lambda/0x00003fc001064ad0
+org.junit.platform.launcher.core.ServiceLoaderRegistry$$Lambda/0x00003fc001064d28
+org.junit.platform.launcher.core.ServiceLoaderRegistry$$Lambda/0x00003fc001064f78
+org.junit.platform.commons.util.ServiceLoaderUtils
+java.util.ServiceLoader$ProviderSpliterator
+org.junit.platform.commons.util.ServiceLoaderUtils$$Lambda/0x00003fc0010653e8
+org.junit.platform.commons.util.ServiceLoaderUtils$$Lambda/0x00003fc001065648
+org.junit.platform.launcher.core.ServiceLoaderRegistry$$Lambda/0x00003fc001065890
+java.lang.invoke.LambdaForm$DMH/0x00003fc001060400
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001065ac0
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001065d00
+org.junit.platform.commons.util.Preconditions$$Lambda/0x00003fc001065f40
+org.junit.platform.launcher.LauncherSessionListener$1
+org.junit.platform.launcher.core.DelegatingLauncher
+org.junit.platform.launcher.core.InterceptingLauncher
+java.lang.invoke.DirectMethodHandle$Special
+org.junit.platform.launcher.core.DefaultLauncherSession$$Lambda/0x00003fc0010668b0
+org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry
+org.junit.platform.engine.TestEngine
+org.junit.platform.launcher.core.ServiceLoaderTestEngineRegistry$$Lambda/0x00003fc001066ef8
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001067128
+org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine
+org.junit.jupiter.engine.JupiterTestEngine
+org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutorService
+org.junit.jupiter.engine.config.JupiterConfiguration
+org.junit.platform.engine.TestDescriptor
+org.junit.platform.engine.support.hierarchical.EngineExecutionContext
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001062208
+org.junit.platform.launcher.core.DefaultLauncher
+org.junit.platform.launcher.TestPlan
+org.junit.platform.launcher.core.InternalTestPlan
+org.junit.platform.launcher.core.LauncherListenerRegistry
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners
+org.junit.platform.engine.EngineDiscoveryListener
+org.junit.platform.launcher.LauncherDiscoveryListener
+org.junit.platform.launcher.core.ListenerRegistry$$Lambda/0x00003fc001063440
+org.junit.platform.launcher.core.CompositeTestExecutionListener
+org.junit.platform.launcher.core.ListenerRegistry$$Lambda/0x00003fc001063930
+org.junit.platform.launcher.core.EngineExecutionOrchestrator
+org.junit.platform.launcher.TestPlan$Visitor
+org.junit.platform.engine.EngineExecutionListener
+org.junit.platform.launcher.core.DiscoveryIssueException
+org.junit.platform.launcher.core.DefaultLauncher$$Lambda/0x00003fc001061470
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator
+org.junit.platform.engine.EngineDiscoveryRequest
+org.junit.platform.launcher.LauncherDiscoveryRequest
+org.junit.platform.launcher.core.EngineDiscoveryResultValidator
+org.junit.platform.launcher.core.EngineIdValidator
+org.junit.platform.launcher.core.EngineIdValidator$$Lambda/0x00003fc001060a10
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001060c40
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001068000
+org.junit.platform.commons.util.ClassNamePatternFilterUtils
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001068450
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001068698
+java.lang.invoke.LambdaForm$DMH/0x00003fc00106c000
+org.junit.platform.launcher.core.ServiceLoaderRegistry$$Lambda/0x00003fc0010688f0
+org.junit.platform.launcher.core.ServiceLoaderRegistry$$Lambda/0x00003fc001068b50
+org.junitpioneer.jupiter.issue.IssueExtensionExecutionListener
+org.junitpioneer.jupiter.IssueProcessor
+org.junit.platform.launcher.listeners.UniqueIdTrackingListener
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001069500
+org.junit.platform.launcher.core.LauncherFactory$$Lambda/0x00003fc001069940
+org.apache.maven.surefire.junitplatform.LauncherAdapter
+org.apache.maven.surefire.junitplatform.TestPlanScannerFilter
+org.apache.maven.surefire.api.util.DefaultScanResult
+jdk.internal.loader.URLClassPath$FileLoader$1
+software.amazon.lambda.powertools.metadata.LambdaMetadataTest
+org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder
+org.junit.platform.engine.OutputDirectoryCreator
+org.junit.platform.engine.DiscoverySelector
+org.junit.platform.engine.discovery.DiscoverySelectors
+org.junit.platform.engine.discovery.ClassSelector
+org.junit.platform.commons.util.Preconditions$$Lambda/0x00003fc00106b118
+java.lang.invoke.LambdaForm$DMH/0x00003fc00106c400
+org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder$$Lambda/0x00003fc00106b358
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners$LauncherDiscoveryListenerType
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners$LauncherDiscoveryListenerType$$Lambda/0x00003fc00106b7e8
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners$LauncherDiscoveryListenerType$$Lambda/0x00003fc00106ba10
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners$$Lambda/0x00003fc00106e000
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners$$Lambda/0x00003fc00106e260
+org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener
+org.junit.platform.engine.EngineDiscoveryListener$1
+org.junit.platform.launcher.LauncherDiscoveryListener$1
+org.junit.platform.launcher.listeners.discovery.LauncherDiscoveryListeners$$Lambda/0x00003fc00106ec08
+org.junit.platform.launcher.core.HierarchicalOutputDirectoryCreator
+java.util.regex.Pattern$$Lambda/0x00003fc00101d840
+java.util.regex.Pattern$$Lambda/0x00003fc00101daa8
+java.util.regex.Pattern$$Lambda/0x80000002f
+org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder$$Lambda/0x00003fc00106f080
+org.junit.platform.launcher.core.DefaultDiscoveryRequest
+org.junit.platform.launcher.core.InterceptingLauncher$$Lambda/0x00003fc00106f558
+org.junit.platform.launcher.core.LauncherPhase
+org.junit.platform.engine.UniqueId
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$$Lambda/0x00003fc00106d000
+org.junit.platform.launcher.core.DiscoveryIssueCollector
+org.junit.platform.engine.TestSource
+org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener
+org.junit.platform.launcher.core.DelegatingLauncherDiscoveryRequest
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$1
+org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener$$Lambda/0x00003fc00106c800
+org.junit.platform.launcher.core.EngineFilterer
+org.junit.platform.engine.FilterResult
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc001070000
+java.lang.invoke.LambdaForm$DMH/0x00003fc001074000
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc001070250
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$$Lambda/0x00003fc0010704a8
+org.junit.platform.engine.UniqueIdFormat
+java.io.UnsupportedEncodingException
+java.util.Formatter
+java.util.Locale$Category
+java.util.Formatter$Conversion
+java.util.Formatter$FormatString
+java.util.Formatter$FormatSpecifier
+java.util.Formatter$FixedString
+java.util.Formattable
+java.util.Formatter$Flags
+java.util.regex.Pattern$$Lambda/0x00003fc00101e3c0
+java.lang.invoke.LambdaForm$DMH/0x00003fc001074400
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc001070900
+java.net.URLEncoder
+java.util.function.IntPredicate
+jdk.internal.util.ImmutableBitSetPredicate
+jdk.internal.util.ImmutableBitSetPredicate$SmallImmutableBitSetPredicate
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc001070b48
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc001070d90
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc001070fd8
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc001071220
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc001071468
+org.junit.platform.engine.UniqueId$Segment
+org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener$$Lambda/0x00003fc0010718d8
+org.junit.jupiter.engine.config.CachingJupiterConfiguration
+org.junit.jupiter.engine.config.DefaultJupiterConfiguration
+org.junit.jupiter.api.parallel.ExecutionMode
+org.junit.jupiter.api.TestInstance$Lifecycle
+org.junit.jupiter.api.io.CleanupMode
+org.junit.jupiter.api.extension.TestInstantiationAwareExtension$ExtensionContextScope
+org.junit.jupiter.engine.config.EnumConfigurationParameterConverter
+org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter
+org.junit.jupiter.api.DisplayNameGenerator
+org.junit.jupiter.api.MethodOrderer
+org.junit.jupiter.api.ClassOrderer
+org.junit.jupiter.api.io.TempDirFactory
+org.junit.platform.engine.support.hierarchical.Node
+org.junit.platform.engine.support.descriptor.AbstractTestDescriptor
+org.junit.platform.engine.support.descriptor.EngineDescriptor
+org.junit.jupiter.engine.descriptor.JupiterEngineDescriptor
+org.junit.jupiter.engine.extension.ExtensionRegistry
+org.junit.jupiter.api.extension.ExtensionContext
+org.junit.jupiter.engine.discovery.DiscoverySelectorResolver
+org.junit.platform.engine.support.discovery.SelectorResolver
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$InitializationContext
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$Builder
+org.junit.jupiter.engine.discovery.DiscoverySelectorResolver$$Lambda/0x00003fc001077650
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$Builder$$Lambda/0x00003fc001077898
+org.junit.jupiter.engine.discovery.DiscoverySelectorResolver$$Lambda/0x00003fc001077ae8
+org.junit.jupiter.engine.discovery.DiscoverySelectorResolver$$Lambda/0x00003fc001077d30
+org.junit.platform.engine.TestDescriptor$Visitor
+org.junit.jupiter.engine.discovery.DiscoverySelectorResolver$$Lambda/0x00003fc001075208
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter
+org.junit.platform.engine.DiscoveryIssue
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$$Lambda/0x00003fc001075860
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$$Lambda/0x00003fc001075ab0
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$DefaultInitializationContext
+org.junit.platform.engine.DiscoveryFilter
+org.junit.platform.engine.discovery.ClassNameFilter
+org.junit.platform.launcher.core.DefaultDiscoveryRequest$$Lambda/0x00003fc001074c10
+org.junit.platform.launcher.core.DefaultDiscoveryRequest$$Lambda/0x00003fc001078000
+org.junit.platform.engine.discovery.PackageNameFilter
+org.junit.platform.engine.CompositeFilter
+org.junit.platform.engine.CompositeFilter$1
+org.junit.platform.engine.CompositeFilter$1$$Lambda/0x00003fc0010788e0
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$$Lambda/0x00003fc001078b38
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolver$$Lambda/0x00003fc001078d88
+java.util.stream.Collectors$$Lambda/0x00003fc00101ecf8
+java.util.stream.Collectors$$Lambda/0x00003fc00101ef30
+org.junit.platform.engine.support.discovery.ClassContainerSelectorResolver
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc0010794f0
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc001079748
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc0010799a0
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc001079c00
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod
+org.junit.jupiter.engine.discovery.predicates.IsTestMethod
+org.junit.jupiter.api.Test
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$Condition
+org.junit.jupiter.engine.discovery.predicates.IsTestMethod$$Lambda/0x00003fc00107a750
+org.junit.platform.commons.support.ModifierSupport
+java.lang.invoke.LambdaForm$DMH/0x00003fc00107c000
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod$$Lambda/0x00003fc00107ab98
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod$$Lambda/0x00003fc00107adf0
+java.lang.invoke.LambdaForm$DMH/0x00003fc00107c400
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$$Lambda/0x00003fc00107b040
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod$$Lambda/0x00003fc00107b2a0
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod$$Lambda/0x00003fc00107b4f8
+java.lang.invoke.LambdaForm$DMH/0x00003fc00107c800
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$Condition$$Lambda/0x00003fc00107b748
+org.junit.platform.commons.util.ReflectionUtils
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod$$Lambda/0x00003fc00107bbb8
+org.junit.jupiter.engine.discovery.predicates.IsTestableMethod$$Lambda/0x00003fc00107e000
+org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod
+org.junit.jupiter.api.DynamicNode
+java.util.Formatter$FormatSpecifierParser
+org.junit.jupiter.api.TestFactory
+org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod$$Lambda/0x00003fc00107e8f0
+org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod$$Lambda/0x00003fc00107eb28
+org.junit.jupiter.engine.discovery.predicates.IsTestFactoryMethod$$Lambda/0x00003fc00107ed88
+java.util.function.Predicate$$Lambda/0x00003fc00101f398
+org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod
+org.junit.jupiter.api.TestTemplate
+org.junit.jupiter.engine.discovery.predicates.IsTestTemplateMethod$$Lambda/0x00003fc00107f450
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107f688
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107f8e0
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107fb30
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107fd88
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107d000
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107d258
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107d4a0
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107d6f8
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107d940
+org.junit.jupiter.engine.discovery.predicates.TestClassPredicates$$Lambda/0x00003fc00107db98
+org.junit.jupiter.engine.discovery.ClassSelectorResolver
+org.junit.jupiter.engine.descriptor.ResourceLockAware
+org.junit.jupiter.engine.descriptor.TestClassAware
+org.junit.jupiter.engine.descriptor.Validatable
+org.junit.jupiter.engine.descriptor.JupiterTestDescriptor
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor
+org.junit.jupiter.engine.descriptor.ClassTestDescriptor
+org.junit.jupiter.engine.descriptor.NestedClassTestDescriptor
+org.junit.jupiter.api.extension.ClassTemplateInvocationContext
+org.junit.jupiter.engine.descriptor.Filterable
+org.junit.jupiter.engine.descriptor.ClassTemplateTestDescriptor
+org.junit.jupiter.engine.discovery.MethodSelectorResolver
+org.junit.jupiter.engine.discovery.MethodFinder
+java.util.regex.Pattern$$Lambda/0x00003fc00101f5f8
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$TestDescriptorFactory
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor
+org.junit.jupiter.engine.extension.ExtensionRegistrar
+java.lang.invoke.LambdaForm$DMH/0x00003fc001084000
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$$Lambda/0x00003fc001083cd8
+org.junit.jupiter.engine.descriptor.TestFactoryTestDescriptor
+org.junit.jupiter.engine.descriptor.DynamicNodeTestDescriptor
+org.junit.jupiter.engine.descriptor.DynamicContainerTestDescriptor
+org.junit.jupiter.engine.descriptor.DynamicTestTestDescriptor
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$$Lambda/0x00003fc001087338
+org.junit.jupiter.engine.descriptor.TestTemplateTestDescriptor
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$$Lambda/0x00003fc001087b00
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor
+org.junit.jupiter.api.ClassOrdererContext
+org.junit.platform.commons.util.LruCache
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc001085c10
+org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter$$Lambda/0x00003fc001084800
+org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter$$Lambda/0x00003fc001084a48
+org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter$$Lambda/0x00003fc001084ca0
+org.junit.jupiter.engine.config.InstantiatingConfigurationParameterConverter$$Lambda/0x00003fc001084400
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$DescriptorWrapperOrderer
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$MessageGenerator
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$DescriptorWrapperOrderer$$Lambda/0x00003fc001088428
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$DescriptorWrapperOrderer$$Lambda/0x00003fc001088650
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc001088878
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc001088ad0
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor
+org.junit.jupiter.api.MethodOrdererContext
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc001089170
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010893c8
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc001089610
+java.lang.invoke.InnerClassLambdaMetafactory$SerializationSupport
+java.lang.invoke.InnerClassLambdaMetafactory$4
+java.lang.classfile.constantpool.ConstantValueEntry
+java.lang.classfile.constantpool.StringEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$StringEntryImpl
+sun.invoke.util.BytecodeDescriptor
+java.lang.classfile.constantpool.IntegerEntry
+jdk.internal.classfile.impl.AbstractPoolEntry$IntegerEntryImpl
+jdk.internal.classfile.impl.BytecodeHelpers$1
+java.util.Comparator$$Lambda/0x00003fc001020b98
+java.util.Collections$ReverseComparator
+java.util.Comparators$NaturalOrderComparator
+java.util.Collections$ReverseComparator2
+java.util.function.UnaryOperator
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc001089860
+org.junit.jupiter.engine.discovery.DiscoverySelectorResolver$$Lambda/0x00003fc001089ac8
+org.junit.platform.engine.CompositeTestDescriptorVisitor
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution
+org.junit.platform.engine.support.discovery.SelectorResolver$Context
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$DefaultContext
+org.junit.platform.engine.support.discovery.SelectorResolver$Match
+org.junit.platform.engine.support.discovery.SelectorResolver$Match$$Lambda/0x00003fc00108a7d8
+org.junit.platform.engine.support.discovery.SelectorResolver$Match$Type
+org.junit.platform.launcher.core.DefaultDiscoveryRequest$$Lambda/0x00003fc00108ae50
+org.junit.platform.launcher.core.DefaultDiscoveryRequest$$Lambda/0x00003fc00108b0b0
+java.util.ArrayDeque$$Lambda/0x00003fc001021c80
+org.junit.platform.engine.discovery.UniqueIdSelector
+org.junit.platform.engine.support.discovery.SelectorResolver$Resolution
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc00108b770
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc00108b9c0
+org.junit.platform.engine.discovery.ClasspathResourceSelector
+org.junit.platform.engine.discovery.ClasspathRootSelector
+org.junit.platform.commons.support.ReflectionSupport
+org.junit.platform.commons.util.ClasspathScannerLoader
+org.junit.platform.commons.support.scanning.ClasspathScanner
+java.util.Spliterators$IteratorSpliterator
+java.lang.foreign.MemorySegment$Scope
+jdk.internal.foreign.MemorySessionImpl
+org.junit.platform.commons.util.DefaultClasspathScanner
+java.nio.file.FileVisitor
+org.junit.platform.commons.util.ClasspathScannerLoader$$Lambda/0x00003fc00108c960
+org.junit.platform.commons.function.Try
+java.lang.invoke.LambdaForm$DMH/0x00003fc001090000
+org.junit.platform.commons.util.ClasspathScannerLoader$$Lambda/0x00003fc00108cde0
+java.lang.invoke.LambdaForm$DMH/0x00003fc001090400
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00108d018
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00108d258
+org.junit.platform.commons.function.Try$Success
+org.junit.platform.commons.function.Try$Failure
+org.junit.platform.commons.function.Try$$Lambda/0x00003fc00108d948
+java.util.regex.MatchResult
+java.util.regex.Matcher
+java.util.regex.IntHashSet
+org.junit.platform.engine.discovery.ClassSelector$$Lambda/0x00003fc00108db78
+org.junit.jupiter.api.Nested
+org.junit.platform.commons.support.AnnotationSupport
+org.junit.platform.commons.util.AnnotationUtils
+java.lang.annotation.Inherited
+sun.reflect.generics.parser.SignatureParser
+sun.reflect.generics.tree.Tree
+sun.reflect.generics.tree.TypeTree
+sun.reflect.generics.tree.TypeArgument
+sun.reflect.generics.tree.ReturnType
+sun.reflect.generics.tree.TypeSignature
+sun.reflect.generics.tree.BaseType
+sun.reflect.generics.tree.FieldTypeSignature
+sun.reflect.generics.tree.SimpleClassTypeSignature
+sun.reflect.generics.tree.ClassTypeSignature
+sun.reflect.generics.scope.Scope
+sun.reflect.generics.scope.AbstractScope
+sun.reflect.generics.scope.ClassScope
+sun.reflect.generics.factory.GenericsFactory
+sun.reflect.generics.factory.CoreReflectionFactory
+sun.reflect.generics.visitor.TypeTreeVisitor
+sun.reflect.generics.visitor.Reifier
+java.lang.annotation.Target
+java.lang.reflect.GenericArrayType
+sun.reflect.annotation.AnnotationType
+java.lang.annotation.ElementType
+java.lang.annotation.Retention
+java.lang.annotation.Documented
+java.lang.annotation.RetentionPolicy
+sun.reflect.annotation.ExceptionProxy
+sun.reflect.annotation.AnnotationTypeMismatchExceptionProxy
+java.lang.reflect.InvocationHandler
+sun.reflect.annotation.AnnotationInvocationHandler
+java.lang.reflect.Proxy
+java.lang.ClassValue
+java.lang.reflect.Proxy$1
+java.lang.ClassValue$Entry
+java.lang.ClassValue$Identity
+java.lang.ClassValue$Version
+jdk.internal.loader.AbstractClassLoaderValue$Sub
+java.lang.reflect.Proxy$$Lambda/0x00003fc00102ac70
+java.lang.reflect.Proxy$ProxyBuilder
+java.lang.PublicMethods
+java.util.LinkedHashMap$LinkedValues
+java.util.LinkedHashMap$LinkedValueIterator
+java.lang.reflect.Proxy$ProxyBuilder$$Lambda/0x00003fc00102b960
+java.lang.module.ModuleDescriptor$Modifier
+java.lang.reflect.AccessFlag
+java.lang.reflect.AccessFlag$Location
+java.lang.module.ModuleDescriptor$Builder
+jdk.internal.module.Checks
+java.lang.module.ModuleDescriptor$Builder$$Lambda/0x80000000e
+java.lang.WeakPairMap$WeakRefPeer
+java.lang.WeakPairMap$Pair$Weak
+java.lang.WeakPairMap$Pair$Weak$1
+java.lang.Module$$Lambda/0x00003fc00102c2f0
+java.lang.WeakPairMap$$Lambda/0x00003fc00102c528
+java.lang.reflect.Proxy$ProxyBuilder$ProxyClassContext
+java.lang.reflect.ProxyGenerator
+java.lang.classfile.ClassFile$Option
+java.lang.classfile.ClassFile$StackMapsOption
+java.util.StringJoiner
+java.lang.classfile.attribute.StackMapFrameInfo$VerificationTypeInfo
+java.lang.classfile.attribute.StackMapFrameInfo$ObjectVerificationTypeInfo
+jdk.internal.classfile.impl.StackMapDecoder$ObjectVerificationTypeInfoImpl
+java.lang.reflect.ProxyGenerator$ProxyMethod
+java.lang.reflect.ProxyGenerator$$Lambda/0x00003fc00102d1c0
+java.lang.reflect.ProxyGenerator$$Lambda/0x00003fc00102d408
+java.lang.reflect.ProxyGenerator$$Lambda/0x00003fc00102d648
+java.lang.reflect.ProxyGenerator$ProxyMethod$$Lambda/0x00003fc00102d888
+java.lang.classfile.attribute.ExceptionsAttribute
+jdk.internal.classfile.impl.UnboundAttribute$UnboundExceptionsAttribute
+jdk.internal.classfile.impl.AbstractAttributeMapper$ExceptionsMapper
+java.lang.reflect.ProxyGenerator$ProxyMethod$$Lambda/0x00003fc00102e1f0
+java.lang.reflect.ProxyGenerator$PrimitiveTypeInfo
+java.lang.classfile.instruction.ExceptionCatch
+jdk.internal.classfile.impl.AbstractPseudoInstruction
+jdk.internal.classfile.impl.AbstractPseudoInstruction$ExceptionCatchImpl
+java.lang.classfile.attribute.StackMapFrameInfo
+jdk.internal.classfile.impl.StackMapDecoder$StackMapFrameImpl
+java.lang.classfile.attribute.StackMapTableAttribute
+jdk.internal.classfile.impl.UnboundAttribute$UnboundStackMapTableAttribute
+jdk.internal.classfile.impl.AbstractAttributeMapper$StackMapTableMapper
+java.lang.reflect.ProxyGenerator$$Lambda/0x00003fc00102ef60
+java.lang.reflect.ProxyGenerator$$Lambda/0x00003fc00102f1a0
+java.lang.reflect.ProxyGenerator$$Lambda/0x00003fc00102f3e0
+jdk.internal.classfile.impl.StackCounter
+jdk.internal.classfile.impl.StackCounter$Target
+java.lang.classfile.attribute.StackMapFrameInfo$SimpleVerificationTypeInfo
+jdk.internal.classfile.impl.StackMapDecoder
+jdk.internal.classfile.impl.StackMapDecoder$1
+java.util.Arrays$LegacyMergeSort
+java.util.TimSort
+jdk.proxy1.$Proxy0
+sun.reflect.annotation.AnnotationParser$$Lambda/0x00003fc0010302a8
+java.lang.invoke.LambdaForm$DMH/0x00003fc001090800
+jdk.proxy1.$Proxy1
+jdk.proxy1.$Proxy2
+org.apiguardian.api.API
+org.apiguardian.api.API$Status
+jdk.proxy2.$Proxy3
+java.lang.reflect.UndeclaredThrowableException
+java.lang.Class$AnnotationData
+java.util.Collections$EmptyIterator
+org.junit.platform.commons.util.KotlinReflectionUtils
+org.junit.platform.commons.function.Try$Transformer
+org.junit.platform.commons.util.KotlinReflectionUtils$$Lambda/0x00003fc00108f0d0
+org.junit.jupiter.api.ClassTemplate
+jdk.proxy1.$Proxy4
+org.junit.platform.commons.annotation.Testable
+jdk.proxy2.$Proxy5
+org.junit.platform.commons.util.ReflectionUtils$HierarchyTraversalMode
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc001094000
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc001094258
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc001094480
+jdk.proxy2.$Proxy6
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc001094978
+org.junit.jupiter.api.extension.ExtensionConfigurationException
+org.junit.jupiter.api.extension.TestInstanceFactoryContext
+org.junit.jupiter.api.extension.Extension
+org.junit.jupiter.api.extension.TestInstantiationAwareExtension
+org.junit.jupiter.api.extension.TestInstantiationException
+org.junit.jupiter.engine.execution.ConditionEvaluator
+org.junit.jupiter.engine.execution.ConditionEvaluationException
+org.junit.jupiter.api.extension.ConditionEvaluationResult
+org.junit.jupiter.engine.execution.InterceptingExecutableInvoker
+org.junit.jupiter.api.extension.ReflectiveInvocationContext
+org.junit.jupiter.api.extension.InvocationInterceptor$Invocation
+org.junit.jupiter.engine.execution.InvocationInterceptorChain
+org.junit.jupiter.engine.descriptor.DisplayNameUtils
+org.junit.jupiter.api.DisplayNameGenerator$Standard
+org.junit.jupiter.api.DisplayNameGenerator$Simple
+org.junit.jupiter.api.DisplayNameGenerator$ReplaceUnderscores
+org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences
+org.junit.jupiter.api.DisplayNameGenerator$IndicativeSentences$$Lambda/0x00003fc001097170
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010973c8
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010975f0
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc001097830
+org.junit.platform.engine.support.descriptor.ClassSource
+org.junit.jupiter.api.DisplayName
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc001092000
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc001092248
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010924a0
+org.junit.jupiter.api.DisplayNameGeneration
+java.util.AbstractList$Itr
+java.util.AbstractList$ListItr
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010928f0
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc001092b38
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc001092d80
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc001092fd0
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc001093200
+org.junit.jupiter.engine.config.DefaultJupiterConfiguration$$Lambda/0x00003fc001093450
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo$$Lambda/0x00003fc001093890
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo$$Lambda/0x00003fc001093ac0
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$ClassInfo$$Lambda/0x00003fc001093cf0
+org.junit.jupiter.api.Tag
+java.lang.annotation.Repeatable
+org.junit.jupiter.api.Tags
+jdk.proxy1.$Proxy7
+org.junit.platform.commons.util.AnnotationUtils$$Lambda/0x00003fc001091410
+org.junit.jupiter.engine.descriptor.JupiterTestDescriptor$$Lambda/0x00003fc001091640
+java.lang.invoke.LambdaForm$DMH/0x00003fc001090c00
+org.junit.jupiter.engine.descriptor.JupiterTestDescriptor$$Lambda/0x00003fc001091888
+org.junit.platform.engine.TestTag
+org.junit.jupiter.engine.descriptor.JupiterTestDescriptor$$Lambda/0x00003fc001091d00
+org.junit.jupiter.engine.descriptor.JupiterTestDescriptor$$Lambda/0x00003fc001098000
+org.junit.jupiter.engine.descriptor.JupiterTestDescriptor$$Lambda/0x00003fc001098228
+java.lang.invoke.LambdaForm$DMH/0x00003fc00109c000
+java.util.function.Function$$Lambda/0x00003fc001031a30
+org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils
+org.junit.jupiter.api.TestInstance
+org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils$$Lambda/0x00003fc001098888
+org.junit.jupiter.engine.descriptor.TestInstanceLifecycleUtils$$Lambda/0x00003fc001098ad0
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc001098d00
+java.lang.invoke.LambdaForm$DMH/0x00003fc00109c400
+org.junit.jupiter.engine.config.EnumConfigurationParameterConverter$$Lambda/0x00003fc001099150
+org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector
+org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector$1
+org.junit.jupiter.engine.descriptor.ExclusiveResourceCollector$DefaultExclusiveResourceCollector
+org.junit.jupiter.api.parallel.ResourceLock
+org.junit.jupiter.api.parallel.ResourceLocks
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$LifecycleMethods
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$$Lambda/0x00003fc00109a070
+java.lang.invoke.LambdaForm$DMH/0x00003fc00109c800
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$$Lambda/0x00003fc00109a2b0
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils
+org.junit.jupiter.api.BeforeAll
+org.junit.platform.commons.support.HierarchyTraversalMode
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109ad68
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109afb8
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109b210
+org.junit.platform.commons.util.AnnotationUtils$$Lambda/0x00003fc00109b460
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00109b6c0
+java.util.function.IntFunction
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00109b918
+java.util.stream.Nodes
+java.util.stream.Node
+java.util.stream.Nodes$EmptyNode
+java.util.stream.Nodes$EmptyNode$OfRef
+java.util.stream.Node$OfPrimitive
+java.util.stream.Node$OfInt
+java.util.stream.Nodes$EmptyNode$OfInt
+java.util.stream.Node$OfLong
+java.util.stream.Nodes$EmptyNode$OfLong
+java.util.stream.Node$OfDouble
+java.util.stream.Nodes$EmptyNode$OfDouble
+java.util.stream.AbstractSpinedBuffer
+java.util.stream.SpinedBuffer
+java.util.stream.Node$Builder
+java.util.stream.Nodes$SpinedNodeBuilder
+java.util.Spliterators$EmptySpliterator
+java.util.Spliterators$EmptySpliterator$OfRef
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00109bb40
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00109bda0
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00109e000
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc00109e260
+java.util.stream.DistinctOps
+java.util.stream.DistinctOps$1
+org.junit.platform.commons.util.CollectionUtils$$Lambda/0x00003fc00109e488
+java.util.stream.DistinctOps$1$2
+java.util.LinkedHashMap$LinkedEntrySet
+java.util.LinkedHashMap$LinkedEntryIterator
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109e6d0
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109e900
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109eb58
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$Condition$$Lambda/0x00003fc00109eda8
+java.util.stream.ReferencePipeline$15
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109efe8
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109f238
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109f490
+org.junit.platform.engine.support.discovery.DiscoveryIssueReporter$Condition$$Lambda/0x00003fc00109f6e0
+java.util.stream.ReferencePipeline$15$1
+org.junit.jupiter.api.AfterAll
+org.junit.jupiter.api.BeforeEach
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109fd50
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109d000
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc00109d258
+org.junit.jupiter.api.AfterEach
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc00109d6b0
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc00109d900
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc00109db30
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc00109dd60
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc00109cc00
+org.junit.platform.engine.SelectorResolutionResult
+org.junit.platform.engine.SelectorResolutionResult$Status
+org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener$$Lambda/0x00003fc0010a0678
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc0010a08b8
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc0010a0b10
+java.util.stream.ForEachOps
+java.util.stream.ForEachOps$ForEachOp
+java.util.stream.ForEachOps$ForEachOp$OfRef
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc0010a0d50
+org.junit.platform.commons.util.ReflectionUtils$CycleErrorHandling
+org.junit.platform.commons.util.ReflectionUtils$CycleErrorHandling$1
+org.junit.platform.commons.util.ReflectionUtils$CycleErrorHandling$2
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010a18a8
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010a4000
+java.util.function.Predicate$$Lambda/0x00003fc001032468
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc0010a1ae8
+java.util.function.Predicate$$Lambda/0x00003fc0010326c8
+java.util.stream.Streams$ConcatSpliterator
+java.util.stream.Streams$ConcatSpliterator$OfRef
+java.util.stream.Streams$2
+org.junit.platform.engine.discovery.NestedClassSelector
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc0010a1fa0
+java.util.stream.AbstractPipeline$$Lambda/0x00003fc0010330b0
+java.util.stream.StreamSpliterators$AbstractWrappingSpliterator
+java.util.stream.StreamSpliterators$WrappingSpliterator
+org.junit.jupiter.engine.discovery.ClassSelectorResolver$$Lambda/0x00003fc0010a21f0
+java.util.stream.StreamSpliterators
+java.util.stream.StreamSpliterators$WrappingSpliterator$$Lambda/0x00003fc001033a30
+org.junit.platform.engine.discovery.MethodSelector
+org.junit.platform.engine.discovery.MethodSelector$$Lambda/0x00003fc0010a2690
+org.junit.platform.commons.util.ClassUtils
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc0010a2ae8
+org.junit.platform.engine.discovery.IterationSelector
+org.junit.platform.engine.discovery.DirectorySelector
+org.junit.platform.engine.discovery.FileSelector
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a3418
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a3648
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a3880
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a3ad0
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a3d28
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a6000
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$$Lambda/0x00003fc0010a6250
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$$Lambda/0x00003fc0010a6480
+org.junit.platform.commons.util.ClassUtils$$Lambda/0x00003fc0010a66d0
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$MethodType$$Lambda/0x00003fc0010a6918
+org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$VoidMethodInterceptorCall
+org.junit.jupiter.api.extension.InvocationInterceptor
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010a4400
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0010a6f58
+org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall
+org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$ReflectiveInterceptorCall$$Lambda/0x00003fc0010a7388
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010a75b8
+org.junit.jupiter.api.DisplayNameGenerator$$Lambda/0x00003fc0010a77f8
+org.junit.platform.engine.support.descriptor.MethodSource
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo$$Lambda/0x00003fc0010a5000
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo$$Lambda/0x00003fc0010a5230
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$MethodInfo$$Lambda/0x00003fc0010a5460
+org.junit.platform.commons.util.AnnotationUtils$$Lambda/0x00003fc0010a56a0
+org.junit.platform.commons.util.AnnotationUtils$$Lambda/0x00003fc0010a58e8
+org.junit.platform.commons.util.AnnotationUtils$$Lambda/0x00003fc0010a5b40
+org.junit.jupiter.engine.discovery.MethodSelectorResolver$$Lambda/0x00003fc0010a5d88
+java.util.HashMap$KeySpliterator
+org.junit.platform.engine.support.discovery.EngineDiscoveryRequestResolution$$Lambda/0x00003fc0010a4800
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010a4a40
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010a4c80
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010a8000
+org.junit.jupiter.api.ClassDescriptor
+org.junit.jupiter.engine.discovery.AbstractAnnotatedDescriptorWrapper
+org.junit.jupiter.engine.discovery.DefaultClassDescriptor
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010a88d0
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$$Lambda/0x00003fc0010a8b18
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$$Lambda/0x00003fc0010a8d78
+org.junit.jupiter.engine.discovery.AbstractOrderingVisitor$$Lambda/0x00003fc0010a8fc8
+org.junit.jupiter.api.Order
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010a9410
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010a9650
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010a9898
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010a9ad8
+org.junit.platform.engine.TestDescriptor$$Lambda/0x00003fc0010a9d20
+org.junit.jupiter.api.TestClassOrder
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010aa168
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010aa3b0
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010aa5f8
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010aa848
+org.junit.jupiter.engine.discovery.ClassOrderingVisitor$$Lambda/0x00003fc0010aaa78
+org.junit.jupiter.api.TestMethodOrder
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010aaec8
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010ab110
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010ab358
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010ab5a0
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0010ab7d0
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010aba20
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010abc70
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010abe98
+org.junit.jupiter.api.MethodDescriptor
+org.junit.jupiter.engine.discovery.DefaultMethodDescriptor
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010ac540
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010ac788
+org.junit.platform.engine.support.hierarchical.Node$ExecutionMode
+org.junit.jupiter.engine.discovery.MethodOrderingVisitor$$Lambda/0x00003fc0010acc20
+org.junit.jupiter.engine.descriptor.Validatable$$Lambda/0x00003fc0010ace60
+org.junit.jupiter.api.extension.ClassTemplateInvocationLifecycleMethod
+org.junit.jupiter.engine.descriptor.LifecycleMethodUtils$$Lambda/0x00003fc0010ad2a8
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010ad4e8
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010ad718
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010ad948
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010adb90
+org.junit.jupiter.engine.descriptor.DisplayNameUtils$$Lambda/0x00003fc0010adde8
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0010ae028
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0010ae258
+org.junit.platform.launcher.core.EngineDiscoveryResultValidator$$Lambda/0x00003fc0010ae488
+org.junit.platform.engine.TestDescriptor$Type
+org.junit.platform.launcher.core.EngineDiscoveryResultValidator$$Lambda/0x00003fc0010aeb08
+org.junit.platform.launcher.EngineDiscoveryResult
+org.junit.platform.launcher.EngineDiscoveryResult$Status
+org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener$$Lambda/0x00003fc0010af3b0
+java.util.Collections$UnmodifiableList$1
+java.util.ArrayList$ListItr
+org.junit.platform.commons.util.ExceptionUtils
+java.io.StringWriter
+org.junit.platform.launcher.listeners.discovery.AbortOnFailureLauncherDiscoveryListener$$Lambda/0x00003fc0010af800
+org.junit.platform.launcher.core.DiscoveryIssueNotifier
+org.junit.platform.engine.DiscoveryIssue$Severity
+org.junit.platform.launcher.core.LauncherDiscoveryResult$EngineResultInfo
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b0238
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b0480
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b06d8
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b0920
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b0b68
+java.util.SortedSet
+java.util.NavigableSet
+java.util.TreeSet
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b0dc8
+java.util.SortedMap
+java.util.NavigableMap
+java.util.TreeMap
+org.junit.platform.launcher.core.EngineFilterer$$Lambda/0x00003fc0010b0ff0
+java.util.AbstractSequentialList
+java.util.LinkedList
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010b4000
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$$Lambda/0x00003fc0010b1248
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$$Lambda/0x00003fc0010b1478
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$$Lambda/0x00003fc0010b16b8
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010b4400
+org.junit.platform.launcher.core.EngineDiscoveryOrchestrator$$Lambda/0x00003fc0010b18f0
+org.junit.platform.engine.TestDescriptor$$Lambda/0x00003fc0010b1b18
+org.junit.platform.launcher.core.LauncherDiscoveryResult
+org.junit.platform.launcher.listeners.discovery.CompositeLauncherDiscoveryListener$$Lambda/0x00003fc0010b1fd0
+org.junit.platform.launcher.core.LauncherPhase$$Lambda/0x00003fc0010b2210
+org.junit.platform.engine.ConfigurationParameters$$Lambda/0x00003fc0010b2458
+org.junit.platform.launcher.core.LauncherDiscoveryResult$$Lambda/0x00003fc0010b26a8
+org.junit.platform.launcher.core.LauncherDiscoveryResult$$Lambda/0x00003fc0010b2900
+org.junit.platform.launcher.TestPlan$$Lambda/0x00003fc0010b2b48
+org.junit.platform.launcher.TestPlan$$Lambda/0x00003fc0010b2d78
+org.junit.platform.launcher.TestIdentifier
+org.junit.platform.launcher.TestIdentifier$SerializedForm
+java.io.ObjectStreamClass$Caches
+java.io.ClassCache
+java.io.ObjectStreamClass$Caches$1
+java.io.ClassCache$1
+java.io.ObjectStreamClass$Caches$2
+java.lang.ClassValue$ClassValueMap
+java.io.Externalizable
+java.lang.invoke.DirectMethodHandle$StaticAccessor
+jdk.internal.reflect.FieldAccessor
+jdk.internal.reflect.FieldAccessorImpl
+jdk.internal.reflect.MethodHandleFieldAccessorImpl
+jdk.internal.reflect.MethodHandleLongFieldAccessorImpl
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010b4800
+java.lang.invoke.LambdaForm$MH/0x00003fc0010b4c00
+java.util.ComparableTimSort
+java.io.ObjectOutput
+java.io.ObjectStreamConstants
+java.io.ObjectOutputStream
+java.io.ObjectInput
+java.io.ObjectInputStream
+java.lang.Class$$Lambda/0x00003fc001038638
+java.util.stream.Collectors$$Lambda/0x800000046
+java.util.stream.Collectors$$Lambda/0x80000003e
+java.util.stream.Collectors$$Lambda/0x800000041
+java.util.stream.Collectors$$Lambda/0x800000043
+java.lang.CloneNotSupportedException
+java.io.ClassCache$CacheRef
+java.lang.ClassValue$RemovalToken
+java.io.ObjectStreamClass$FieldReflectorKey
+java.io.ObjectStreamClass$FieldReflector
+jdk.internal.event.Event
+jdk.internal.event.SerializationMisdeclarationEvent
+org.junit.platform.launcher.TestIdentifier$$Lambda/0x00003fc0010b33f0
+org.junit.platform.launcher.TestPlan$$Lambda/0x00003fc0010b3638
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0010b3880
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0010b3ac0
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest
+com.github.tomakehurst.wiremock.junit5.WireMockTest
+org.junit.jupiter.api.extension.ExtendWith
+jdk.proxy2.$Proxy8
+sun.reflect.annotation.AnnotationParser$$Lambda/0x00003fc001039cc0
+org.junit.jupiter.api.extension.ParameterResolver
+org.junit.jupiter.api.extension.BeforeEachCallback
+org.junit.jupiter.api.extension.BeforeAllCallback
+org.junit.jupiter.api.extension.AfterEachCallback
+org.junit.jupiter.api.extension.AfterAllCallback
+com.github.tomakehurst.wiremock.core.Admin
+com.github.tomakehurst.wiremock.junit.Stubbing
+com.github.tomakehurst.wiremock.junit.DslWrapper
+com.github.tomakehurst.wiremock.junit5.WireMockExtension
+jdk.proxy2.$Proxy9
+org.junit.jupiter.api.extension.Extensions
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$3
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$1
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$2
+com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo
+org.junit.platform.commons.util.ClassUtils$$Lambda/0x00003fc0010b86b0
+software.amazon.lambda.powertools.metadata.LambdaMetadataClientConcurrencyTest
+software.amazon.lambda.powertools.metadata.LambdaMetadata
+jdk.proxy2.$Proxy10
+jdk.proxy2.$Proxy11
+software.amazon.lambda.powertools.metadata.LambdaMetadataClientTest
+software.amazon.lambda.powertools.metadata.exception.LambdaMetadataExceptionTest
+org.apache.maven.surefire.api.util.TestsToRun
+org.apache.maven.surefire.api.util.DefaultRunOrderCalculator
+java.util.random.RandomGenerator
+java.util.Random
+org.apache.maven.surefire.api.util.CloseableIterator
+org.apache.maven.surefire.api.util.TestsToRun$ClassesIterator
+java.util.NoSuchElementException
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc0010ba040
+org.apache.maven.surefire.junitplatform.JUnitPlatformProvider$$Lambda/0x00003fc0010ba270
+org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder$$Lambda/0x00003fc0010ba4b0
+org.junit.platform.launcher.core.InterceptingLauncher$$Lambda/0x00003fc0010ba6f0
+org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00003fc0010ba920
+org.junit.platform.launcher.core.CompositeTestExecutionListener$EagerTestExecutionListener
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010bad68
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010bafc8
+org.junit.platform.engine.reporting.ReportEntry
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010bc000
+org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00003fc0010bb430
+org.junit.platform.launcher.core.StreamInterceptingTestExecutionListener
+org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00003fc0010bb950
+org.junit.platform.engine.EngineExecutionListener$1
+org.junit.platform.launcher.core.IterationOrder
+org.junit.platform.launcher.core.IterationOrder$1
+org.junit.platform.launcher.core.IterationOrder$2
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010be908
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010beb48
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010bed78
+org.junit.platform.launcher.core.CompositeEngineExecutionListener
+org.junit.platform.launcher.core.ListenerRegistry$$Lambda/0x00003fc0010bf240
+org.junit.platform.launcher.core.ExecutionListenerAdapter
+org.junit.platform.launcher.core.DelegatingEngineExecutionListener
+org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener
+org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00003fc0010bfc20
+org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0010bd2a0
+org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService
+org.junit.jupiter.engine.execution.JupiterEngineExecutionContext
+org.junit.jupiter.engine.execution.LauncherStoreFacade
+org.junit.jupiter.api.extension.ExtensionContext$Store
+org.junit.jupiter.engine.execution.LauncherStoreFacade$$Lambda/0x00003fc0010bc800
+org.junit.jupiter.engine.execution.JupiterEngineExecutionContext$State
+org.junit.platform.engine.support.hierarchical.ThrowableCollector$Factory
+org.junit.platform.engine.support.hierarchical.ThrowableCollector
+org.junit.jupiter.engine.support.JupiterThrowableCollectorFactory
+org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector
+org.junit.jupiter.engine.JupiterTestEngine$$Lambda/0x00003fc0010c0458
+org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor
+org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutorService$TestTask
+org.junit.platform.engine.support.hierarchical.NodeTreeWalker
+org.junit.platform.engine.support.hierarchical.LockManager
+org.junit.platform.engine.support.hierarchical.ResourceLock
+java.util.concurrent.locks.ReadWriteLock
+org.junit.platform.engine.support.hierarchical.SingleLock
+org.junit.platform.engine.support.hierarchical.ExclusiveResource
+org.junit.platform.engine.support.hierarchical.ExclusiveResource$LockMode
+org.junit.platform.engine.support.hierarchical.ExclusiveResource$$Lambda/0x00003fc0010c1a18
+org.junit.platform.engine.support.hierarchical.ExclusiveResource$$Lambda/0x00003fc0010c1c60
+java.util.Comparator$$Lambda/0x00003fc00103a360
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010c4000
+java.util.Comparator$$Lambda/0x00003fc00103a608
+org.junit.platform.engine.support.hierarchical.ExclusiveResource$$Lambda/0x00003fc0010c1ea8
+org.junit.platform.engine.support.hierarchical.LockManager$$Lambda/0x00003fc0010c20f0
+java.util.concurrent.locks.ReentrantReadWriteLock
+java.util.concurrent.locks.AbstractQueuedLongSynchronizer
+java.util.concurrent.locks.ReentrantReadWriteLock$Sync
+java.util.concurrent.locks.ReentrantReadWriteLock$NonfairSync
+java.util.concurrent.locks.ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter
+java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock
+java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock
+org.junit.platform.commons.util.CollectionUtils$$Lambda/0x00003fc0010c2338
+org.junit.platform.engine.support.hierarchical.NodeUtils
+org.junit.platform.engine.support.hierarchical.NodeUtils$1
+org.junit.platform.engine.support.hierarchical.NodeExecutionAdvisor
+org.junit.platform.engine.support.hierarchical.NodeTreeWalker$$Lambda/0x00003fc0010c2c88
+org.junit.platform.engine.support.hierarchical.NopLock
+org.junit.jupiter.api.parallel.ResourceLocksProvider
+org.junit.jupiter.engine.descriptor.ClassTestDescriptor$$Lambda/0x00003fc0010c3368
+org.junit.platform.engine.support.hierarchical.NodeTreeWalker$$Lambda/0x00003fc0010c35b8
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0010c37f8
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0010c3a28
+org.junit.jupiter.engine.descriptor.ResourceLockAware$1
+org.junit.jupiter.api.parallel.ResourceLockTarget
+java.util.ArrayDeque$DeqSpliterator
+org.junit.jupiter.engine.descriptor.ResourceLockAware$$Lambda/0x00003fc0010c6450
+org.junit.jupiter.engine.descriptor.ResourceLockAware$$Lambda/0x00003fc0010c6698
+org.junit.jupiter.engine.descriptor.ResourceLockAware$$Lambda/0x00003fc0010c68e8
+org.junit.platform.engine.support.hierarchical.NodeTestTaskContext
+org.junit.platform.engine.support.hierarchical.NodeTestTask
+org.junit.platform.engine.support.hierarchical.Node$DynamicTestExecutor
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010c71d8
+org.opentest4j.IncompleteExecutionException
+org.opentest4j.TestAbortedException
+org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector$$Lambda/0x00003fc0010c78d0
+org.junit.platform.commons.util.UnrecoverableExceptions
+org.junit.jupiter.engine.support.OpenTest4JAndJUnit4AwareThrowableCollector$$Lambda/0x00003fc0010c7d40
+org.junit.platform.engine.support.hierarchical.ThrowableCollector$Executable
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010c5208
+org.junit.jupiter.engine.extension.MutableExtensionRegistry
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$Entry
+org.junit.jupiter.api.extension.ExecutionCondition
+org.junit.jupiter.engine.extension.DisabledCondition
+org.junit.jupiter.api.extension.TestInstancePreDestroyCallback
+org.junit.jupiter.engine.extension.AutoCloseExtension
+org.junit.jupiter.engine.extension.TimeoutExtension
+org.junit.jupiter.api.Timeout
+org.junit.jupiter.api.extension.ExtensionContext$Namespace
+org.junit.jupiter.api.extension.TestTemplateInvocationContextProvider
+org.junit.jupiter.engine.extension.RepeatedTestExtension
+org.junit.jupiter.api.extension.TestTemplateInvocationContext
+org.junit.jupiter.engine.extension.TestInfoParameterResolver
+org.junit.jupiter.api.TestInfo
+org.junit.jupiter.engine.extension.TestReporterParameterResolver
+org.junit.jupiter.api.TestReporter
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010c9168
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010c93a8
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010c95e8
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$Entry$$Lambda/0x00003fc0010c9818
+org.junit.jupiter.engine.extension.TempDirectory
+org.junit.jupiter.api.extension.AnnotatedElementContext
+org.junit.jupiter.engine.extension.TempDirectory$Scope
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0010ca148
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0010ca398
+org.junit.jupiter.engine.extension.ExtensionContextInternal
+org.junit.jupiter.engine.descriptor.AbstractExtensionContext
+org.junit.jupiter.engine.descriptor.JupiterEngineExtensionContext
+org.junit.jupiter.api.extension.ExecutableInvoker
+org.junit.jupiter.engine.execution.DefaultExecutableInvoker
+org.junit.jupiter.engine.descriptor.AbstractExtensionContext$$Lambda/0x00003fc0010cb650
+org.junit.jupiter.engine.descriptor.AbstractExtensionContext$$Lambda/0x00003fc0010cb898
+org.junit.jupiter.engine.descriptor.AbstractExtensionContext$$Lambda/0x00003fc0010cbac0
+org.junit.jupiter.engine.execution.NamespaceAwareStore
+org.junit.jupiter.api.extension.ExtensionContextException
+org.junit.platform.engine.support.store.Namespace
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010d0000
+org.junit.jupiter.engine.descriptor.AbstractExtensionContext$$Lambda/0x00003fc0010cc448
+org.junit.jupiter.engine.execution.JupiterEngineExecutionContext$Builder
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010cc8b8
+org.junit.platform.engine.support.hierarchical.Node$SkipResult
+org.junit.platform.launcher.core.CompositeEngineExecutionListener$$Lambda/0x00003fc0010ccd10
+org.junit.platform.launcher.core.CompositeEngineExecutionListener$$Lambda/0x00003fc0010ccf50
+org.junit.platform.launcher.core.CompositeEngineExecutionListener$$Lambda/0x00003fc0010cd180
+org.junit.platform.launcher.TestPlan$$Lambda/0x00003fc0010cd3c0
+org.junit.platform.launcher.TestPlan$$Lambda/0x00003fc0010cd5e8
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010cd818
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010cda58
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010cdc88
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0010cdec8
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc0010ce0f8
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010ce348
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010ce5a8
+org.junit.platform.engine.support.hierarchical.Node$Invocation
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010ce9e0
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010cec10
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010cee40
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010cf090
+org.junit.platform.engine.support.hierarchical.NodeTestTask$DefaultDynamicTestExecutor
+java.util.concurrent.CancellationException
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0010cf510
+org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService$$Lambda/0x00003fc0010cf750
+org.junit.jupiter.engine.descriptor.ExtensionUtils
+java.util.function.ToIntFunction
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010cfb98
+java.util.Comparator$$Lambda/0x00003fc00103c2c0
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d4000
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d4258
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d44a0
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$LateInitEntry
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010d4938
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d4b78
+com.fasterxml.jackson.core.Versioned
+com.fasterxml.jackson.core.TreeCodec
+com.fasterxml.jackson.core.ObjectCodec
+com.fasterxml.jackson.databind.ObjectMapper
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d5f48
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d61e8
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d6440
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d6668
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d68c8
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d6af0
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d6d50
+java.util.stream.SortedOps
+java.util.stream.SortedOps$OfRef
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d6f78
+java.util.stream.SortedOps$AbstractRefSortingSink
+java.util.stream.SortedOps$RefSortingSink
+java.util.stream.SortedOps$RefSortingSink$$Lambda/0x00003fc00103d228
+org.junit.jupiter.api.extension.TestInstanceFactory
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010d73c0
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010d7608
+org.junit.jupiter.engine.extension.MutableExtensionRegistry$$Lambda/0x00003fc0010d7868
+org.junit.jupiter.engine.extension.ExtensionRegistry$$Lambda/0x00003fc0010d7ab8
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d7ce0
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d2000
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0010d2228
+java.lang.reflect.Executable$ParameterData
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d2458
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d26a8
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d28f0
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010d2b30
+org.junit.jupiter.engine.execution.BeforeEachMethodAdapter
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010d2f78
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010d31c8
+org.junit.jupiter.engine.execution.AfterEachMethodAdapter
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010d3610
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010d3860
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d3aa0
+org.junit.jupiter.engine.descriptor.ExtensionUtils$$Lambda/0x00003fc0010d3cf8
+org.junit.jupiter.api.extension.RegisterExtension
+org.junit.jupiter.engine.descriptor.ClassExtensionContext
+org.junit.jupiter.engine.execution.TestInstancesProvider
+org.junit.jupiter.api.extension.TestInstances
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010d1b10
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0010d1d50
+org.junit.platform.commons.util.ClassNamePatternFilterUtils$$Lambda/0x00003fc0010d0800
+org.junit.platform.commons.util.ClassNamePatternFilterUtils$FilterType
+org.junit.platform.commons.util.ClassNamePatternFilterUtils$$Lambda/0x00003fc0010d0400
+org.junit.platform.commons.util.ClassNamePatternFilterUtils$$Lambda/0x00003fc0010d8000
+org.junit.platform.commons.util.ClassNamePatternFilterUtils$$Lambda/0x00003fc0010d8248
+org.junit.platform.commons.util.ClassNamePatternFilterUtils$$Lambda/0x00003fc0010d8498
+org.junit.jupiter.engine.execution.ConditionEvaluator$$Lambda/0x00003fc0010d86f0
+org.junit.jupiter.engine.execution.ConditionEvaluator$$Lambda/0x00003fc0010d8940
+org.junit.jupiter.api.Disabled
+org.junit.jupiter.engine.extension.DisabledCondition$$Lambda/0x00003fc0010d8da0
+org.junit.jupiter.engine.execution.ConditionEvaluator$$Lambda/0x00003fc0010d8ff0
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc0010d9220
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010dc000
+org.junit.platform.engine.UniqueIdFormat$$Lambda/0x00003fc0010d9470
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010dc400
+java.net.URLDecoder
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010d96a0
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010d9900
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010d9b60
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010d9dc0
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010da010
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010da270
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010da4b8
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010da718
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0010da968
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$ResultDisplay
+org.apache.maven.surefire.api.report.SimpleReportEntry
+org.apache.maven.surefire.api.util.internal.ClassMethod
+org.apache.maven.surefire.report.ClassMethodIndexer$$Lambda/0x00003fc0010db318
+org.apache.maven.surefire.api.util.internal.ImmutableMap
+org.apache.maven.surefire.booter.spi.EventChannelEncoder$StackTrace
+java.nio.StringCharBuffer
+org.junit.jupiter.engine.descriptor.CallbackSupport$CallbackInvoker
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010de000
+org.junit.jupiter.engine.descriptor.CallbackSupport
+org.junit.jupiter.engine.descriptor.CallbackSupport$$Lambda/0x00003fc0010de438
+org.junit.jupiter.engine.extension.TimeoutDuration
+java.time.temporal.TemporalUnit
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc0010de898
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc0010deae0
+org.junit.jupiter.api.Timeout$ThreadMode
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc0010def70
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc0010df1b8
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc0010df3f8
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc0010df658
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc0010df898
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc0010dfaf0
+org.junit.jupiter.engine.execution.NamespaceAwareStore$$Lambda/0x00003fc0010dfd40
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$CompositeKey
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$StoredValue
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$$Lambda/0x00003fc0010dd430
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$MemoizingSupplier
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$$Lambda/0x00003fc0010dd8b8
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc0010ddae8
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$MemoizingSupplier$Failure
+org.junit.jupiter.api.io.TempDir
+org.junit.platform.commons.util.AnnotationUtils$$Lambda/0x00003fc0010dcc20
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc0010e0000
+org.junit.jupiter.engine.descriptor.ClassExtensionContext$$Lambda/0x00003fc0010e0240
+org.junit.jupiter.engine.descriptor.MethodExtensionContext
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0010e0980
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010e0bb0
+org.junit.jupiter.engine.execution.ExtensionContextSupplier
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0010e0fe8
+org.junit.jupiter.engine.execution.ExtensionContextSupplier$ScopeBasedExtensionContextSupplier
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010e1670
+org.junit.jupiter.engine.descriptor.DefaultTestInstanceFactoryContext
+org.junit.jupiter.api.extension.TestInstancePreConstructCallback
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010e1d08
+java.lang.invoke.LambdaForm$DMH/0x00003fc0010e4000
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0010e1f48
+org.junit.jupiter.engine.execution.ParameterResolutionUtils
+org.junit.jupiter.api.extension.ParameterResolutionException
+org.junit.jupiter.api.extension.ParameterContext
+org.junit.jupiter.engine.execution.ConstructorInvocation
+org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptorCall
+org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x00003fc0010e2c98
+org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation
+org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation
+com.fasterxml.jackson.databind.introspect.ClassIntrospector
+com.fasterxml.jackson.databind.introspect.BasicClassIntrospector
+com.fasterxml.jackson.databind.Module$SetupContext
+com.fasterxml.jackson.databind.DatabindContext
+com.fasterxml.jackson.databind.DeserializationContext
+com.fasterxml.jackson.databind.deser.DefaultDeserializationContext
+com.fasterxml.jackson.databind.SerializerProvider
+com.fasterxml.jackson.databind.ser.DefaultSerializerProvider
+com.fasterxml.jackson.databind.introspect.VisibilityChecker
+com.fasterxml.jackson.core.JacksonException
+com.fasterxml.jackson.core.JsonProcessingException
+com.fasterxml.jackson.databind.DatabindException
+com.fasterxml.jackson.databind.JsonMappingException
+com.fasterxml.jackson.core.TreeNode
+com.fasterxml.jackson.databind.JsonSerializable
+com.fasterxml.jackson.databind.JsonSerializable$Base
+com.fasterxml.jackson.databind.JsonNode
+com.fasterxml.jackson.databind.node.BaseJsonNode
+com.fasterxml.jackson.databind.node.ValueNode
+com.fasterxml.jackson.databind.node.NullNode
+com.fasterxml.jackson.core.JsonParser
+com.fasterxml.jackson.core.base.ParserMinimalBase
+com.fasterxml.jackson.databind.node.TreeTraversingParser
+com.fasterxml.jackson.core.JsonGenerator
+com.fasterxml.jackson.databind.util.TokenBuffer
+com.fasterxml.jackson.core.util.BufferRecycler$Gettable
+com.fasterxml.jackson.core.io.SegmentedStringWriter
+com.fasterxml.jackson.core.util.ByteArrayBuilder
+com.fasterxml.jackson.core.type.ResolvedType
+com.fasterxml.jackson.databind.JavaType
+com.fasterxml.jackson.databind.type.TypeBase
+com.fasterxml.jackson.databind.type.ArrayType
+com.fasterxml.jackson.databind.type.CollectionLikeType
+com.fasterxml.jackson.databind.type.CollectionType
+com.fasterxml.jackson.databind.type.MapLikeType
+com.fasterxml.jackson.databind.type.MapType
+com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder
+com.fasterxml.jackson.databind.exc.MismatchedInputException
+com.fasterxml.jackson.core.TokenStreamFactory
+com.fasterxml.jackson.core.JsonFactory
+com.fasterxml.jackson.databind.MappingJsonFactory
+com.fasterxml.jackson.databind.jsontype.SubtypeResolver
+com.fasterxml.jackson.databind.jsontype.impl.StdSubtypeResolver
+com.fasterxml.jackson.databind.ser.DefaultSerializerProvider$Impl
+com.fasterxml.jackson.databind.deser.DeserializerFactory
+com.fasterxml.jackson.databind.deser.BasicDeserializerFactory
+com.fasterxml.jackson.databind.deser.BeanDeserializerFactory
+com.fasterxml.jackson.databind.deser.DefaultDeserializationContext$Impl
+com.fasterxml.jackson.databind.ser.SerializerFactory
+com.fasterxml.jackson.databind.ser.BasicSerializerFactory
+com.fasterxml.jackson.databind.ser.BeanSerializerFactory
+com.fasterxml.jackson.databind.AnnotationIntrospector
+com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector
+com.fasterxml.jackson.databind.introspect.AccessorNamingStrategy$Provider
+com.fasterxml.jackson.databind.introspect.DefaultAccessorNamingStrategy$Provider
+com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator
+com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator$Base
+com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator
+java.text.Format
+java.text.DateFormat
+com.fasterxml.jackson.databind.util.StdDateFormat
+com.fasterxml.jackson.databind.introspect.NopAnnotationIntrospector
+com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair
+com.fasterxml.jackson.databind.introspect.Annotated
+com.fasterxml.jackson.databind.introspect.TypeResolutionContext
+com.fasterxml.jackson.databind.introspect.AnnotatedClass
+com.fasterxml.jackson.databind.introspect.AnnotatedMember
+com.fasterxml.jackson.databind.introspect.AnnotatedWithParams
+com.fasterxml.jackson.databind.introspect.AnnotatedMethod
+com.fasterxml.jackson.databind.introspect.VirtualAnnotatedMember
+com.fasterxml.jackson.databind.util.Named
+com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition
+com.fasterxml.jackson.databind.util.SimpleBeanPropertyDefinition
+com.fasterxml.jackson.databind.BeanProperty
+com.fasterxml.jackson.databind.introspect.ConcreteBeanPropertyBase
+com.fasterxml.jackson.databind.ser.PropertyWriter
+com.fasterxml.jackson.databind.ser.BeanPropertyWriter
+com.fasterxml.jackson.databind.ser.VirtualBeanPropertyWriter
+com.fasterxml.jackson.databind.ser.impl.AttributePropertyWriter
+com.fasterxml.jackson.databind.annotation.JsonSerialize
+com.fasterxml.jackson.annotation.JsonView
+com.fasterxml.jackson.annotation.JsonFormat
+com.fasterxml.jackson.annotation.JsonTypeInfo
+com.fasterxml.jackson.annotation.JsonRawValue
+com.fasterxml.jackson.annotation.JsonUnwrapped
+com.fasterxml.jackson.annotation.JsonBackReference
+com.fasterxml.jackson.annotation.JsonManagedReference
+com.fasterxml.jackson.databind.annotation.JsonDeserialize
+com.fasterxml.jackson.annotation.JsonMerge
+com.fasterxml.jackson.databind.ext.Java7Support
+java.lang.IllegalAccessError
+com.fasterxml.jackson.databind.ext.Java7SupportImpl
+com.fasterxml.jackson.databind.util.ClassUtil
+com.fasterxml.jackson.databind.util.ClassUtil$Ctor
+java.lang.reflect.TypeVariable
+java.lang.InstantiationException
+java.lang.reflect.AnnotatedType
+java.beans.Transient
+java.beans.ConstructorProperties
+com.fasterxml.jackson.databind.util.LookupCache
+com.fasterxml.jackson.databind.util.LRUMap
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$Builder
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap
+com.fasterxml.jackson.databind.util.internal.Linked
+java.io.ObjectStreamException
+java.io.InvalidObjectException
+com.fasterxml.jackson.databind.util.internal.LinkedDeque
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$DrainStatus
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$DrainStatus$1
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$DrainStatus$2
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$DrainStatus$3
+java.util.concurrent.atomic.AtomicLongArray
+java.lang.invoke.VarHandleLongs$Array
+java.util.concurrent.atomic.AtomicReferenceArray
+java.lang.invoke.VarHandleReferences$Array
+com.fasterxml.jackson.databind.cfg.BaseSettings
+java.util.TimeZone
+java.time.ZoneId
+sun.util.calendar.ZoneInfo
+sun.util.calendar.ZoneInfoFile
+java.io.DataInputStream
+jdk.internal.util.ByteArray
+java.lang.invoke.VarHandleByteArrayAsShorts$ByteArrayViewVarHandle
+java.lang.invoke.VarHandleByteArrayAsShorts$ArrayHandle
+java.lang.invoke.VarHandleByteArrayAsChars$ByteArrayViewVarHandle
+java.lang.invoke.VarHandleByteArrayAsChars$ArrayHandle
+java.lang.invoke.VarHandleByteArrayAsInts$ByteArrayViewVarHandle
+java.lang.invoke.VarHandleByteArrayAsInts$ArrayHandle
+java.lang.invoke.VarHandleByteArrayAsFloats$ByteArrayViewVarHandle
+java.lang.invoke.VarHandleByteArrayAsFloats$ArrayHandle
+java.lang.invoke.VarHandleByteArrayAsLongs$ByteArrayViewVarHandle
+java.lang.invoke.VarHandleByteArrayAsLongs$ArrayHandle
+java.lang.invoke.VarHandleByteArrayAsDoubles$ByteArrayViewVarHandle
+java.lang.invoke.VarHandleByteArrayAsDoubles$ArrayHandle
+sun.util.calendar.ZoneInfoFile$ZoneOffsetTransitionRule
+com.fasterxml.jackson.databind.type.TypeFactory
+com.fasterxml.jackson.databind.type.SimpleType
+com.fasterxml.jackson.databind.type.IdentityEqualityType
+com.fasterxml.jackson.databind.type.PlaceholderForType
+com.fasterxml.jackson.databind.type.ReferenceType
+com.fasterxml.jackson.databind.type.IterationType
+com.fasterxml.jackson.databind.type.ResolvedRecursiveType
+com.fasterxml.jackson.databind.type.TypeParser
+com.fasterxml.jackson.databind.type.TypeBindings
+java.text.SimpleDateFormat
+java.text.ParseException
+java.util.Calendar
+java.util.GregorianCalendar
+java.text.AttributedCharacterIterator$Attribute
+java.text.Format$Field
+java.text.DateFormat$Field
+sun.util.calendar.CalendarUtils
+sun.util.calendar.ZoneInfoFile$Checksum
+java.util.spi.LocaleServiceProvider
+sun.util.spi.CalendarProvider
+sun.util.locale.provider.LocaleProviderAdapter
+sun.util.locale.provider.LocaleProviderAdapter$Type
+sun.util.locale.provider.ResourceBundleBasedAdapter
+sun.util.locale.provider.JRELocaleProviderAdapter
+sun.util.cldr.CLDRLocaleProviderAdapter
+sun.util.locale.provider.LocaleDataMetaInfo
+sun.util.cldr.CLDRBaseLocaleDataMetaInfo
+java.text.ParsePosition
+sun.util.locale.LanguageTag
+sun.util.locale.StringTokenIterator
+sun.util.locale.InternalLocaleBuilder
+sun.util.locale.InternalLocaleBuilder$CaseInsensitiveChar
+sun.util.locale.BaseLocale$1InterningCache
+jdk.internal.util.ReferencedKeyMap$1
+jdk.internal.util.SoftReferenceKey
+java.util.Locale$LocaleCache
+jdk.internal.module.ModulePatcher$PatchedModuleReader
+sun.net.www.protocol.jrt.Handler
+sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo
+sun.util.locale.provider.AvailableLanguageTags
+sun.util.locale.provider.CalendarProviderImpl
+java.util.Calendar$Builder
+sun.util.calendar.CalendarSystem
+sun.util.calendar.CalendarSystem$GregorianHolder
+sun.util.calendar.AbstractCalendar
+sun.util.calendar.BaseCalendar
+sun.util.calendar.Gregorian
+sun.util.locale.provider.CalendarDataUtility
+java.util.Locale$Builder
+java.util.spi.CalendarDataProvider
+sun.util.locale.provider.LocaleServiceProviderPool
+java.text.spi.BreakIteratorProvider
+java.text.spi.CollatorProvider
+java.text.spi.DateFormatProvider
+java.text.spi.DateFormatSymbolsProvider
+java.text.spi.DecimalFormatSymbolsProvider
+java.text.spi.NumberFormatProvider
+java.util.spi.CurrencyNameProvider
+java.util.spi.LocaleNameProvider
+java.util.spi.TimeZoneNameProvider
+sun.util.locale.provider.LocaleServiceProviderPool$LocalizedObjectGetter
+sun.util.locale.provider.CalendarDataUtility$CalendarWeekParameterGetter
+java.util.ResourceBundle$Control
+java.util.ResourceBundle
+java.util.ResourceBundle$Control$$Lambda/0x80000001e
+java.util.ResourceBundle$SingleFormatControl
+java.util.ResourceBundle$NoFallbackControl
+java.util.ResourceBundle$Control$$Lambda/0x80000001d
+sun.util.locale.provider.CalendarDataProviderImpl
+sun.util.cldr.CLDRCalendarDataProviderImpl
+sun.util.locale.provider.LocaleProviderAdapter$$Lambda/0x80000005b
+sun.util.locale.provider.LocaleProviderAdapter$$Lambda/0x80000005d
+sun.util.locale.provider.LocaleResources
+sun.util.resources.LocaleData
+sun.util.resources.Bundles$Strategy
+sun.util.resources.LocaleData$LocaleDataStrategy
+sun.util.resources.Bundles
+sun.util.resources.Bundles$1
+jdk.internal.access.JavaUtilResourceBundleAccess
+java.util.ResourceBundle$1
+java.util.ResourceBundle$2
+sun.util.resources.Bundles$CacheKey
+sun.util.cldr.CLDRLocaleProviderAdapter$$Lambda/0x80000005a
+java.util.ListResourceBundle
+sun.util.resources.cldr.CalendarData
+java.util.ResourceBundle$ResourceBundleProviderHelper
+sun.util.resources.Bundles$CacheKeyReference
+sun.util.resources.Bundles$BundleReference
+sun.util.locale.provider.LocaleResources$ResourceReference
+sun.util.calendar.CalendarDate
+sun.util.calendar.BaseCalendar$Date
+sun.util.calendar.Gregorian$Date
+java.text.DateFormatSymbols
+sun.util.locale.provider.DateFormatSymbolsProviderImpl
+sun.text.resources.cldr.FormatData
+sun.text.resources.cldr.FormatData_en
+java.text.NumberFormat
+sun.util.locale.provider.NumberFormatProviderImpl
+java.text.DecimalFormatSymbols
+sun.util.locale.provider.DecimalFormatSymbolsProviderImpl
+java.lang.CharacterData00
+java.text.DecimalFormat
+java.text.FieldPosition
+java.text.DigitList
+java.math.RoundingMode
+java.util.Date
+com.fasterxml.jackson.core.Base64Variants
+com.fasterxml.jackson.core.Base64Variant
+com.fasterxml.jackson.core.Base64Variant$PaddingReadBehaviour
+com.fasterxml.jackson.databind.introspect.AccessorNamingStrategy
+com.fasterxml.jackson.databind.introspect.DefaultAccessorNamingStrategy
+com.fasterxml.jackson.databind.introspect.DefaultAccessorNamingStrategy$RecordNaming
+com.fasterxml.jackson.databind.cfg.CacheProvider
+com.fasterxml.jackson.databind.cfg.DefaultCacheProvider
+com.fasterxml.jackson.core.io.DataOutputAsStream
+com.fasterxml.jackson.core.TSFBuilder
+com.fasterxml.jackson.core.JsonFactoryBuilder
+com.fasterxml.jackson.core.async.NonBlockingInputFeeder
+com.fasterxml.jackson.core.async.ByteBufferFeeder
+com.fasterxml.jackson.core.base.ParserBase
+com.fasterxml.jackson.core.json.JsonParserBase
+com.fasterxml.jackson.core.json.async.NonBlockingJsonParserBase
+com.fasterxml.jackson.core.json.async.NonBlockingUtf8JsonParserBase
+com.fasterxml.jackson.core.json.async.NonBlockingByteBufferJsonParser
+com.fasterxml.jackson.core.json.ReaderBasedJsonParser
+com.fasterxml.jackson.core.json.UTF8DataInputJsonParser
+com.fasterxml.jackson.core.base.GeneratorBase
+com.fasterxml.jackson.core.json.JsonGeneratorImpl
+com.fasterxml.jackson.core.json.WriterBasedJsonGenerator
+com.fasterxml.jackson.core.json.UTF8JsonGenerator
+com.fasterxml.jackson.core.io.UTF8Writer
+java.io.CharArrayReader
+com.fasterxml.jackson.core.async.ByteArrayFeeder
+com.fasterxml.jackson.core.json.async.NonBlockingJsonParser
+com.fasterxml.jackson.core.SerializableString
+com.fasterxml.jackson.core.util.JacksonFeature
+com.fasterxml.jackson.core.JsonFactory$Feature
+com.fasterxml.jackson.core.JsonParser$Feature
+com.fasterxml.jackson.core.JsonGenerator$Feature
+com.fasterxml.jackson.core.io.SerializedString
+com.fasterxml.jackson.core.io.JsonStringEncoder
+com.fasterxml.jackson.core.io.CharTypes
+com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer
+com.fasterxml.jackson.core.exc.StreamConstraintsException
+com.fasterxml.jackson.core.sym.ByteQuadsCanonicalizer$TableInfo
+com.fasterxml.jackson.core.util.JsonRecyclerPools
+com.fasterxml.jackson.core.util.RecyclerPool
+com.fasterxml.jackson.core.util.RecyclerPool$ThreadLocalPoolBase
+com.fasterxml.jackson.core.util.JsonRecyclerPools$ThreadLocalPool
+com.fasterxml.jackson.core.util.RecyclerPool$WithPool
+com.fasterxml.jackson.core.StreamReadConstraints
+com.fasterxml.jackson.core.StreamWriteConstraints
+com.fasterxml.jackson.core.ErrorReportConfiguration
+com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer
+com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer$TableInfo
+com.fasterxml.jackson.core.sym.CharsToNameCanonicalizer$Bucket
+com.fasterxml.jackson.databind.util.RootNameLookup
+com.fasterxml.jackson.databind.introspect.ClassIntrospector$MixInResolver
+com.fasterxml.jackson.databind.introspect.SimpleMixInResolver
+com.fasterxml.jackson.databind.BeanDescription
+com.fasterxml.jackson.databind.introspect.BasicBeanDescription
+com.fasterxml.jackson.databind.cfg.MapperConfig
+com.fasterxml.jackson.databind.cfg.MapperConfigBase
+com.fasterxml.jackson.databind.SerializationConfig
+com.fasterxml.jackson.databind.DeserializationConfig
+com.fasterxml.jackson.databind.introspect.AnnotatedClassResolver
+com.fasterxml.jackson.databind.introspect.AnnotationCollector
+com.fasterxml.jackson.databind.introspect.AnnotationCollector$EmptyCollector
+com.fasterxml.jackson.databind.util.Annotations
+com.fasterxml.jackson.databind.introspect.AnnotationCollector$NoAnnotations
+com.fasterxml.jackson.databind.introspect.AnnotatedClass$Creators
+com.fasterxml.jackson.databind.introspect.AnnotatedConstructor
+com.fasterxml.jackson.databind.cfg.ConfigOverrides
+com.fasterxml.jackson.annotation.JacksonAnnotationValue
+com.fasterxml.jackson.annotation.JsonInclude$Value
+com.fasterxml.jackson.annotation.JsonInclude$Include
+com.fasterxml.jackson.annotation.JsonSetter$Value
+com.fasterxml.jackson.annotation.Nulls
+com.fasterxml.jackson.databind.introspect.VisibilityChecker$Std
+com.fasterxml.jackson.annotation.JsonAutoDetect$Visibility
+com.fasterxml.jackson.databind.cfg.CoercionConfigs
+com.fasterxml.jackson.databind.type.LogicalType
+com.fasterxml.jackson.databind.cfg.CoercionAction
+com.fasterxml.jackson.databind.cfg.CoercionConfig
+com.fasterxml.jackson.databind.cfg.MutableCoercionConfig
+com.fasterxml.jackson.databind.cfg.CoercionInputShape
+com.fasterxml.jackson.databind.jsontype.DefaultBaseTypeLimitingValidator
+com.fasterxml.jackson.core.PrettyPrinter
+com.fasterxml.jackson.annotation.JsonFormat$Value
+com.fasterxml.jackson.annotation.JsonFormat$Shape
+com.fasterxml.jackson.annotation.JsonFormat$Features
+com.fasterxml.jackson.databind.cfg.ConfigOverride
+com.fasterxml.jackson.databind.cfg.ConfigOverride$Empty
+com.fasterxml.jackson.databind.cfg.ConfigFeature
+com.fasterxml.jackson.databind.MapperFeature
+com.fasterxml.jackson.core.util.Instantiatable
+com.fasterxml.jackson.core.util.DefaultPrettyPrinter
+com.fasterxml.jackson.core.util.DefaultPrettyPrinter$Indenter
+com.fasterxml.jackson.core.util.Separators
+com.fasterxml.jackson.core.util.Separators$Spacing
+com.fasterxml.jackson.core.util.DefaultPrettyPrinter$NopIndenter
+com.fasterxml.jackson.core.util.DefaultPrettyPrinter$FixedSpaceIndenter
+com.fasterxml.jackson.core.util.DefaultIndenter
+com.fasterxml.jackson.databind.SerializationFeature
+com.fasterxml.jackson.databind.cfg.DatatypeFeatures
+com.fasterxml.jackson.databind.cfg.DatatypeFeatures$DefaultHolder
+com.fasterxml.jackson.databind.cfg.DatatypeFeature
+com.fasterxml.jackson.databind.cfg.EnumFeature
+com.fasterxml.jackson.databind.cfg.JsonNodeFeature
+com.fasterxml.jackson.databind.cfg.ContextAttributes
+com.fasterxml.jackson.databind.cfg.ContextAttributes$Impl
+com.fasterxml.jackson.databind.DeserializationFeature
+com.fasterxml.jackson.databind.node.JsonNodeCreator
+com.fasterxml.jackson.databind.node.JsonNodeFactory
+com.fasterxml.jackson.databind.node.BooleanNode
+com.fasterxml.jackson.databind.node.NumericNode
+com.fasterxml.jackson.databind.node.FloatNode
+com.fasterxml.jackson.databind.node.DoubleNode
+com.fasterxml.jackson.databind.node.DecimalNode
+com.fasterxml.jackson.databind.node.ShortNode
+com.fasterxml.jackson.databind.node.IntNode
+com.fasterxml.jackson.databind.node.LongNode
+com.fasterxml.jackson.databind.node.BigIntegerNode
+com.fasterxml.jackson.databind.node.TextNode
+com.fasterxml.jackson.databind.node.BinaryNode
+com.fasterxml.jackson.databind.node.POJONode
+com.fasterxml.jackson.databind.node.MissingNode
+com.fasterxml.jackson.databind.exc.InvalidDefinitionException
+com.fasterxml.jackson.databind.exc.InvalidTypeIdException
+com.fasterxml.jackson.databind.jsonFormatVisitors.JsonFormatVisitable
+com.fasterxml.jackson.databind.JsonSerializer
+com.fasterxml.jackson.databind.ser.ContextualSerializer
+com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer
+com.fasterxml.jackson.databind.jsonschema.SchemaAware
+com.fasterxml.jackson.databind.ser.std.StdSerializer
+com.fasterxml.jackson.databind.ser.std.ToEmptyObjectSerializer
+com.fasterxml.jackson.databind.ser.impl.UnknownSerializer
+com.fasterxml.jackson.databind.ser.std.NullSerializer
+com.fasterxml.jackson.databind.ser.impl.FailingSerializer
+com.fasterxml.jackson.databind.ser.ResolvableSerializer
+com.fasterxml.jackson.databind.ser.std.StdDelegatingSerializer
+com.fasterxml.jackson.databind.node.ContainerNode
+com.fasterxml.jackson.databind.node.ObjectNode
+com.fasterxml.jackson.databind.ser.SerializerCache
+com.fasterxml.jackson.databind.deser.NullValueProvider
+com.fasterxml.jackson.databind.JsonDeserializer
+com.fasterxml.jackson.databind.deser.impl.TypeWrappedDeserializer
+com.fasterxml.jackson.databind.exc.PropertyBindingException
+com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException
+com.fasterxml.jackson.databind.exc.InvalidFormatException
+com.fasterxml.jackson.databind.exc.ValueInstantiationException
+com.fasterxml.jackson.databind.exc.MissingInjectableValueExcepion
+com.fasterxml.jackson.databind.deser.UnresolvedForwardReference
+com.fasterxml.jackson.databind.deser.ContextualDeserializer
+com.fasterxml.jackson.databind.deser.AbstractDeserializer
+com.fasterxml.jackson.databind.deser.ValueInstantiator$Gettable
+com.fasterxml.jackson.databind.deser.std.StdDeserializer
+com.fasterxml.jackson.databind.deser.std.StdScalarDeserializer
+com.fasterxml.jackson.databind.deser.std.EnumDeserializer
+com.fasterxml.jackson.databind.deser.std.ReferenceTypeDeserializer
+com.fasterxml.jackson.databind.deser.std.AtomicReferenceDeserializer
+com.fasterxml.jackson.databind.deser.std.StringArrayDeserializer
+com.fasterxml.jackson.databind.deser.std.ContainerDeserializerBase
+com.fasterxml.jackson.databind.deser.std.ObjectArrayDeserializer
+com.fasterxml.jackson.databind.deser.std.EnumSetDeserializer
+com.fasterxml.jackson.databind.deser.std.CollectionDeserializer
+com.fasterxml.jackson.databind.deser.std.ArrayBlockingQueueDeserializer
+com.fasterxml.jackson.databind.deser.std.StringCollectionDeserializer
+com.fasterxml.jackson.databind.deser.ResolvableDeserializer
+com.fasterxml.jackson.databind.deser.std.EnumMapDeserializer
+com.fasterxml.jackson.databind.deser.std.MapDeserializer
+com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer
+com.fasterxml.jackson.databind.deser.std.StringDeserializer
+com.fasterxml.jackson.databind.deser.std.MapEntryDeserializer
+com.fasterxml.jackson.databind.deser.std.TokenBufferDeserializer
+com.fasterxml.jackson.databind.introspect.AnnotatedParameter
+com.fasterxml.jackson.databind.deser.SettableBeanProperty
+com.fasterxml.jackson.databind.deser.CreatorProperty
+com.fasterxml.jackson.databind.deser.impl.UnsupportedTypeDeserializer
+com.fasterxml.jackson.databind.deser.impl.ErrorThrowingDeserializer
+com.fasterxml.jackson.annotation.ObjectIdGenerator
+com.fasterxml.jackson.annotation.ObjectIdGenerators$Base
+com.fasterxml.jackson.annotation.ObjectIdGenerators$PropertyGenerator
+com.fasterxml.jackson.databind.deser.impl.PropertyBasedObjectIdGenerator
+com.fasterxml.jackson.databind.deser.BeanDeserializerBase
+com.fasterxml.jackson.databind.deser.BeanDeserializer
+com.fasterxml.jackson.databind.deser.std.ThrowableDeserializer
+com.fasterxml.jackson.databind.deser.impl.MethodProperty
+com.fasterxml.jackson.databind.deser.impl.FieldProperty
+com.fasterxml.jackson.databind.deser.impl.SetterlessProperty
+com.fasterxml.jackson.databind.deser.Deserializers
+com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig
+com.fasterxml.jackson.databind.deser.BeanDeserializerModifier
+com.fasterxml.jackson.databind.AbstractTypeResolver
+com.fasterxml.jackson.databind.deser.ValueInstantiators
+com.fasterxml.jackson.databind.deser.KeyDeserializers
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializers
+com.fasterxml.jackson.databind.KeyDeserializer
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer$DelegatingKD
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer$EnumKD
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer$StringCtorKeyDeserializer
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer$StringFactoryKeyDeserializer
+com.fasterxml.jackson.databind.deser.DeserializerCache
+com.fasterxml.jackson.databind.deser.std.StdDelegatingDeserializer
+com.fasterxml.jackson.databind.ser.std.SerializableSerializer
+com.fasterxml.jackson.databind.ser.std.JsonValueSerializer
+com.fasterxml.jackson.databind.ser.std.StdScalarSerializer
+com.fasterxml.jackson.databind.ser.std.DateTimeSerializerBase
+com.fasterxml.jackson.databind.ser.std.CalendarSerializer
+com.fasterxml.jackson.databind.ser.std.DateSerializer
+com.fasterxml.jackson.databind.ser.std.ByteBufferSerializer
+com.fasterxml.jackson.databind.ser.std.InetAddressSerializer
+com.fasterxml.jackson.databind.ser.std.InetSocketAddressSerializer
+com.fasterxml.jackson.databind.ser.std.TimeZoneSerializer
+com.fasterxml.jackson.databind.ser.std.ToStringSerializerBase
+com.fasterxml.jackson.databind.ser.std.ToStringSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializer
+com.fasterxml.jackson.databind.ser.std.StaticListSerializerBase
+com.fasterxml.jackson.databind.ser.impl.IndexedStringListSerializer
+com.fasterxml.jackson.databind.ser.ContainerSerializer
+com.fasterxml.jackson.databind.ser.impl.StringCollectionSerializer
+com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase
+com.fasterxml.jackson.databind.ser.std.CollectionSerializer
+com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer
+com.fasterxml.jackson.databind.ser.std.EnumSetSerializer
+com.fasterxml.jackson.databind.ser.std.MapSerializer
+com.fasterxml.jackson.databind.ser.impl.MapEntrySerializer
+com.fasterxml.jackson.databind.ser.std.ArraySerializerBase
+com.fasterxml.jackson.databind.ser.impl.StringArraySerializer
+com.fasterxml.jackson.databind.ser.std.ObjectArraySerializer
+com.fasterxml.jackson.databind.ser.std.ReferenceTypeSerializer
+com.fasterxml.jackson.databind.ser.impl.IteratorSerializer
+com.fasterxml.jackson.databind.ser.std.IterableSerializer
+com.fasterxml.jackson.databind.ser.std.EnumSerializer
+com.fasterxml.jackson.databind.ser.impl.MapEntryAsPOJOSerializer
+com.fasterxml.jackson.databind.ser.std.BeanSerializerBase
+com.fasterxml.jackson.databind.ser.BeanSerializer
+com.fasterxml.jackson.databind.ser.impl.PropertyBasedObjectIdGenerator
+com.fasterxml.jackson.databind.introspect.AnnotatedField
+com.fasterxml.jackson.databind.ser.impl.UnsupportedTypeSerializer
+com.fasterxml.jackson.databind.ser.std.StringSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializers
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$Base
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$IntegerSerializer
+com.fasterxml.jackson.core.JsonParser$NumberType
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$LongSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$IntLikeSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$ShortSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$DoubleSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$FloatSerializer
+com.fasterxml.jackson.databind.ser.std.BooleanSerializer
+com.fasterxml.jackson.databind.ser.std.BooleanSerializer$AsNumber
+com.fasterxml.jackson.databind.ser.std.NumberSerializer$BigDecimalAsStringSerializer
+com.fasterxml.jackson.databind.ser.std.StdJdkSerializers
+java.util.Currency
+java.util.UUID
+com.fasterxml.jackson.databind.ser.std.UUIDSerializer
+com.fasterxml.jackson.databind.ser.std.StdJdkSerializers$AtomicBooleanSerializer
+com.fasterxml.jackson.databind.ser.std.StdJdkSerializers$AtomicIntegerSerializer
+com.fasterxml.jackson.databind.ser.std.StdJdkSerializers$AtomicLongSerializer
+com.fasterxml.jackson.databind.ser.std.FileSerializer
+com.fasterxml.jackson.databind.ser.std.ClassSerializer
+com.fasterxml.jackson.databind.ser.std.TokenBufferSerializer
+com.fasterxml.jackson.databind.cfg.SerializerFactoryConfig
+com.fasterxml.jackson.databind.ser.Serializers
+com.fasterxml.jackson.databind.ser.BeanSerializerModifier
+org.junit.jupiter.engine.execution.DefaultTestInstances
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc001179ab0
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc001179d00
+org.junit.jupiter.api.extension.TestInstancePostProcessor
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc00117a138
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117a378
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117a5d8
+org.junit.platform.launcher.TestIdentifier$$Lambda/0x00003fc00117a828
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117aa70
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117acc0
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117af10
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117b138
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117b390
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117b5e0
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117b830
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117ba78
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117bcd0
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117bf18
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117c178
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117c3d0
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc00117c618
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc00117c870
+org.junit.jupiter.api.extension.ExtensionContext$Store$CloseableResource
+org.junit.jupiter.engine.extension.TempDirectory$FailureTracker
+org.junit.jupiter.engine.execution.NamespaceAwareStore$$Lambda/0x00003fc00117cef0
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$$Lambda/0x00003fc00117d120
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc00117d350
+org.junit.jupiter.engine.extension.TempDirectory$$Lambda/0x00003fc00117d590
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc00117d7e8
+org.junit.jupiter.api.extension.BeforeTestExecutionCallback
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc00117dc20
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc00117de48
+org.junit.jupiter.engine.descriptor.MethodExtensionContext$$Lambda/0x00003fc00117e078
+org.junit.jupiter.engine.execution.ParameterResolutionUtils$$Lambda/0x00003fc00117e2c0
+org.junit.jupiter.engine.execution.MethodInvocation
+org.junit.jupiter.engine.execution.InterceptingExecutableInvoker$$Lambda/0x00003fc00117e790
+org.junit.jupiter.engine.extension.TimeoutExtension$TimeoutProvider
+org.junit.jupiter.engine.extension.TimeoutConfiguration
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc00117ee20
+org.junit.jupiter.engine.execution.NamespaceAwareStore$$Lambda/0x00003fc00117f080
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc00117f2b0
+org.junit.jupiter.engine.extension.TimeoutDurationParser
+java.time.DateTimeException
+java.time.format.DateTimeParseException
+java.util.regex.Pattern$$Lambda/0x00003fc001102200
+java.util.regex.Pattern$$Lambda/0x00003fc001102468
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc00117f718
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc00117f948
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc00117fb98
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc001180000
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc001180230
+java.lang.invoke.LambdaForm$DMH/0x00003fc001184000
+java.lang.invoke.LambdaForm$MH/0x00003fc001184400
+java.lang.invoke.MethodHandleImpl$IntrinsicMethodHandle
+java.lang.invoke.LambdaForm$MH/0x00003fc001184800
+com.fasterxml.jackson.databind.type.ClassStack
+sun.reflect.generics.repository.AbstractRepository
+sun.reflect.generics.repository.GenericDeclRepository
+sun.reflect.generics.repository.ClassRepository
+sun.reflect.generics.tree.FormalTypeParameter
+sun.reflect.generics.tree.Signature
+sun.reflect.generics.tree.ClassSignature
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$WeightedValue
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$Node
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$AddTask
+com.fasterxml.jackson.core.io.ContentReference
+com.fasterxml.jackson.core.util.BufferRecyclers
+com.fasterxml.jackson.core.util.BufferRecycler
+com.fasterxml.jackson.core.io.IOContext
+com.fasterxml.jackson.core.util.TextBuffer
+com.fasterxml.jackson.core.util.ReadConstrainedTextBuffer
+com.fasterxml.jackson.core.exc.StreamReadException
+com.fasterxml.jackson.core.exc.InputCoercionException
+com.fasterxml.jackson.core.JsonParseException
+com.fasterxml.jackson.core.io.JsonEOFException
+com.fasterxml.jackson.core.JsonStreamContext
+com.fasterxml.jackson.core.json.JsonReadContext
+com.fasterxml.jackson.core.StreamReadCapability
+com.fasterxml.jackson.core.util.JacksonFeatureSet
+java.util.concurrent.ForkJoinTask
+java.util.concurrent.RecursiveTask
+java.math.BigInteger$RecursiveOp
+java.util.concurrent.ForkJoinTask$Aux
+java.util.concurrent.ForkJoinPool
+java.util.concurrent.ForkJoinPool$ForkJoinWorkerThreadFactory
+java.util.concurrent.DelayScheduler
+java.util.concurrent.ForkJoinPool$WorkQueue
+jdk.internal.access.JavaUtilConcurrentFJPAccess
+java.util.concurrent.ForkJoinPool$1
+java.util.concurrent.ForkJoinPool$DefaultForkJoinWorkerThreadFactory
+java.math.BigInteger$RecursiveOp$RecursiveSquare
+com.fasterxml.jackson.core.JsonToken
+com.fasterxml.jackson.databind.introspect.AnnotationCollector$OneCollector
+com.fasterxml.jackson.annotation.JsonIgnoreProperties
+com.fasterxml.jackson.annotation.JacksonAnnotation
+jdk.proxy2.$Proxy12
+com.fasterxml.jackson.databind.introspect.AnnotationCollector$NCollector
+com.fasterxml.jackson.annotation.JacksonAnnotationsInside
+jdk.proxy2.$Proxy13
+com.fasterxml.jackson.databind.introspect.AnnotationCollector$OneAnnotation
+sun.invoke.util.ValueConversions$WrapperCache
+java.lang.invoke.LambdaForm$MH/0x00003fc001184c00
+java.lang.invoke.BoundMethodHandle$Species_LLL
+java.lang.invoke.LambdaForm$MH/0x00003fc001185000
+com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector
+com.fasterxml.jackson.annotation.JsonAutoDetect
+com.fasterxml.jackson.annotation.JsonIdentityInfo
+com.fasterxml.jackson.databind.util.ArrayIterator
+com.fasterxml.jackson.databind.ext.OptionalHandlerFactory
+org.w3c.dom.Node
+org.w3c.dom.Document
+com.fasterxml.jackson.databind.ext.Java7Handlers
+com.fasterxml.jackson.databind.ext.Java7HandlersImpl
+com.fasterxml.jackson.databind.ext.NioPathSerializer
+com.fasterxml.jackson.databind.ext.NioPathDeserializer
+com.fasterxml.jackson.databind.deser.std.JdkDeserializers
+com.fasterxml.jackson.databind.deser.std.FromStringDeserializer
+com.fasterxml.jackson.databind.deser.std.UUIDDeserializer
+com.fasterxml.jackson.databind.deser.std.AtomicBooleanDeserializer
+com.fasterxml.jackson.databind.deser.std.AtomicIntegerDeserializer
+com.fasterxml.jackson.databind.deser.std.AtomicLongDeserializer
+com.fasterxml.jackson.databind.deser.std.ByteBufferDeserializer
+com.fasterxml.jackson.databind.deser.std.NullifyingDeserializer
+com.fasterxml.jackson.databind.deser.std.StdNodeBasedDeserializer
+com.fasterxml.jackson.databind.deser.std.ThreadGroupDeserializer
+com.fasterxml.jackson.databind.deser.std.FromStringDeserializer$StringBuilderDeserializer
+com.fasterxml.jackson.databind.deser.std.FromStringDeserializer$StringBufferDeserializer
+com.fasterxml.jackson.databind.deser.std.FromStringDeserializer$Std
+java.net.InetAddress
+com.fasterxml.jackson.databind.jsontype.impl.SubTypeValidator
+com.fasterxml.jackson.databind.util.BeanUtil
+com.fasterxml.jackson.databind.annotation.JsonValueInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators
+com.fasterxml.jackson.databind.deser.ValueInstantiator
+com.fasterxml.jackson.databind.deser.ValueInstantiator$Base
+com.fasterxml.jackson.databind.deser.std.JsonLocationInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$JDKValueInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$ArrayListInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$HashSetInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$LinkedListInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$TreeSetInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$LinkedHashSetInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$ConstantValueInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$LinkedHashMapInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$HashMapInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$ConcurrentHashMapInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$TreeMapInstantiator
+com.fasterxml.jackson.databind.deser.impl.JDKValueInstantiators$PropertiesInstantiator
+com.fasterxml.jackson.core.JsonLocation
+com.fasterxml.jackson.databind.introspect.PotentialCreators
+com.fasterxml.jackson.databind.introspect.CollectorBase
+com.fasterxml.jackson.databind.introspect.AnnotatedFieldCollector
+com.fasterxml.jackson.databind.introspect.AnnotationMap
+com.fasterxml.jackson.databind.introspect.TypeResolutionContext$Basic
+com.fasterxml.jackson.databind.introspect.AnnotatedFieldCollector$FieldBuilder
+com.fasterxml.jackson.annotation.JsonProperty
+com.fasterxml.jackson.annotation.OptBoolean
+com.fasterxml.jackson.annotation.JsonProperty$Access
+jdk.proxy2.$Proxy14
+com.fasterxml.jackson.annotation.JsonKey
+com.fasterxml.jackson.annotation.JsonValue
+com.fasterxml.jackson.annotation.JsonAnyGetter
+com.fasterxml.jackson.annotation.JsonAnySetter
+com.fasterxml.jackson.databind.PropertyName
+com.fasterxml.jackson.core.util.InternCache
+com.fasterxml.jackson.annotation.JsonSetter
+com.fasterxml.jackson.annotation.JsonIgnore
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$WithMember
+com.fasterxml.jackson.databind.AnnotationIntrospector$ReferenceProperty
+com.fasterxml.jackson.databind.AnnotationIntrospector$ReferenceProperty$Type
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$Linked
+com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector
+com.fasterxml.jackson.databind.introspect.MemberKey
+com.fasterxml.jackson.databind.introspect.AnnotatedMethodCollector$MethodBuilder
+com.fasterxml.jackson.databind.introspect.AnnotatedMethodMap
+com.fasterxml.jackson.annotation.JsonGetter
+com.fasterxml.jackson.annotation.JsonAutoDetect$1
+com.fasterxml.jackson.annotation.PropertyAccessor
+com.fasterxml.jackson.databind.introspect.AnnotatedCreatorCollector
+com.fasterxml.jackson.annotation.JsonCreator
+com.fasterxml.jackson.databind.introspect.PotentialCreator
+com.fasterxml.jackson.annotation.JsonCreator$Mode
+com.fasterxml.jackson.databind.cfg.ConstructorDetector
+com.fasterxml.jackson.databind.cfg.ConstructorDetector$SingleArgConstructor
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$5
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$6
+java.util.LinkedList$Node
+java.util.LinkedList$ListItr
+com.fasterxml.jackson.annotation.JacksonInject
+com.fasterxml.jackson.databind.annotation.JsonNaming
+com.fasterxml.jackson.annotation.JsonPropertyOrder
+com.fasterxml.jackson.annotation.JsonPropertyDescription
+com.fasterxml.jackson.databind.PropertyMetadata
+com.fasterxml.jackson.databind.deser.impl.CreatorCollector
+com.fasterxml.jackson.databind.deser.std.StdValueInstantiator
+com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder
+com.fasterxml.jackson.databind.deser.BuilderBasedDeserializer
+com.fasterxml.jackson.databind.deser.impl.ObjectIdValueProperty
+com.fasterxml.jackson.annotation.JsonIgnoreProperties$Value
+com.fasterxml.jackson.annotation.JsonIncludeProperties
+com.fasterxml.jackson.annotation.JsonIncludeProperties$Value
+com.fasterxml.jackson.databind.util.IgnorePropertiesUtil
+com.fasterxml.jackson.databind.annotation.JsonTypeResolver
+com.fasterxml.jackson.databind.deser.impl.FailingDeserializer
+com.fasterxml.jackson.databind.deser.impl.NullsConstantProvider
+com.fasterxml.jackson.databind.util.AccessPattern
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$2
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$4
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$1
+com.fasterxml.jackson.annotation.JsonAlias
+com.fasterxml.jackson.annotation.JsonFormat$Feature
+com.fasterxml.jackson.databind.deser.impl.BeanPropertyMap
+com.fasterxml.jackson.databind.exc.IgnoredPropertyException
+com.fasterxml.jackson.databind.deser.SettableBeanProperty$Delegating
+com.fasterxml.jackson.databind.deser.impl.ManagedReferenceProperty
+com.fasterxml.jackson.databind.deser.impl.ObjectIdReferenceProperty
+com.fasterxml.jackson.databind.deser.impl.InnerClassProperty
+com.fasterxml.jackson.databind.deser.impl.MergingSettableBeanProperty
+com.fasterxml.jackson.databind.deser.impl.ReadableObjectId$Referring
+com.fasterxml.jackson.databind.deser.BeanDeserializer$BeanReferring
+com.fasterxml.jackson.databind.deser.impl.BeanAsArrayDeserializer
+com.fasterxml.jackson.databind.util.LinkedNode
+jdk.internal.reflect.MethodHandleObjectFieldAccessorImpl
+java.lang.invoke.LambdaForm$MH/0x00003fc0011a0000
+java.lang.invoke.LambdaForm$MH/0x00003fc0011a0400
+java.lang.invoke.LambdaForm$MH/0x00003fc0011a0800
+org.assertj.core.api.InstanceOfAssertFactories
+org.assertj.core.api.Assertions
+org.assertj.core.data.TemporalOffset
+org.assertj.core.data.TemporalUnitOffset
+org.assertj.core.data.TemporalUnitWithinOffset
+org.assertj.core.data.TemporalUnitLessThanOffset
+org.assertj.core.api.NumberAssert
+org.assertj.core.api.ComparableAssert
+org.assertj.core.api.Descriptable
+org.assertj.core.api.ExtensionPoints
+org.assertj.core.api.Assert
+org.assertj.core.api.AbstractAssert
+org.assertj.core.api.AbstractObjectAssert
+org.assertj.core.api.AbstractComparableAssert
+org.assertj.core.api.AbstractBigIntegerAssert
+org.assertj.core.api.BigIntegerAssert
+org.assertj.core.configuration.ConfigurationProvider
+org.assertj.core.api.AssertionsForClassTypes
+org.assertj.core.api.AbstractTemporalAssert
+org.assertj.core.api.AbstractYearMonthAssert
+org.assertj.core.api.YearMonthAssert
+org.assertj.core.api.AbstractInstantAssert
+org.assertj.core.api.InstantAssert
+org.assertj.core.api.AbstractDurationAssert
+org.assertj.core.api.DurationAssert
+org.assertj.core.api.AbstractPeriodAssert
+org.assertj.core.api.PeriodAssert
+org.assertj.core.api.AbstractThrowableAssert
+org.assertj.core.api.ThrowableAssert
+org.assertj.core.api.FloatingPointNumberAssert
+org.assertj.core.api.AbstractDoubleAssert
+org.assertj.core.api.DoubleAssert
+org.assertj.core.api.ArraySortedAssert
+org.assertj.core.api.EnumerableAssert
+org.assertj.core.api.AbstractEnumerableAssert
+org.assertj.core.api.AbstractArrayAssert
+org.assertj.core.api.AbstractDoubleArrayAssert
+org.assertj.core.api.DoubleArrayAssert
+org.assertj.core.api.AbstractCharacterAssert
+org.assertj.core.api.CharacterAssert
+org.assertj.core.api.AbstractCharArrayAssert
+org.assertj.core.api.CharArrayAssert
+org.assertj.core.api.AbstractFloatAssert
+org.assertj.core.api.FloatAssert
+org.assertj.core.api.AbstractFloatArrayAssert
+org.assertj.core.api.FloatArrayAssert
+org.assertj.core.api.AbstractIntegerAssert
+org.assertj.core.api.IntegerAssert
+org.assertj.core.api.AbstractFileAssert
+org.assertj.core.api.FileAssert
+org.assertj.core.api.AbstractInputStreamAssert
+org.assertj.core.api.InputStreamAssert
+org.assertj.core.api.AbstractBigDecimalAssert
+org.assertj.core.api.BigDecimalAssert
+org.assertj.core.api.AbstractUriAssert
+org.assertj.core.api.UriAssert
+org.assertj.core.api.AbstractUrlAssert
+org.assertj.core.api.UrlAssert
+org.assertj.core.api.AbstractByteAssert
+org.assertj.core.api.ByteAssert
+org.assertj.core.api.AbstractByteArrayAssert
+org.assertj.core.api.ByteArrayAssert
+org.assertj.core.api.AbstractBooleanAssert
+org.assertj.core.api.BooleanAssert
+org.assertj.core.api.AbstractBooleanArrayAssert
+org.assertj.core.api.BooleanArrayAssert
+org.assertj.core.api.AbstractShortArrayAssert
+org.assertj.core.api.ShortArrayAssert
+org.assertj.core.api.AbstractCharSequenceAssert
+org.assertj.core.api.CharSequenceAssert
+org.assertj.core.api.AbstractShortAssert
+org.assertj.core.api.ShortAssert
+org.assertj.core.api.AbstractOffsetDateTimeAssert
+org.assertj.core.api.OffsetDateTimeAssert
+org.assertj.core.api.AbstractOffsetTimeAssert
+org.assertj.core.api.OffsetTimeAssert
+org.assertj.core.api.AbstractLocalTimeAssert
+org.assertj.core.api.LocalTimeAssert
+org.assertj.core.api.AbstractLocalDateAssert
+org.assertj.core.api.LocalDateAssert
+org.assertj.core.api.AbstractStringAssert
+org.assertj.core.api.StringAssert
+org.assertj.core.api.AbstractDateAssert
+org.assertj.core.api.DateAssert
+org.assertj.core.api.AbstractZonedDateTimeAssert
+org.assertj.core.api.ZonedDateTimeAssert
+org.assertj.core.api.AbstractLocalDateTimeAssert
+org.assertj.core.api.LocalDateTimeAssert
+org.assertj.core.api.AbstractLongAssert
+org.assertj.core.api.LongAssert
+org.assertj.core.api.AbstractIntArrayAssert
+org.assertj.core.api.IntArrayAssert
+org.assertj.core.api.AbstractLongArrayAssert
+org.assertj.core.api.LongArrayAssert
+org.assertj.core.description.Description
+org.assertj.core.description.LazyTextDescription
+org.assertj.core.description.TextDescription
+org.assertj.core.api.AssertionInfo
+org.assertj.core.internal.ComparisonStrategy
+org.assertj.core.api.ObjectEnumerableAssert
+org.assertj.core.api.IndexedObjectEnumerableAssert
+org.assertj.core.api.AbstractIterableAssert
+org.assertj.core.api.AbstractCollectionAssert
+org.assertj.core.api.AbstractListAssert
+org.assertj.core.api.FactoryBasedNavigableListAssert
+org.assertj.core.api.ListAssert
+org.assertj.core.internal.Objects
+org.assertj.core.error.ErrorMessageFactory
+org.assertj.core.util.introspection.IntrospectionError
+org.assertj.core.internal.AbstractComparisonStrategy
+org.assertj.core.internal.StandardComparisonStrategy
+org.assertj.core.util.introspection.PropertySupport
+org.assertj.core.internal.Failures
+org.assertj.core.error.AssertionErrorCreator
+org.assertj.core.util.Arrays
+org.assertj.core.error.ConstructorInvoker
+org.assertj.core.util.introspection.FieldSupport
+org.assertj.core.error.GroupTypeDescription
+org.assertj.core.internal.Conditions
+org.assertj.core.api.WritableAssertionInfo
+org.assertj.core.presentation.Representation
+org.assertj.core.configuration.Configuration
+org.assertj.core.configuration.PreferredAssumptionException
+org.assertj.core.configuration.PreferredAssumptionException$1
+org.assertj.core.configuration.Services
+org.assertj.core.util.Lists
+org.assertj.core.util.Streams
+org.assertj.core.util.Lists$$Lambda/0x00003fc0011ddec0
+org.assertj.core.presentation.CompositeRepresentation
+java.lang.invoke.LambdaForm$DMH/0x00003fc0011a0c00
+org.assertj.core.presentation.CompositeRepresentation$$Lambda/0x00003fc0011de348
+java.util.stream.SortedOps$SizedRefSortingSink
+org.assertj.core.presentation.StandardRepresentation
+java.time.temporal.TemporalAccessor
+java.time.temporal.Temporal
+java.time.temporal.TemporalAdjuster
+java.time.chrono.ChronoLocalDateTime
+java.time.LocalDateTime
+java.time.chrono.ChronoZonedDateTime
+java.time.ZonedDateTime
+java.time.OffsetDateTime
+java.nio.file.DirectoryStream
+org.assertj.core.internal.Strings
+org.assertj.core.internal.Comparables
+org.junit.jupiter.api.extension.AfterTestExecutionCallback
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0011df1e0
+org.junit.jupiter.engine.descriptor.CallbackSupport$$Lambda/0x00003fc0011df408
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0011df648
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0011df878
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0011dfaa0
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0011dfcd0
+org.junit.platform.engine.support.hierarchical.NodeTestTask$$Lambda/0x00003fc0011e0000
+org.junit.jupiter.engine.descriptor.MethodExtensionContext$$Lambda/0x00003fc0011e0230
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0011e0478
+org.junit.jupiter.engine.descriptor.CallbackSupport$$Lambda/0x00003fc0011e06a0
+org.junit.jupiter.engine.extension.AutoCloseExtension$$Lambda/0x00003fc0011e08d0
+org.junit.jupiter.engine.extension.AutoCloseExtension$$Lambda/0x00003fc0011e0b28
+org.junit.jupiter.api.extension.TestInstancePreDestroyCallback$$Lambda/0x00003fc0011e0d68
+org.junit.jupiter.api.extension.TestInstancePreDestroyCallback$$Lambda/0x00003fc0011e0fb0
+org.junit.jupiter.engine.extension.AutoCloseExtension$$Lambda/0x00003fc0011e11f0
+org.junit.jupiter.api.AutoClose
+org.junit.jupiter.engine.extension.AutoCloseExtension$$Lambda/0x00003fc0011e1650
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0011e1890
+java.util.concurrent.ConcurrentHashMap$EntrySpliterator
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$EvaluatedValue
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$$Lambda/0x00003fc0011e1cd8
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$$Lambda/0x00003fc0011e1f20
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$EvaluatedValue$$Lambda/0x00003fc0011e2178
+org.junit.platform.engine.support.store.NamespacedHierarchicalStore$$Lambda/0x00003fc0011e23c0
+org.junit.jupiter.engine.config.CachingJupiterConfiguration$$Lambda/0x00003fc0011e2600
+org.junit.platform.engine.TestExecutionResult
+org.junit.platform.engine.TestExecutionResult$Status
+org.junit.jupiter.api.extension.TestWatcher
+org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor$$Lambda/0x00003fc0011e30d0
+org.junit.jupiter.engine.descriptor.MethodBasedTestDescriptor$$Lambda/0x00003fc0011e3310
+org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener$$Lambda/0x00003fc0011e3550
+org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener$$Lambda/0x00003fc0011e3798
+org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener$$Lambda/0x00003fc0011e39f0
+org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener$$Lambda/0x00003fc0011e3c38
+org.junit.platform.launcher.core.StackTracePruningEngineExecutionListener$$Lambda/0x00003fc0011e3e80
+org.junit.platform.launcher.core.CompositeEngineExecutionListener$$Lambda/0x00003fc0011e40d8
+org.junit.platform.launcher.core.CompositeEngineExecutionListener$$Lambda/0x00003fc0011e4318
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0011e4548
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0011e4788
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0011e49b8
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0011e4bf8
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0011e4e28
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$1
+java.lang.invoke.LambdaForm$DMH/0x00003fc0011e8000
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0011e5298
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0011e54d8
+org.junit.jupiter.engine.extension.AutoCloseExtension$$Lambda/0x00003fc0011e5700
+org.junit.jupiter.engine.extension.AutoCloseExtension$$Lambda/0x00003fc0011e5958
+org.apache.maven.surefire.junitplatform.RunListenerAdapter$$Lambda/0x00003fc0011e5bb0
+org.apache.maven.surefire.api.util.internal.ObjectUtils
+org.apache.maven.surefire.api.util.internal.ImmutableMap$Node
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0011e6270
+org.junit.platform.commons.util.ReflectionUtils$$Lambda/0x00003fc0011e64b8
+java.util.stream.Nodes$ArrayNode
+java.util.stream.Nodes$FixedNodeBuilder
+com.github.tomakehurst.wiremock.core.Options
+com.github.tomakehurst.wiremock.junit5.WireMockExtension$Builder
+com.github.tomakehurst.wiremock.core.Container
+com.github.tomakehurst.wiremock.WireMockServer
+com.github.tomakehurst.wiremock.store.Store
+com.github.tomakehurst.wiremock.store.BlobStore
+com.github.tomakehurst.wiremock.http.RequestListener
+com.github.tomakehurst.wiremock.client.VerificationException
+com.github.tomakehurst.wiremock.common.FatalStartupException
+com.github.tomakehurst.wiremock.core.WireMockConfiguration
+com.github.tomakehurst.wiremock.store.StoresLifecycle
+com.github.tomakehurst.wiremock.store.Stores
+com.github.tomakehurst.wiremock.standalone.MappingsLoader
+com.github.tomakehurst.wiremock.core.MappingsSaver
+com.github.tomakehurst.wiremock.standalone.MappingsSource
+com.github.tomakehurst.wiremock.common.FileSource
+com.github.tomakehurst.wiremock.security.Authenticator
+com.github.tomakehurst.wiremock.common.Notifier
+com.github.tomakehurst.wiremock.extension.Extension
+com.github.tomakehurst.wiremock.http.HttpServerFactory
+com.github.tomakehurst.wiremock.http.client.HttpClientFactory
+com.github.tomakehurst.wiremock.http.trafficlistener.WiremockNetworkTrafficListener
+com.github.tomakehurst.wiremock.common.ResourceUtil
+com.github.tomakehurst.wiremock.common.ParameterUtils
+com.github.tomakehurst.wiremock.common.BrowserProxySettings
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$1
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$2
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$3
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$3$3
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$5
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$3$2
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$7
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$3$1
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$4
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$3$4
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$6
+java.lang.StringConcatHelper$StringConcatBase
+java.lang.String$$StringConcat/0x00003fc0011e8400
+java.lang.invoke.LambdaForm$DMH/0x00003fc0011e8800
+java.lang.invoke.StringConcatFactory$InlineHiddenClassStrategy$MethodHandlePair
+java.lang.invoke.LambdaForm$DMH/0x00003fc0011e8c00
+java.lang.invoke.LambdaForm$BMH/0x00003fc0011e9000
+java.lang.invoke.LambdaForm$MH/0x00003fc0011e9400
+java.lang.invoke.LambdaForm$MH/0x00003fc0011e9800
+com.github.tomakehurst.wiremock.common.BrowserProxySettings$Builder
+com.github.tomakehurst.wiremock.common.ssl.KeyStoreSettings
+com.github.tomakehurst.wiremock.common.Source
+com.github.tomakehurst.wiremock.common.ProxySettings
+com.github.tomakehurst.wiremock.common.AbstractFileSource
+com.github.tomakehurst.wiremock.common.SingleRootFileSource
+com.github.tomakehurst.wiremock.security.NotAuthorisedException
+com.github.tomakehurst.wiremock.common.Slf4jNotifier
+org.slf4j.LoggerFactory
+java.util.ServiceConfigurationError
+org.slf4j.event.LoggingEvent
+org.slf4j.spi.SLF4JServiceProvider
+org.slf4j.helpers.SubstituteServiceProvider
+org.slf4j.ILoggerFactory
+org.slf4j.IMarkerFactory
+org.slf4j.spi.MDCAdapter
+org.slf4j.helpers.SubstituteLoggerFactory
+org.slf4j.Logger
+java.util.concurrent.LinkedBlockingQueue
+java.util.concurrent.LinkedBlockingQueue$Node
+org.slf4j.helpers.BasicMarkerFactory
+org.slf4j.Marker
+org.slf4j.helpers.BasicMDCAdapter
+java.lang.InheritableThreadLocal
+org.slf4j.helpers.BasicMDCAdapter$1
+org.slf4j.helpers.ThreadLocalMapOfStacks
+org.slf4j.helpers.NOP_FallbackServiceProvider
+org.slf4j.helpers.NOPLoggerFactory
+org.slf4j.helpers.NOPMDCAdapter
+org.slf4j.helpers.Util
+org.slf4j.simple.SimpleServiceProvider
+org.slf4j.MDC
+org.slf4j.simple.SimpleLoggerFactory
+org.slf4j.helpers.AbstractLogger
+org.slf4j.helpers.LegacyAbstractLogger
+org.slf4j.simple.SimpleLogger
+org.slf4j.spi.LoggingEventBuilder
+org.slf4j.simple.SimpleLoggerConfiguration
+org.slf4j.simple.SimpleLoggerConfiguration$$Lambda/0x00003fc0011f2108
+org.slf4j.simple.OutputChoice
+org.slf4j.simple.OutputChoice$OutputChoiceType
+org.slf4j.helpers.Reporter
+org.slf4j.helpers.Reporter$TargetChoice
+org.slf4j.helpers.Reporter$Level
+org.slf4j.simple.SimpleLoggerFactory$$Lambda/0x00003fc0011f3450
+com.github.tomakehurst.wiremock.http.DefaultFactory
+com.github.tomakehurst.wiremock.jetty.JettyHttpServerFactory
+com.github.tomakehurst.wiremock.http.HttpServer
+com.github.tomakehurst.wiremock.http.client.ApacheHttpClientFactory
+com.github.tomakehurst.wiremock.http.client.HttpClient
+com.github.tomakehurst.wiremock.extension.ExtensionDeclarations
+com.github.tomakehurst.wiremock.http.trafficlistener.DoNothingWiremockNetworkTrafficListener
+com.github.tomakehurst.wiremock.security.NoAuthenticator
+com.github.tomakehurst.wiremock.admin.AdminTask
+com.github.tomakehurst.wiremock.verification.notmatched.NotMatchedRenderer
+com.github.tomakehurst.wiremock.verification.notmatched.PlainTextStubNotMatchedRenderer
+com.github.tomakehurst.wiremock.extension.WireMockServices
+com.github.tomakehurst.wiremock.extension.Extensions
+com.github.tomakehurst.wiremock.core.WireMockConfiguration$$Lambda/0x00003fc0011f5400
+com.github.tomakehurst.wiremock.common.Limit
+com.github.tomakehurst.wiremock.common.NetworkAddressRules
+com.github.tomakehurst.wiremock.common.DefaultNetworkAddressRules
+com.github.tomakehurst.wiremock.common.NetworkAddressRange
+com.github.tomakehurst.wiremock.common.ClientError
+com.github.tomakehurst.wiremock.common.InvalidInputException
+com.github.tomakehurst.wiremock.common.NetworkAddressRange$All
+com.github.tomakehurst.wiremock.common.NetworkAddressRange$SingleIp
+com.github.tomakehurst.wiremock.common.NetworkAddressRange$IpRange
+com.github.tomakehurst.wiremock.common.NetworkAddressRange$DomainNameWildcard
+java.net.UnknownHostException
+java.lang.String$$StringConcat/0x00003fc0011f8000
+java.lang.invoke.LambdaForm$MH/0x00003fc0011f8400
+com.github.tomakehurst.wiremock.common.DefaultNetworkAddressRules$$Lambda/0x00003fc0011f6c38
+com.github.tomakehurst.wiremock.common.DefaultNetworkAddressRules$$Lambda/0x00003fc0011f6e90
+com.github.tomakehurst.wiremock.common.DefaultNetworkAddressRules$$Lambda/0x00003fc0011f70e8
+com.github.tomakehurst.wiremock.common.DefaultNetworkAddressRules$$Lambda/0x00003fc0011f7340
+com.github.tomakehurst.wiremock.common.DefaultNetworkAddressRules$$Lambda/0x00003fc0011f7598
+com.github.tomakehurst.wiremock.junit5.WireMockExtension$$Lambda/0x00003fc0011f77e0
+com.github.tomakehurst.wiremock.junit5.WireMockExtension$$Lambda/0x00003fc0011f7a30
+com.github.tomakehurst.wiremock.junit5.WireMockExtension$$Lambda/0x00003fc0011f7c80
+com.github.tomakehurst.wiremock.core.StubServer
+com.github.tomakehurst.wiremock.core.WireMockApp
+com.github.tomakehurst.wiremock.http.ResponseRenderer
+com.github.tomakehurst.wiremock.http.Request
+com.github.tomakehurst.wiremock.core.ConfigurationException
+com.github.tomakehurst.wiremock.verification.RequestJournalDisabledException
+com.github.tomakehurst.wiremock.admin.Paginator
+com.github.tomakehurst.wiremock.verification.RequestJournal
+com.github.tomakehurst.wiremock.stubbing.Scenarios
+com.github.tomakehurst.wiremock.stubbing.StubMappings
+com.jayway.jsonpath.JsonPathException
+com.jayway.jsonpath.spi.cache.Cache
+com.github.tomakehurst.wiremock.common.xml.Xml
+javax.xml.transform.Result
+javax.xml.transform.Source
+javax.xml.parsers.ParserConfigurationException
+javax.xml.parsers.DocumentBuilderFactory
+com.github.tomakehurst.wiremock.common.xml.DelegateDocumentBuilderFactory
+com.github.tomakehurst.wiremock.common.xml.SkipResolvingEntitiesDocumentBuilderFactory
+com.github.tomakehurst.wiremock.common.xml.SilentErrorDocumentBuilderFactory
+com.github.tomakehurst.wiremock.common.xml.BuilderPerThreadDocumentBuilderFactory
+org.xml.sax.SAXException
+com.github.tomakehurst.wiremock.common.xml.XmlException
+org.xml.sax.ErrorHandler
+org.xml.sax.EntityResolver
+com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl
+jdk.xml.internal.JdkXmlConfig
+jdk.xml.internal.SecuritySupport
+jdk.xml.internal.XMLSecurityManager
+jdk.xml.internal.XMLSecurityManager$ValueMapper
+jdk.xml.internal.XMLSecurityManager$BooleanMapper
+jdk.xml.internal.XMLSecurityManager$IntegerMapper
+jdk.xml.internal.XMLSecurityManager$StringMapper
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator
+java.util.HashMap$EntrySpliterator
+jdk.xml.internal.XMLSecurityManager$StringMapper$$Lambda/0x00003fc00110aff8
+jdk.xml.internal.XMLSecurityManager$StringMapper$$Lambda/0x00003fc00110b240
+java.util.stream.Collectors$$Lambda/0x00003fc00110b488
+java.util.stream.Collectors$$Lambda/0x00003fc00110b6b0
+java.util.stream.Collectors$$Lambda/0x00003fc00110b8f0
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$$Lambda/0x00003fc00110bb40
+java.util.Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry
+jdk.xml.internal.XMLSecurityManager$Limit
+jdk.xml.internal.XMLSecurityManager$Processor
+jdk.xml.internal.JdkProperty$State
+jdk.xml.internal.FeaturePropertyBase
+jdk.xml.internal.XMLSecurityPropertyManager
+jdk.xml.internal.FeaturePropertyBase$State
+jdk.xml.internal.XMLSecurityPropertyManager$Property
+jdk.xml.internal.JdkXmlFeatures
+jdk.xml.internal.JdkXmlFeatures$XmlFeature
+jdk.xml.internal.JdkProperty$ImplPropMap
+javax.xml.parsers.DocumentBuilder
+com.github.tomakehurst.wiremock.common.xml.BuilderPerThreadDocumentBuilderFactory$$Lambda/0x00003fc0011fec20
+java.lang.ThreadLocal$SuppliedThreadLocal
+com.sun.org.apache.xerces.internal.jaxp.JAXPConstants
+com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl
+com.sun.org.apache.xerces.internal.xni.XMLDocumentHandler
+com.sun.org.apache.xerces.internal.xni.XMLDTDHandler
+com.sun.org.apache.xerces.internal.xni.XMLDTDContentModelHandler
+com.sun.org.apache.xerces.internal.parsers.XMLParser
+com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser
+com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser
+com.sun.org.apache.xerces.internal.parsers.DOMParser
+com.sun.org.apache.xerces.internal.xni.parser.XMLComponentManager
+com.sun.org.apache.xerces.internal.xni.parser.XMLParserConfiguration
+com.sun.org.apache.xerces.internal.xni.parser.XMLPullParserConfiguration
+com.sun.org.apache.xerces.internal.parsers.XML11Configurable
+com.sun.org.apache.xerces.internal.util.ParserConfigurationSettings
+com.sun.org.apache.xerces.internal.parsers.XML11Configuration
+com.sun.org.apache.xerces.internal.parsers.XIncludeAwareParserConfiguration
+jdk.xml.internal.JdkXmlUtils
+javax.xml.catalog.CatalogFeatures$Feature
+javax.xml.catalog.CatalogFeatures
+javax.xml.catalog.CatalogFeatures$Builder
+javax.xml.catalog.CatalogFeatures$State
+javax.xml.catalog.Util
+javax.xml.catalog.CatalogMessages
+javax.xml.catalog.CatalogFeatures$$Lambda/0x00003fc001112f58
+jdk.xml.internal.JdkConstants
+com.sun.org.apache.xerces.internal.util.SymbolTable
+com.sun.org.apache.xerces.internal.util.SymbolTable$Entry
+com.sun.org.apache.xerces.internal.xni.parser.XMLComponent
+com.sun.org.apache.xerces.internal.xni.parser.XMLEntityResolver
+com.sun.org.apache.xerces.internal.impl.XMLEntityManager
+java.util.Vector
+java.util.Stack
+com.sun.org.apache.xerces.internal.xni.XMLResourceIdentifier
+com.sun.org.apache.xerces.internal.util.XMLResourceIdentifierImpl
+com.sun.org.apache.xerces.internal.xni.Augmentations
+com.sun.org.apache.xerces.internal.util.AugmentationsImpl
+com.sun.org.apache.xerces.internal.util.AugmentationsImpl$AugmentationsItemsContainer
+com.sun.org.apache.xerces.internal.util.AugmentationsImpl$SmallContainer
+com.sun.xml.internal.stream.XMLEntityStorage
+com.sun.org.apache.xerces.internal.xni.XMLLocator
+com.sun.org.apache.xerces.internal.impl.XMLEntityScanner
+com.sun.org.apache.xerces.internal.impl.XMLEntityScanner$1
+com.sun.org.apache.xerces.internal.impl.XMLErrorReporter
+com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentSource
+com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentScanner
+com.sun.org.apache.xerces.internal.impl.XMLEntityHandler
+com.sun.xml.internal.stream.XMLBufferListener
+com.sun.org.apache.xerces.internal.impl.XMLScanner
+com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl
+com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl
+com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl
+com.sun.org.apache.xerces.internal.xni.XMLString
+com.sun.org.apache.xerces.internal.util.XMLStringBuffer
+com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$ElementStack
+com.sun.org.apache.xerces.internal.xni.QName
+com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$ElementStack2
+com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$Driver
+com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver
+com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver
+com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver
+com.sun.org.apache.xerces.internal.xni.XMLAttributes
+com.sun.org.apache.xerces.internal.util.XMLAttributesImpl
+com.sun.org.apache.xerces.internal.util.XMLAttributesIteratorImpl
+com.sun.org.apache.xerces.internal.util.XMLAttributesImpl$Attribute
+com.sun.org.apache.xerces.internal.xni.NamespaceContext
+com.sun.org.apache.xerces.internal.util.NamespaceSupport
+com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$XMLDeclDriver
+com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver
+com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$TrailingMiscDriver
+com.sun.org.apache.xerces.internal.xni.grammars.XMLGrammarDescription
+com.sun.org.apache.xerces.internal.xni.grammars.XMLDTDDescription
+com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDDescription
+com.sun.org.apache.xerces.internal.xni.parser.XMLDTDSource
+com.sun.org.apache.xerces.internal.xni.parser.XMLDTDContentModelSource
+com.sun.org.apache.xerces.internal.xni.parser.XMLDTDScanner
+com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl
+com.sun.org.apache.xerces.internal.xni.parser.XMLDTDFilter
+com.sun.org.apache.xerces.internal.xni.parser.XMLDTDContentModelFilter
+com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDProcessor
+com.sun.org.apache.xerces.internal.impl.dtd.XMLEntityDecl
+com.sun.org.apache.xerces.internal.xni.parser.XMLDocumentFilter
+com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidatorFilter
+com.sun.org.apache.xerces.internal.impl.RevalidationHandler
+com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator
+com.sun.org.apache.xerces.internal.impl.dtd.XMLNSDTDValidator
+com.sun.org.apache.xerces.internal.impl.dv.ValidationContext
+com.sun.org.apache.xerces.internal.impl.validation.ValidationState
+com.sun.org.apache.xerces.internal.impl.dtd.XMLElementDecl
+com.sun.org.apache.xerces.internal.impl.dtd.XMLSimpleType
+com.sun.org.apache.xerces.internal.impl.dtd.XMLAttributeDecl
+com.sun.org.apache.xerces.internal.impl.dtd.DTDGrammarBucket
+com.sun.org.apache.xerces.internal.impl.dv.DTDDVFactory
+com.sun.org.apache.xerces.internal.impl.dv.dtd.DTDDVFactoryImpl
+com.sun.org.apache.xerces.internal.impl.dv.DatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.StringDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.IDDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.IDREFDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.ListDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.ENTITYDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.NOTATIONDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.dv.dtd.NMTOKENDatatypeValidator
+com.sun.org.apache.xerces.internal.impl.validation.ValidationManager
+com.sun.org.apache.xerces.internal.impl.XMLVersionDetector
+com.sun.org.apache.xerces.internal.util.MessageFormatter
+com.sun.org.apache.xerces.internal.impl.msg.XMLMessageFormatter
+com.sun.org.apache.xerces.internal.util.PropertyState
+com.sun.org.apache.xerces.internal.util.Status
+com.sun.org.apache.xerces.internal.util.FeatureState
+javax.xml.transform.TransformerFactory
+com.sun.org.apache.xalan.internal.xsltc.compiler.SourceLoader
+javax.xml.transform.sax.SAXTransformerFactory
+com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
+javax.xml.transform.ErrorListener
+jdk.xml.internal.TransformErrorListener
+jdk.xml.internal.JdkProperty
+javax.xml.xpath.XPathFactory
+com.sun.org.apache.xpath.internal.jaxp.XPathFactoryImpl
+org.custommonkey.xmlunit.XMLUnit
+org.custommonkey.xmlunit.exceptions.XMLUnitRuntimeException
+org.custommonkey.xmlunit.exceptions.ConfigurationException
+javax.xml.transform.TransformerException
+org.custommonkey.xmlunit.XpathEngine
+javax.xml.transform.FactoryFinder
+javax.xml.transform.FactoryFinder$$Lambda/0x00003fc0011234b0
+javax.xml.transform.FactoryFinder$$Lambda/0x00003fc0011236e0
+javax.xml.transform.FactoryFinder$$Lambda/0x00003fc001123910
+com.jayway.jsonpath.spi.cache.NOOPCache
+com.jayway.jsonpath.spi.cache.CacheProvider
+java.util.concurrent.atomic.AtomicReferenceFieldUpdater
+java.util.concurrent.atomic.AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl
+sun.reflect.misc.ReflectUtil
+com.jayway.jsonpath.internal.Utils
+com.github.tomakehurst.wiremock.store.DefaultStores
+com.github.tomakehurst.wiremock.store.RecorderStateStore
+com.github.tomakehurst.wiremock.store.ObjectStore
+com.github.tomakehurst.wiremock.store.StubMappingStore
+com.github.tomakehurst.wiremock.store.RequestJournalStore
+com.github.tomakehurst.wiremock.store.SettingsStore
+com.github.tomakehurst.wiremock.store.ScenariosStore
+com.github.tomakehurst.wiremock.store.InMemoryStubMappingStore
+com.github.tomakehurst.wiremock.stubbing.SortedConcurrentMappingSet
+java.util.concurrent.ConcurrentSkipListSet
+com.github.tomakehurst.wiremock.stubbing.StubMapping
+com.github.tomakehurst.wiremock.stubbing.SortedConcurrentMappingSet$$Lambda/0x00003fc0011fb7b0
+java.util.concurrent.ConcurrentNavigableMap
+java.util.concurrent.ConcurrentSkipListMap
+java.util.concurrent.ConcurrentSkipListMap$Index
+java.util.concurrent.atomic.Striped64
+java.util.concurrent.atomic.LongAdder
+java.util.concurrent.ConcurrentSkipListMap$Node
+com.github.tomakehurst.wiremock.store.InMemoryRequestJournalStore
+java.util.concurrent.ConcurrentLinkedDeque
+java.util.concurrent.ConcurrentLinkedDeque$Node
+com.github.tomakehurst.wiremock.store.InMemorySettingsStore
+com.github.tomakehurst.wiremock.global.GlobalSettings
+com.github.tomakehurst.wiremock.global.GlobalSettings$Builder
+com.github.tomakehurst.wiremock.store.InMemoryScenariosStore
+com.github.tomakehurst.wiremock.common.ssl.KeyStoreSourceFactory
+com.github.tomakehurst.wiremock.common.ssl.KeyStoreSource
+com.github.tomakehurst.wiremock.common.ssl.ReadOnlyFileOrClasspathKeyStoreSource
+com.github.tomakehurst.wiremock.jetty11.WritableFileOrClasspathKeyStoreSource
+java.nio.file.attribute.PosixFilePermission
+java.security.GeneralSecurityException
+java.security.KeyStoreException
+java.security.NoSuchAlgorithmException
+java.security.cert.CertificateException
+java.lang.invoke.LambdaForm$MH/0x00003fc001200000
+java.lang.invoke.LambdaFormEditor$1
+java.util.TreeMap$Entry
+java.util.TreeMap$EntrySet
+java.util.TreeMap$PrivateEntryIterator
+java.util.TreeMap$EntryIterator
+java.lang.invoke.LambdaForm$MH/0x00003fc001200400
+java.lang.invoke.LambdaForm$MH/0x00003fc001200800
+com.github.tomakehurst.wiremock.standalone.JsonFileMappingsSource
+com.github.tomakehurst.wiremock.common.JsonException
+com.github.tomakehurst.wiremock.standalone.MappingFileException
+com.github.tomakehurst.wiremock.common.NotWritableException
+com.github.tomakehurst.wiremock.common.filemaker.FilenameMaker
+com.github.tomakehurst.wiremock.standalone.JsonFileMappingsSource$$Lambda/0x00003fc0012046f8
+java.util.regex.CharPredicates$$Lambda/0x00003fc0011256e0
+java.util.regex.Pattern$$Lambda/0x800000030
+com.github.tomakehurst.wiremock.extension.responsetemplating.TemplateEngine
+com.github.jknack.handlebars.Helper
+com.github.jknack.handlebars.HelperRegistry
+com.github.jknack.handlebars.Handlebars
+com.github.jknack.handlebars.io.TemplateSource
+com.github.jknack.handlebars.io.TemplateLoader
+com.github.jknack.handlebars.cache.TemplateCache
+com.github.jknack.handlebars.ParserFactory
+com.github.jknack.handlebars.Formatter$Chain
+com.github.jknack.handlebars.io.AbstractTemplateLoader
+com.github.jknack.handlebars.io.URLTemplateLoader
+com.github.jknack.handlebars.io.ClassPathTemplateLoader
+com.github.jknack.handlebars.internal.lang3.Validate
+com.github.jknack.handlebars.internal.lang3.Validate$$Lambda/0x00003fc0012068b0
+com.github.jknack.handlebars.internal.lang3.StringUtils
+com.github.jknack.handlebars.cache.NullTemplateCache
+com.github.jknack.handlebars.helper.DefaultHelperRegistry
+com.github.jknack.handlebars.internal.Files
+com.github.jknack.handlebars.helper.WithHelper
+com.github.jknack.handlebars.internal.lang3.Validate$$Lambda/0x00003fc001207ac0
+com.github.jknack.handlebars.helper.IfHelper
+com.github.jknack.handlebars.helper.UnlessHelper
+com.github.jknack.handlebars.helper.EachHelper
+com.github.jknack.handlebars.helper.EmbeddedHelper
+com.github.jknack.handlebars.helper.BlockHelper
+com.github.jknack.handlebars.helper.PartialHelper
+com.github.jknack.handlebars.helper.PrecompileHelper
+com.github.jknack.handlebars.helper.I18nHelper
+com.github.jknack.handlebars.helper.I18nHelper$1
+com.github.jknack.handlebars.helper.I18nHelper$2
+com.github.jknack.handlebars.helper.I18nSource
+com.github.jknack.handlebars.helper.LookupHelper
+com.github.jknack.handlebars.helper.LogHelper
+com.github.jknack.handlebars.Decorator
+com.github.jknack.handlebars.helper.InlineDecorator
+com.github.jknack.handlebars.EscapingStrategy
+com.github.jknack.handlebars.EscapingStrategy$Hbs
+com.github.jknack.handlebars.internal.text.translate.CharSequenceTranslator
+com.github.jknack.handlebars.internal.text.translate.LookupTranslator
+com.github.jknack.handlebars.internal.text.translate.AggregateTranslator
+java.security.InvalidParameterException
+com.github.jknack.handlebars.EscapingStrategy$$Lambda/0x00003fc001200c00
+com.github.jknack.handlebars.EscapingStrategy$$Lambda/0x00003fc001208000
+com.github.jknack.handlebars.EscapingStrategy$$Lambda/0x00003fc001208228
+com.github.jknack.handlebars.EscapingStrategy$$Lambda/0x00003fc001208450
+com.github.jknack.handlebars.internal.HbsParserFactory
+com.github.jknack.handlebars.internal.antlr.TokenSource
+com.github.jknack.handlebars.internal.antlr.IntStream
+com.github.jknack.handlebars.internal.antlr.TokenStream
+com.github.jknack.handlebars.internal.antlr.Recognizer
+com.github.jknack.handlebars.internal.antlr.Parser
+com.github.jknack.handlebars.internal.HbsParser
+com.github.jknack.handlebars.internal.HbsParserFactory$3
+com.github.jknack.handlebars.internal.antlr.Lexer
+com.github.jknack.handlebars.internal.HbsLexer
+com.github.jknack.handlebars.internal.HbsParserFactory$2
+com.github.jknack.handlebars.internal.antlr.ANTLRErrorStrategy
+com.github.jknack.handlebars.Parser
+com.github.jknack.handlebars.Formatter
+com.github.jknack.handlebars.Formatter$$Lambda/0x00003fc00120b290
+com.google.common.cache.CacheBuilder
+com.google.common.base.Supplier
+com.google.common.base.Ticker
+com.google.common.cache.CacheBuilder$3
+com.google.common.cache.Cache
+com.google.common.base.Function
+com.google.common.cache.LoadingCache
+com.google.common.cache.AbstractCache$StatsCounter
+com.google.common.cache.CacheBuilder$1
+com.google.common.base.Suppliers
+com.google.common.base.Suppliers$SupplierOfInstance
+com.google.common.cache.CacheStats
+com.google.common.base.Preconditions
+com.google.common.cache.CacheBuilder$2
+com.google.common.base.Ticker$1
+com.google.common.cache.LocalCache$LocalManualCache
+com.google.common.cache.CacheLoader
+com.google.common.cache.LocalCache$LocalManualCache$1
+com.google.common.cache.LocalCache
+com.google.common.cache.ReferenceEntry
+com.google.common.cache.LocalCache$ValueReference
+com.google.common.cache.CacheLoader$UnsupportedLoadingOperationException
+com.google.common.cache.CacheLoader$InvalidCacheLoadException
+com.google.common.util.concurrent.UncheckedExecutionException
+com.google.common.util.concurrent.ExecutionError
+com.google.common.cache.LocalCache$1
+com.google.common.cache.LocalCache$2
+com.google.common.cache.LocalCache$Strength
+com.google.common.cache.LocalCache$Strength$1
+com.google.common.cache.LocalCache$Strength$2
+com.google.common.cache.LocalCache$Strength$3
+com.google.common.base.MoreObjects
+java.util.function.BiPredicate
+com.google.common.base.Equivalence
+com.google.common.base.FunctionalEquivalence
+com.google.common.base.PairwiseEquivalence
+com.google.common.base.Predicate
+com.google.common.base.Equivalence$Equals
+com.google.common.base.Equivalence$Identity
+com.google.common.cache.Weigher
+com.google.common.cache.CacheBuilder$OneWeigher
+com.google.common.cache.RemovalListener
+com.google.common.cache.CacheBuilder$NullListener
+com.google.common.cache.LocalCache$EntryFactory
+com.google.common.cache.LocalCache$EntryFactory$1
+com.google.common.cache.LocalCache$EntryFactory$2
+com.google.common.cache.LocalCache$EntryFactory$3
+com.google.common.cache.LocalCache$EntryFactory$4
+com.google.common.cache.LocalCache$EntryFactory$5
+com.google.common.cache.LocalCache$EntryFactory$6
+com.google.common.cache.LocalCache$EntryFactory$7
+com.google.common.cache.LocalCache$EntryFactory$8
+com.google.common.cache.LocalCache$Segment
+com.google.common.cache.LocalCache$LoadingValueReference
+com.google.common.cache.LocalCache$ComputingValueReference
+com.github.jknack.handlebars.helper.StringHelpers
+com.github.jknack.handlebars.helper.StringHelpers$1
+com.github.jknack.handlebars.helper.StringHelpers$2
+com.github.jknack.handlebars.helper.StringHelpers$3
+com.github.jknack.handlebars.helper.StringHelpers$4
+com.github.jknack.handlebars.helper.StringHelpers$5
+com.github.jknack.handlebars.helper.StringHelpers$6
+com.github.jknack.handlebars.helper.StringHelpers$7
+com.github.jknack.handlebars.helper.StringHelpers$8
+com.github.jknack.handlebars.helper.StringHelpers$9
+com.github.jknack.handlebars.helper.StringHelpers$10
+com.github.jknack.handlebars.helper.StringHelpers$11
+com.github.jknack.handlebars.helper.StringHelpers$12
+com.github.jknack.handlebars.helper.StringHelpers$13
+com.github.jknack.handlebars.helper.StringHelpers$14
+com.github.jknack.handlebars.helper.StringHelpers$15
+com.github.jknack.handlebars.helper.StringHelpers$16
+com.github.jknack.handlebars.helper.StringHelpers$17
+com.github.jknack.handlebars.helper.StringHelpers$18
+com.github.jknack.handlebars.helper.StringHelpers$19
+com.github.jknack.handlebars.helper.StringHelpers$20
+com.github.jknack.handlebars.helper.StringHelpers$21
+com.github.jknack.handlebars.helper.StringHelpers$19$1
+java.time.format.FormatStyle
+com.github.jknack.handlebars.helper.NumberHelper
+com.github.jknack.handlebars.helper.NumberHelper$1
+com.github.jknack.handlebars.helper.NumberHelper$2
+com.github.jknack.handlebars.helper.NumberHelper$3
+com.github.jknack.handlebars.helper.ConditionalHelpers
+com.github.jknack.handlebars.helper.ConditionalHelpers$1
+com.github.jknack.handlebars.helper.ConditionalHelpers$2
+com.github.jknack.handlebars.helper.ConditionalHelpers$3
+com.github.jknack.handlebars.helper.ConditionalHelpers$4
+com.github.jknack.handlebars.helper.ConditionalHelpers$5
+com.github.jknack.handlebars.helper.ConditionalHelpers$6
+com.github.jknack.handlebars.helper.ConditionalHelpers$7
+com.github.jknack.handlebars.helper.ConditionalHelpers$8
+com.github.jknack.handlebars.helper.ConditionalHelpers$9
+com.github.jknack.handlebars.helper.AssignHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$1
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$2
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$3
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$4
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$5
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$6
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$7
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$8
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$9
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$10
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$11
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$12
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$13
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$14
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$15
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$16
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$17
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$18
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$19
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$20
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$21
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$22
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$23
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$24
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$25
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$26
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$27
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$28
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$29
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$30
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$31
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$32
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$33
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.WireMockHelpers$34
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HandlebarsHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HandlebarsXPathHelper
+com.github.tomakehurst.wiremock.common.xml.XPathException
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HandlebarsSoapHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HandlebarsJsonPathHelper
+com.jayway.jsonpath.InvalidJsonException
+com.jayway.jsonpath.InvalidPathException
+com.jayway.jsonpath.Configuration
+com.jayway.jsonpath.Configuration$Defaults
+com.jayway.jsonpath.internal.DefaultsImpl
+com.jayway.jsonpath.spi.json.JsonProvider
+com.jayway.jsonpath.spi.mapper.MappingProvider
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider
+net.minidev.json.writer.JsonReaderI
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$LongReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$IntegerReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$DoubleReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$FloatReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$BigDecimalReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$StringReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$DateReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$BigIntegerReader
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$BooleanReader
+com.jayway.jsonpath.spi.mapper.MappingException
+net.minidev.json.writer.JsonReader
+net.minidev.json.writer.DefaultMapperCollection
+net.minidev.json.writer.ArraysMapper
+net.minidev.json.writer.ArraysMapper$GenericMapper
+net.minidev.json.writer.CollectionMapper$ListClass
+net.minidev.json.writer.CollectionMapper$MapClass
+net.minidev.json.writer.BeansMapper$Bean
+net.minidev.json.writer.CollectionMapper$ListType
+net.minidev.json.writer.CollectionMapper$MapType
+net.minidev.json.writer.MapperRemapped
+net.minidev.json.writer.DefaultMapper
+net.minidev.json.writer.DefaultMapperOrdered
+net.minidev.json.writer.BeansMapper
+net.minidev.json.writer.BeansMapper$1
+net.minidev.json.writer.ArraysMapper$1
+net.minidev.json.writer.ArraysMapper$2
+net.minidev.json.writer.ArraysMapper$3
+net.minidev.json.writer.ArraysMapper$4
+net.minidev.json.writer.ArraysMapper$5
+net.minidev.json.writer.ArraysMapper$6
+net.minidev.json.writer.ArraysMapper$7
+net.minidev.json.writer.ArraysMapper$8
+net.minidev.json.writer.ArraysMapper$9
+net.minidev.json.writer.ArraysMapper$10
+net.minidev.json.writer.ArraysMapper$11
+net.minidev.json.writer.ArraysMapper$12
+net.minidev.json.writer.ArraysMapper$13
+net.minidev.json.writer.ArraysMapper$14
+net.minidev.json.writer.ArraysMapper$15
+net.minidev.json.writer.ArraysMapper$16
+net.minidev.json.JSONAware
+net.minidev.json.JSONAwareEx
+net.minidev.json.JSONStreamAware
+net.minidev.json.JSONStreamAwareEx
+net.minidev.json.JSONArray
+net.minidev.json.JSONObject
+com.jayway.jsonpath.spi.mapper.JsonSmartMappingProvider$1
+com.jayway.jsonpath.Configuration$ConfigurationBuilder
+com.jayway.jsonpath.Option
+com.jayway.jsonpath.spi.json.AbstractJsonProvider
+com.jayway.jsonpath.spi.json.JsonSmartJsonProvider
+net.minidev.json.parser.ParseException
+net.minidev.json.JSONValue
+net.minidev.json.writer.CompessorMapper
+net.minidev.json.writer.UpdaterMapper
+net.minidev.json.JSONStyle
+net.minidev.json.JStylerObj$MustProtect
+net.minidev.json.JStylerObj$StringProtector
+net.minidev.json.JStylerObj
+net.minidev.json.JStylerObj$MPSimple
+net.minidev.json.JStylerObj$MPTrue
+net.minidev.json.JStylerObj$MPAgressive
+net.minidev.json.JStylerObj$EscapeLT
+net.minidev.json.JStylerObj$Escape4Web
+net.minidev.json.reader.JsonWriter
+net.minidev.json.reader.JsonWriterI
+net.minidev.json.reader.JsonWriter$1
+net.minidev.json.reader.JsonWriter$2
+net.minidev.json.reader.JsonWriter$3
+net.minidev.json.reader.JsonWriter$4
+net.minidev.json.reader.JsonWriter$5
+net.minidev.json.reader.JsonWriter$6
+net.minidev.json.reader.JsonWriter$7
+net.minidev.json.reader.BeansWriterASM
+net.minidev.asm.FieldFilter
+net.minidev.json.reader.BeansWriter
+net.minidev.json.reader.ArrayWriter
+net.minidev.json.reader.JsonWriter$8
+net.minidev.json.reader.JsonWriter$9
+net.minidev.json.reader.JsonWriter$10
+net.minidev.json.reader.JsonWriter$11
+net.minidev.json.reader.JsonWriter$12
+net.minidev.json.reader.JsonWriter$13
+net.minidev.json.reader.JsonWriter$14
+net.minidev.json.reader.JsonWriter$15
+net.minidev.json.reader.JsonWriter$16
+net.minidev.json.reader.JsonWriter$17
+net.minidev.json.reader.JsonWriter$18
+net.minidev.json.reader.JsonWriter$WriterByInterface
+java.util.RegularEnumSet$EnumSetIterator
+com.jayway.jsonpath.JsonPath
+com.jayway.jsonpath.ParseContext
+com.jayway.jsonpath.PathNotFoundException
+com.jayway.jsonpath.internal.ParseContextImpl
+com.jayway.jsonpath.ReadContext
+com.jayway.jsonpath.WriteContext
+com.jayway.jsonpath.DocumentContext
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HandlebarsRandomValuesHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HostnameHelper
+jdk.internal.access.JavaNetInetAddressAccess
+java.net.InetAddress$1
+jdk.internal.util.Exceptions
+sun.security.util.SecurityProperties
+java.security.Security
+java.security.Security$1
+java.security.Security$SecPropLoader
+java.security.Security$SecPropLoader$LoadingMode
+java.nio.file.attribute.FileAttribute
+sun.nio.fs.UnixFileModeAttribute
+sun.nio.fs.UnixChannelFactory
+sun.nio.fs.UnixChannelFactory$Flags
+java.nio.channels.InterruptibleChannel
+java.nio.channels.spi.AbstractInterruptibleChannel
+java.nio.channels.ByteChannel
+java.nio.channels.SeekableByteChannel
+java.nio.channels.GatheringByteChannel
+java.nio.channels.ScatteringByteChannel
+java.nio.channels.FileChannel
+sun.nio.ch.FileChannelImpl
+sun.nio.ch.NativeDispatcher
+sun.nio.ch.FileDispatcher
+sun.nio.ch.UnixFileDispatcherImpl
+sun.nio.ch.FileDispatcherImpl
+sun.nio.ch.IOUtil
+sun.nio.ch.Interruptible
+java.nio.channels.spi.AbstractInterruptibleChannel$1
+sun.nio.ch.NativeThreadSet
+sun.nio.ch.FileChannelImpl$Closer
+java.nio.channels.Channels
+sun.nio.ch.Streams
+java.nio.channels.SelectableChannel
+java.nio.channels.spi.AbstractSelectableChannel
+java.nio.channels.NetworkChannel
+java.nio.channels.SocketChannel
+sun.nio.ch.SelChImpl
+sun.nio.ch.SocketChannelImpl
+sun.nio.ch.ChannelInputStream
+sun.nio.ch.NativeThread
+sun.nio.ch.Util
+sun.nio.ch.Util$1
+sun.nio.ch.Util$BufferCache
+sun.nio.ch.IOStatus
+jdk.internal.access.JavaSecurityPropertiesAccess
+java.security.Security$2
+java.net.InetAddress$InetAddressHolder
+java.net.InetAddressImpl
+java.net.Inet6AddressImpl
+java.net.Inet4AddressImpl
+java.net.spi.InetAddressResolver$LookupPolicy
+java.net.spi.InetAddressResolver
+java.net.InetAddress$PlatformResolver
+java.util.concurrent.ConcurrentSkipListMap$KeySet
+java.util.concurrent.ConcurrentSkipListMap$Iter
+java.util.concurrent.ConcurrentSkipListMap$KeyIterator
+java.net.InetAddress$Addresses
+java.net.InetAddress$NameServiceAddresses
+java.net.spi.InetAddressResolverProvider
+java.net.InetAddress$$Lambda/0x00003fc001127d70
+java.net.Inet4Address
+java.net.Inet6Address
+java.net.Inet6Address$Inet6AddressHolder
+java.net.InetAddress$$Lambda/0x00003fc0011281b8
+sun.net.InetAddressCachePolicy
+java.net.InetAddress$CachedLookup
+java.util.concurrent.ThreadLocalRandom
+jdk.internal.util.random.RandomSupport
+java.util.concurrent.ThreadLocalRandom$Access
+jdk.internal.access.JavaUtilConcurrentTLRAccess
+java.util.concurrent.ThreadLocalRandom$Access$1
+java.lang.invoke.VarHandleLongs$FieldInstanceReadOnly
+java.lang.invoke.VarHandleLongs$FieldInstanceReadWrite
+java.net.InetAddress$CachedLocalHost
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HandlebarsCurrentDateHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ParseDateHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.TruncateDateTimeHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.StringTrimHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.Base64Helper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.UrlEncodingHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.FormDataHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.RegexExtractHelper
+java.util.regex.PatternSyntaxException
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.SizeHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.PickRandomHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.RandomIntHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.RandomDecimalHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.RangeHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ArrayHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.AbstractArrayHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ArrayAddHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ArrayRemoveHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ParseJsonHelper
+com.fasterxml.jackson.core.type.TypeReference
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ParseJsonHelper$1
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ParseJsonHelper$2
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.MatchesRegexHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ContainsHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.MathsHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ValHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.JoinHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.AbstractFormattingHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.FormatJsonHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.FormatXmlHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.ToJsonHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.JsonMergeHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.JsonRemoveHelper
+com.jayway.jsonpath.InvalidModificationException
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.HelperUtils
+com.jayway.jsonpath.spi.json.JacksonJsonProvider
+com.fasterxml.jackson.databind.ObjectReader
+com.fasterxml.jackson.core.util.JsonParserDelegate
+com.fasterxml.jackson.core.filter.FilteringParserDelegate
+com.fasterxml.jackson.databind.node.ArrayNode
+com.fasterxml.jackson.core.filter.TokenFilter
+com.fasterxml.jackson.core.filter.JsonPointerBasedFilter
+com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializerNR
+sun.reflect.generics.tree.TypeVariableSignature
+sun.reflect.generics.reflectiveObjects.LazyReflectiveObjectGenerator
+sun.reflect.generics.reflectiveObjects.TypeVariableImpl
+com.fasterxml.jackson.databind.type.TypeBindings$AsKey
+java.lang.reflect.ParameterizedType
+sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl
+com.fasterxml.jackson.databind.type.TypeBindings$TypeParamStash
+com.fasterxml.jackson.databind.deser.BasicDeserializerFactory$ContainerDefaultMappings
+com.fasterxml.jackson.databind.annotation.JacksonStdImpl
+jdk.proxy2.$Proxy15
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$PrimitiveOrWrapperDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$IntegerDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$BooleanDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$LongDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$DoubleDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$CharacterDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$ByteDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$ShortDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$FloatDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$NumberDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$BigDecimalDeserializer
+com.fasterxml.jackson.databind.deser.std.NumberDeserializers$BigIntegerDeserializer
+com.fasterxml.jackson.databind.deser.std.StdKeyDeserializer$StringKD
+com.fasterxml.jackson.databind.deser.ContextualKeyDeserializer
+com.github.tomakehurst.wiremock.common.Json
+com.github.tomakehurst.wiremock.common.Json$2
+com.github.tomakehurst.wiremock.common.Json$1
+com.fasterxml.jackson.databind.Module
+com.fasterxml.jackson.databind.module.SimpleModule
+com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
+com.fasterxml.jackson.databind.module.SimpleAbstractTypeResolver
+com.fasterxml.jackson.datatype.jsr310.deser.JSR310DeserializerBase
+com.fasterxml.jackson.datatype.jsr310.deser.JSR310DateTimeDeserializerBase
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.DurationDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.MonthDayDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.OffsetTimeDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.YearDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.YearMonthDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.JavaTimeDeserializerModifier
+com.fasterxml.jackson.datatype.jsr310.ser.JavaTimeSerializerModifier
+com.fasterxml.jackson.datatype.jsr310.ser.JSR310SerializerBase
+com.fasterxml.jackson.datatype.jsr310.ser.JSR310FormattedSerializerBase
+com.fasterxml.jackson.datatype.jsr310.ser.DurationSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializerBase
+com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.MonthDaySerializer
+com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.OffsetTimeSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.YearSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.YearMonthSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.ZoneIdSerializer
+com.fasterxml.jackson.datatype.jsr310.ser.key.ZonedDateTimeKeySerializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.Jsr310KeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.DurationKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.InstantKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateTimeKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.LocalDateKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.LocalTimeKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.MonthDayKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetDateTimeKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.OffsetTimeKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.PeriodKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.YearKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.YearMonthKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.ZonedDateTimeKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneIdKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.key.ZoneOffsetKeyDeserializer
+com.fasterxml.jackson.datatype.jsr310.PackageVersion
+com.fasterxml.jackson.core.util.VersionUtil
+com.fasterxml.jackson.core.Version
+com.fasterxml.jackson.datatype.jsr310.JavaTimeFeature
+com.fasterxml.jackson.databind.ObjectMapper$1
+com.fasterxml.jackson.databind.deser.Deserializers$Base
+com.fasterxml.jackson.databind.module.SimpleDeserializers
+java.time.Instant
+java.time.ZoneOffset
+java.util.regex.Pattern$$Lambda/0x800000028
+java.util.regex.Pattern$Pos
+java.time.format.DateTimeFormatter
+java.time.format.DateTimeFormatterBuilder
+java.time.temporal.TemporalQuery
+java.time.format.DateTimeFormatterBuilder$$Lambda/0x80000001c
+java.time.temporal.TemporalField
+java.time.temporal.ChronoField
+java.time.temporal.ChronoUnit
+java.time.temporal.TemporalAmount
+java.time.Duration
+java.time.temporal.ValueRange
+java.time.temporal.IsoFields
+java.time.temporal.IsoFields$Field
+java.time.temporal.IsoFields$Field$1
+java.time.temporal.IsoFields$Field$2
+java.time.temporal.IsoFields$Field$3
+java.time.temporal.IsoFields$Field$4
+java.time.temporal.IsoFields$Unit
+java.time.temporal.JulianFields
+java.time.temporal.JulianFields$Field
+java.time.format.SignStyle
+java.time.format.DateTimeFormatterBuilder$DateTimePrinterParser
+java.time.format.DateTimeFormatterBuilder$NumberPrinterParser
+java.time.format.DateTimeFormatterBuilder$CharLiteralPrinterParser
+java.time.format.ResolverStyle
+java.time.chrono.Chronology
+java.time.chrono.AbstractChronology
+java.time.chrono.IsoChronology
+java.time.format.DateTimeFormatterBuilder$CompositePrinterParser
+java.time.format.DecimalStyle
+java.time.format.DateTimeFormatterBuilder$SettingsParser
+java.time.format.DateTimeFormatterBuilder$OffsetIdPrinterParser
+java.time.format.DateTimeFormatterBuilder$NanosPrinterParser
+java.time.format.DateTimeFormatterBuilder$ZoneIdPrinterParser
+java.time.format.DateTimeFormatterBuilder$StringLiteralPrinterParser
+java.time.format.DateTimeFormatterBuilder$InstantPrinterParser
+java.time.format.TextStyle
+java.time.format.DateTimeTextProvider$LocaleStore
+java.util.AbstractMap$SimpleImmutableEntry
+java.time.format.DateTimeTextProvider
+java.time.format.DateTimeTextProvider$1
+java.time.format.DateTimeFormatterBuilder$1
+java.time.format.DateTimeFormatterBuilder$TextPrinterParser
+java.time.chrono.ChronoPeriod
+java.time.Period
+java.time.format.DateTimeFormatter$$Lambda/0x80000001a
+java.time.format.DateTimeFormatter$$Lambda/0x80000001b
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124acc8
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$FromIntegerArguments
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124b128
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$FromDecimalArguments
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124b588
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124b7d0
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124ba08
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124bc50
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124be98
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124c0e0
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124c318
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124c560
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124c7a8
+com.fasterxml.jackson.datatype.jsr310.deser.InstantDeserializer$$Lambda/0x00003fc00124c9f0
+com.fasterxml.jackson.databind.type.ClassKey
+java.time.chrono.ChronoLocalDate
+java.time.LocalDate
+java.time.LocalTime
+java.time.MonthDay
+java.time.OffsetTime
+com.fasterxml.jackson.datatype.jsr310.deser.JSR310StringParsableDeserializer
+java.time.Year
+java.time.YearMonth
+com.fasterxml.jackson.databind.util.ArrayBuilders
+com.fasterxml.jackson.databind.deser.std.DelegatingDeserializer
+com.fasterxml.jackson.datatype.jsr310.deser.OneBasedMonthDeserializer
+com.fasterxml.jackson.datatype.jsr310.ser.OneBasedMonthSerializer
+com.fasterxml.jackson.databind.ser.Serializers$Base
+com.fasterxml.jackson.databind.module.SimpleSerializers
+com.fasterxml.jackson.datatype.jsr310.JavaTimeModule$JavaTimeSerializers
+java.util.function.ToLongFunction
+com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer$$Lambda/0x00003fc00124eae0
+com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer$$Lambda/0x00003fc00124ed08
+com.fasterxml.jackson.datatype.jsr310.ser.InstantSerializer$$Lambda/0x00003fc00124ef30
+java.lang.invoke.LambdaForm$DMH/0x00003fc001250000
+java.lang.invoke.LambdaForm$DMH/0x00003fc001250400
+com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer$$Lambda/0x00003fc00124f158
+com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer$$Lambda/0x00003fc00124f380
+com.fasterxml.jackson.datatype.jsr310.ser.OffsetDateTimeSerializer$$Lambda/0x00003fc00124f5a8
+com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer$$Lambda/0x00003fc00124f7d0
+java.lang.invoke.LambdaForm$DMH/0x00003fc001250800
+com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer$$Lambda/0x00003fc00124f9f8
+com.fasterxml.jackson.datatype.jsr310.ser.ZonedDateTimeSerializer$$Lambda/0x00003fc00124fc20
+com.fasterxml.jackson.databind.module.SimpleKeyDeserializers
+com.fasterxml.jackson.databind.deser.ValueInstantiators$Base
+com.fasterxml.jackson.datatype.jsr310.JavaTimeModule$1
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.JsonArrayAddHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.helpers.SystemValueHelper
+com.github.tomakehurst.wiremock.extension.responsetemplating.SystemKeyAuthoriser
+java.util.regex.Pattern$SliceI
+com.github.tomakehurst.wiremock.extension.responsetemplating.LazyTemplateEngine
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc0012551c8
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001255410
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001255658
+com.github.tomakehurst.wiremock.extension.ExtensionFactory
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001255aa0
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001255ce8
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001255f38
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001256180
+java.util.function.Function$$Lambda/0x00003fc00112c740
+com.github.tomakehurst.wiremock.extension.TemplateHelperProviderExtension
+com.github.tomakehurst.wiremock.extension.ExtensionLoader
+com.github.tomakehurst.wiremock.extension.ExtensionLoader$$Lambda/0x00003fc0012567e0
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001256a40
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001256c88
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001256ed0
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001257120
+java.lang.invoke.LambdaForm$DMH/0x00003fc001250c00
+java.util.stream.Collectors$$Lambda/0x00003fc00112c988
+java.util.stream.Collectors$$Lambda/0x00003fc00112cbc8
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001257348
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001257590
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc0012577d8
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001257a20
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001257c68
+com.github.tomakehurst.wiremock.extension.TemplateModelDataProviderExtension
+com.google.common.cache.LocalCache$AccessQueue
+com.google.common.cache.LocalCache$AbstractReferenceEntry
+com.google.common.cache.LocalCache$AccessQueue$1
+com.github.tomakehurst.wiremock.extension.StubLifecycleListener
+com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformerV2
+com.github.tomakehurst.wiremock.extension.responsetemplating.ResponseTemplateTransformer
+com.github.jknack.handlebars.HandlebarsException
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc001253680
+com.github.tomakehurst.wiremock.common.Lazy
+org.wiremock.webhooks.WebhookTransformer
+java.util.stream.Collectors$$Lambda/0x00003fc00112ce20
+java.util.stream.Collectors$$Lambda/0x00003fc00112d048
+java.util.stream.Collectors$$Lambda/0x00003fc00112d280
+java.util.stream.Collectors$$Lambda/0x00003fc00112d4d0
+com.github.tomakehurst.wiremock.extension.ServeEventListener
+com.github.tomakehurst.wiremock.extension.PostServeAction
+org.wiremock.webhooks.Webhooks
+com.github.tomakehurst.wiremock.common.ProhibitedNetworkAddressException
+com.github.tomakehurst.wiremock.http.client.LazyHttpClient
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc0012519e0
+com.github.tomakehurst.wiremock.common.DataTruncationSettings
+com.github.tomakehurst.wiremock.matching.ValueMatcher
+com.github.tomakehurst.wiremock.matching.NamedValueMatcher
+com.github.tomakehurst.wiremock.matching.RequestMatcher
+com.github.tomakehurst.wiremock.matching.RequestMatcherExtension
+com.github.tomakehurst.wiremock.verification.AbstractRequestJournal
+com.github.tomakehurst.wiremock.verification.StoreBackedRequestJournal
+com.github.tomakehurst.wiremock.stubbing.AbstractScenarios
+com.github.tomakehurst.wiremock.stubbing.InMemoryScenarios
+com.github.tomakehurst.wiremock.stubbing.AbstractStubMappings
+com.github.tomakehurst.wiremock.stubbing.StoreBackedStubMappings
+com.github.tomakehurst.wiremock.admin.NotFoundException
+com.github.tomakehurst.wiremock.extension.AbstractTransformer
+com.github.tomakehurst.wiremock.extension.ResponseDefinitionTransformer
+com.github.tomakehurst.wiremock.store.files.PathBased
+com.github.tomakehurst.wiremock.store.files.FileSourceBlobStore
+com.github.tomakehurst.wiremock.store.files.BlobStoreFileSource
+com.github.tomakehurst.wiremock.common.InputStreamSource
+com.github.tomakehurst.wiremock.common.BinaryFile
+com.github.tomakehurst.wiremock.store.files.BlobStoreBinaryFile
+com.github.tomakehurst.wiremock.common.TextFile
+com.github.tomakehurst.wiremock.store.files.BlobStoreTextFile
+com.github.tomakehurst.wiremock.verification.NearMissCalculator
+com.github.tomakehurst.wiremock.matching.MatchResult
+com.github.tomakehurst.wiremock.matching.MemoizingMatchResult
+com.github.tomakehurst.wiremock.verification.NearMiss
+com.github.tomakehurst.wiremock.verification.NearMissCalculator$$Lambda/0x00003fc00125bda8
+com.github.tomakehurst.wiremock.recording.Recorder
+com.github.tomakehurst.wiremock.recording.NotRecordingException
+com.github.tomakehurst.wiremock.store.InMemoryRecorderStateStore
+com.github.tomakehurst.wiremock.recording.RecorderState
+com.github.tomakehurst.wiremock.recording.RecordingStatus
+com.github.tomakehurst.wiremock.extension.GlobalSettingsListener
+com.github.tomakehurst.wiremock.extension.MappingsLoaderExtension
+com.github.tomakehurst.wiremock.extension.Extensions$$Lambda/0x00003fc00125d1f8
+com.github.tomakehurst.wiremock.core.WireMockApp$$Lambda/0x00003fc00125d430
+com.github.tomakehurst.wiremock.common.HttpsSettings$Builder
+com.github.tomakehurst.wiremock.common.HttpsSettings
+com.github.tomakehurst.wiremock.http.HttpClientFactory
+javax.net.ssl.HostnameVerifier
+javax.net.SocketFactory
+javax.net.ssl.SSLSocketFactory
+com.github.tomakehurst.wiremock.http.ssl.HostVerifyingSSLSocketFactory
+org.apache.hc.client5.http.socket.ConnectionSocketFactory
+org.apache.hc.client5.http.socket.LayeredConnectionSocketFactory
+java.security.KeyException
+java.security.KeyManagementException
+com.github.tomakehurst.wiremock.http.ssl.TrustStrategy
+java.security.UnrecoverableEntryException
+org.apache.hc.core5.http.MessageHeaders
+org.apache.hc.core5.http.HttpMessage
+org.apache.hc.core5.http.HttpRequest
+org.apache.hc.core5.http.HttpEntityContainer
+org.apache.hc.core5.http.ClassicHttpRequest
+org.apache.hc.client5.http.config.Configurable
+org.apache.hc.client5.http.classic.methods.HttpUriRequest
+org.apache.hc.client5.http.AuthenticationStrategy
+org.apache.hc.client5.http.auth.Credentials
+org.apache.hc.client5.http.auth.CredentialsProvider
+org.apache.hc.client5.http.DnsResolver
+org.apache.hc.core5.http.io.HttpConnectionFactory
+org.apache.hc.core5.io.ModalCloseable
+org.apache.hc.client5.http.io.HttpClientConnectionManager
+com.github.tomakehurst.wiremock.http.NetworkAddressRulesAdheringDnsResolver
+org.apache.hc.client5.http.SystemDefaultDnsResolver
+org.apache.hc.client5.http.impl.classic.HttpClientBuilder
+org.apache.hc.core5.http.ConnectionReuseStrategy
+org.apache.hc.client5.http.ConnectionKeepAliveStrategy
+org.apache.hc.client5.http.UserTokenHandler
+org.apache.hc.core5.http.HttpRequestInterceptor
+org.apache.hc.core5.http.HttpResponseInterceptor
+org.apache.hc.client5.http.SchemePortResolver
+org.apache.hc.core5.http.protocol.HttpProcessor
+org.apache.hc.core5.http.config.Lookup
+org.apache.hc.client5.http.HttpRequestRetryStrategy
+org.apache.hc.client5.http.routing.HttpRoutePlanner
+org.apache.hc.client5.http.protocol.RedirectStrategy
+org.apache.hc.client5.http.cookie.CookieStore
+org.apache.hc.client5.http.classic.HttpClient
+org.apache.hc.client5.http.impl.classic.CloseableHttpClient
+org.apache.hc.client5.http.impl.classic.InternalHttpClient
+org.apache.hc.client5.http.config.RequestConfig
+org.apache.hc.core5.util.TimeValue
+org.apache.hc.core5.util.Timeout
+org.apache.hc.core5.util.Args
+org.apache.hc.client5.http.config.RequestConfig$Builder
+org.apache.hc.core5.http.HttpResponse
+org.apache.hc.core5.http.protocol.HttpContext
+com.github.tomakehurst.wiremock.http.HttpClientFactory$$Lambda/0x00003fc001263d30
+com.github.tomakehurst.wiremock.http.HttpClientFactory$$Lambda/0x00003fc001263f58
+com.github.tomakehurst.wiremock.http.ssl.SSLContextBuilder
+javax.net.ssl.TrustManager
+com.github.tomakehurst.wiremock.http.ssl.TrustEverythingStrategy
+javax.net.ssl.TrustManagerFactory
+javax.net.ssl.TrustManagerFactorySpi
+sun.security.jca.GetInstance
+sun.security.jca.Providers
+sun.security.jca.ProviderList
+sun.security.jca.ProviderConfig
+java.security.Provider
+sun.security.jca.ProviderList$2
+sun.security.jca.ProviderList$1
+java.security.Provider$ServiceKey
+java.security.Provider$$Lambda/0x00003fc001131138
+java.security.Provider$EngineDescription
+java.security.SecureRandomParameters
+java.security.cert.CertStoreParameters
+javax.crypto.KDFParameters
+java.security.Policy$Parameters
+javax.security.auth.login.Configuration$Parameters
+sun.security.provider.Sun
+sun.security.util.SecurityConstants
+java.security.Guard
+java.security.Permission
+java.security.AllPermission
+sun.security.provider.SunEntries
+java.security.SecureRandomSpi
+sun.security.provider.NativePRNG
+sun.security.provider.NativePRNG$Variant
+sun.security.provider.NativePRNG$RandomIO
+sun.security.provider.FileInputStreamPool
+sun.security.provider.FileInputStreamPool$UnclosableInputStream
+sun.security.provider.FileInputStreamPool$StreamRef
+java.security.Provider$Service
+java.security.Provider$UString
+sun.security.provider.NativePRNG$Blocking
+sun.security.provider.NativePRNG$NonBlocking
+sun.security.util.SecurityProviderConstants
+sun.security.util.KnownOIDs
+sun.security.rsa.SunRsaSign
+sun.security.rsa.SunRsaSignEntries
+sun.security.ec.SunEC
+sun.security.ec.SunEC$ProviderService
+sun.security.ec.SunEC$ProviderServiceA
+sun.security.util.CurveDB
+java.security.spec.ECField
+java.security.spec.ECFieldFp
+java.security.spec.EllipticCurve
+java.security.spec.ECPoint
+java.security.spec.AlgorithmParameterSpec
+java.security.spec.ECParameterSpec
+sun.security.util.NamedCurve
+sun.security.util.DerEncoder
+sun.security.util.DerOutputStream
+sun.security.util.ByteArrayLexOrder
+sun.security.util.ByteArrayTagOrder
+sun.security.util.ObjectIdentifier
+java.security.spec.ECFieldF2m
+sun.security.ssl.SunJSSE
+jdk.internal.event.SecurityProviderServiceEvent
+sun.security.ssl.TrustManagerFactoryImpl
+sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory
+sun.security.jca.GetInstance$Instance
+sun.security.ssl.TrustStoreManager
+sun.security.ssl.TrustStoreManager$TrustAnchorManager
+sun.security.ssl.TrustStoreManager$TrustStoreDescriptor
+sun.security.util.FilePaths
+java.security.KeyStore
+sun.security.ssl.SSLLogger
+java.security.KeyStoreSpi
+sun.security.util.KeyStoreDelegator
+sun.security.pkcs12.PKCS12KeyStore$DualFormatPKCS12
+sun.security.pkcs12.PKCS12KeyStore
+sun.security.provider.JavaKeyStore
+sun.security.provider.JavaKeyStore$JKS
+sun.security.util.DerValue
+sun.security.util.DerInputStream
+sun.security.util.IOUtils
+sun.security.pkcs.ContentInfo
+java.security.cert.CertificateFactory
+java.security.cert.CertificateFactorySpi
+sun.security.provider.X509Factory
+sun.security.util.Cache
+sun.security.util.MemoryCache
+sun.security.util.Cache$EqualByteArray
+java.security.cert.X509Extension
+java.security.DEREncodable
+java.security.cert.X509Certificate
+sun.security.x509.X509CertImpl
+sun.security.x509.AlgorithmId
+sun.security.x509.X509CertInfo
+sun.security.x509.CertificateVersion
+sun.security.x509.CertificateSerialNumber
+sun.security.x509.SerialNumber
+sun.security.x509.CertificateAlgorithmId
+sun.security.x509.GeneralNameInterface
+sun.security.x509.X500Name
+sun.security.x509.RDN
+sun.security.x509.AVA
+sun.security.x509.CertificateValidity
+sun.security.x509.CertificateX509Key
+java.security.Key
+java.security.AsymmetricKey
+java.security.PublicKey
+sun.security.x509.X509Key
+sun.security.util.BitArray
+java.security.spec.KeySpec
+java.security.spec.EncodedKeySpec
+java.security.spec.X509EncodedKeySpec
+jdk.internal.access.JavaSecuritySpecAccess
+java.security.spec.EncodedKeySpec$$Lambda/0x00003fc001270dd0
+java.security.KeyFactory
+sun.security.jca.ProviderList$ServiceIterator
+java.security.KeyFactorySpi
+sun.security.rsa.RSAKeyFactory
+sun.security.rsa.RSAKeyFactory$Legacy
+java.security.spec.RSAPublicKeySpec
+java.security.spec.RSAPrivateKeySpec
+java.security.spec.RSAPrivateCrtKeySpec
+java.security.spec.PKCS8EncodedKeySpec
+sun.security.rsa.RSAUtil$KeyType
+java.security.spec.PSSParameterSpec
+java.lang.runtime.SwitchBootstraps
+jdk.internal.misc.PreviewFeatures
+java.lang.invoke.DirectMethodHandle$1
+java.lang.runtime.SwitchBootstraps$$Lambda/0x800000018
+java.lang.classfile.AccessFlags
+jdk.internal.classfile.impl.AccessFlagsImpl
+java.lang.runtime.SwitchBootstraps$$Lambda/0x800000019
+java.lang.classfile.instruction.SwitchCase
+jdk.internal.classfile.impl.AbstractInstruction$SwitchCaseImpl
+java.lang.invoke.MethodHandles$Lookup$ClassOption
+java.lang.classfile.CompoundElement
+java.lang.classfile.AttributedElement
+java.lang.classfile.ClassModel
+jdk.internal.classfile.impl.ClassImpl
+jdk.internal.classfile.impl.ClassFileImpl$$Lambda/0x80000004b
+java.lang.classfile.FieldModel
+jdk.internal.classfile.impl.FieldImpl
+java.lang.classfile.MethodModel
+jdk.internal.classfile.impl.MethodImpl
+sun.security.rsa.RSAKeyFactory$$TypeSwitch/0x00003fc001274288
+java.security.interfaces.RSAKey
+java.security.interfaces.RSAPublicKey
+sun.security.rsa.RSAPublicKeyImpl
+sun.security.rsa.RSAUtil
+sun.security.x509.CertificateExtensions
+java.security.cert.Extension
+sun.security.x509.Extension
+sun.security.x509.OIDMap
+sun.security.x509.PKIXExtensions
+sun.security.x509.OIDMap$OIDInfo
+sun.security.x509.SubjectKeyIdentifierExtension
+java.lang.invoke.LambdaForm$MH/0x00003fc001268000
+sun.security.x509.KeyIdentifier
+sun.security.x509.BasicConstraintsExtension
+sun.security.x509.AuthorityKeyIdentifierExtension
+sun.security.x509.GeneralNames
+sun.security.x509.KeyUsageExtension
+sun.security.util.MemoryCache$CacheEntry
+sun.security.util.MemoryCache$SoftCacheEntry
+sun.security.jca.JCAUtil
+jdk.internal.event.X509CertificateEvent
+jdk.internal.event.EventHelper
+java.lang.invoke.VarHandleReferences$FieldStaticReadOnly
+java.lang.invoke.VarHandleReferences$FieldStaticReadWrite
+java.lang.invoke.LazyInitializingVarHandle
+java.lang.System$Logger$Level
+java.util.jar.JarFile$ThreadTrackHolder
+jdk.internal.misc.ThreadTracker
+jdk.internal.misc.ThreadTracker$ThreadRef
+jdk.internal.event.EventHelper$ThreadTrackHolder
+jdk.internal.logger.LazyLoggers
+jdk.internal.logger.LazyLoggers$1
+jdk.internal.logger.LazyLoggers$LazyLoggerFactories
+jdk.internal.logger.LoggerFinderLoader
+jdk.internal.logger.LoggerFinderLoader$TemporaryLoggerFinder
+sun.util.logging.PlatformLogger$ConfigurableBridge$LoggerConfiguration
+sun.util.logging.internal.LoggingProviderImpl$JULWrapper
+sun.nio.cs.UnicodeDecoder
+sun.nio.cs.UTF_16BE$Decoder
+sun.nio.cs.ArrayDecoder
+sun.security.pkcs12.PKCS12KeyStore$Entry
+sun.security.pkcs12.PKCS12KeyStore$KeyEntry
+sun.security.pkcs12.PKCS12KeyStore$CertEntry
+java.security.KeyStore$Entry$Attribute
+java.security.PKCS12Attribute
+java.util.regex.Pattern$GroupCurly
+sun.security.x509.GeneralName
+java.security.AlgorithmParameters
+java.security.AlgorithmParametersSpi
+sun.security.util.ECParameters
+sun.security.ec.ECKeyFactory
+java.security.spec.ECPublicKeySpec
+sun.security.ec.ECKeyFactory$$TypeSwitch/0x00003fc00127bb80
+java.security.interfaces.ECKey
+java.security.interfaces.ECPublicKey
+sun.security.ec.ECPublicKeyImpl
+sun.security.util.ECUtil
+sun.security.x509.CertificatePoliciesExtension
+sun.security.x509.PolicyInformation
+sun.security.x509.CertificatePolicyId
+java.security.cert.PolicyQualifierInfo
+sun.security.x509.NetscapeCertTypeExtension
+sun.security.x509.NetscapeCertTypeExtension$MapEntry
+sun.security.x509.CRLDistributionPointsExtension
+sun.security.x509.DistributionPoint
+sun.security.x509.URIName
+sun.security.x509.DNSName
+sun.security.x509.PrivateKeyUsageExtension
+sun.security.x509.AuthorityInfoAccessExtension
+sun.security.x509.AccessDescription
+sun.security.x509.ExtendedKeyUsageExtension
+sun.security.util.MemoryCache$QueueCacheEntry
+sun.security.x509.SubjectAlternativeNameExtension
+sun.security.x509.RFC822Name
+java.lang.invoke.MethodHandle$1
+java.lang.invoke.LambdaForm$DMH/0x00003fc001268400
+java.lang.invoke.LambdaForm$MH/0x00003fc001268800
+java.lang.invoke.LambdaForm$MH/0x00003fc001268c00
+java.lang.invoke.LambdaForm$MH/0x00003fc001269000
+sun.security.pkcs12.PKCS12KeyStore$PrivateKeyEntry
+sun.security.validator.TrustStoreUtil
+javax.net.ssl.X509TrustManager
+javax.net.ssl.X509ExtendedTrustManager
+sun.security.ssl.X509TrustManagerImpl
+com.github.tomakehurst.wiremock.http.ssl.SSLContextBuilder$TrustManagerDelegate
+javax.net.ssl.SSLContext
+javax.net.ssl.SSLContextSpi
+sun.security.ssl.SSLContextImpl
+sun.security.ssl.SSLContextImpl$AbstractTLSContext
+sun.security.ssl.SSLContextImpl$CustomizedTLSContext
+sun.security.ssl.SSLContextImpl$TLSContext
+sun.security.ssl.ProtocolVersion
+java.security.AlgorithmConstraints
+sun.security.ssl.SSLAlgorithmConstraints
+sun.security.util.AbstractAlgorithmConstraints
+sun.security.util.DisabledAlgorithmConstraints
+sun.security.util.AlgorithmDecomposer
+sun.security.ssl.SSLAlgorithmDecomposer
+java.util.regex.Pattern$LookBehindEndNode
+java.util.regex.Pattern$NotBehind
+java.util.TreeMap$KeySet
+java.util.TreeMap$KeyIterator
+sun.security.util.DisabledAlgorithmConstraints$Constraints
+sun.security.util.DisabledAlgorithmConstraints$Constraint
+sun.security.util.DisabledAlgorithmConstraints$DisabledConstraint
+sun.security.util.DisabledAlgorithmConstraints$KeySizeConstraint
+sun.security.util.DisabledAlgorithmConstraints$Constraint$Operator
+sun.security.util.DisabledAlgorithmConstraints$UsageConstraint
+sun.security.ssl.SSLScope
+sun.security.util.DisabledAlgorithmConstraints$jdkCAConstraint
+sun.security.util.DisabledAlgorithmConstraints$Constraints$Holder
+java.util.regex.Pattern$BnM
+java.util.regex.Pattern$SliceS
+sun.security.util.DisabledAlgorithmConstraints$DenyAfterConstraint
+java.time.ZoneRegion
+java.time.zone.ZoneRules
+java.time.zone.ZoneOffsetTransitionRule
+java.time.zone.ZoneOffsetTransition
+java.security.CryptoPrimitive
+sun.security.util.DisabledAlgorithmConstraints$$Lambda/0x00003fc001280888
+sun.security.ssl.CipherSuite
+sun.security.ssl.SSLCipher
+sun.security.ssl.CipherType
+sun.security.ssl.SSLCipher$ReadCipherGenerator
+sun.security.ssl.SSLCipher$NullReadCipherGenerator
+sun.security.ssl.SSLCipher$WriteCipherGenerator
+sun.security.ssl.SSLCipher$NullWriteCipherGenerator
+sun.security.ssl.SSLCipher$StreamReadCipherGenerator
+sun.security.ssl.SSLCipher$StreamWriteCipherGenerator
+javax.crypto.Cipher
+javax.crypto.Cipher$Transform
+sun.security.jca.ServiceId
+com.sun.crypto.provider.SunJCE
+javax.crypto.JceSecurity
+sun.nio.fs.Globs
+java.text.Normalizer$Form
+java.text.Normalizer
+jdk.internal.icu.text.NormalizerBase
+jdk.internal.icu.text.NormalizerBase$Mode
+jdk.internal.icu.text.NormalizerBase$NONEMode
+jdk.internal.icu.text.NormalizerBase$NFDMode
+jdk.internal.icu.text.NormalizerBase$NFKDMode
+jdk.internal.icu.text.NormalizerBase$NFCMode
+jdk.internal.icu.text.NormalizerBase$NFKCMode
+jdk.internal.icu.text.NormalizerBase$1
+jdk.internal.icu.text.NormalizerBase$NFCModeImpl
+jdk.internal.icu.text.NormalizerBase$ModeImpl
+jdk.internal.icu.text.Normalizer2
+jdk.internal.icu.impl.Norm2AllModes
+jdk.internal.icu.impl.Norm2AllModes$NoopNormalizer2
+jdk.internal.icu.impl.Norm2AllModes$NFCSingleton
+jdk.internal.icu.impl.Norm2AllModes$Norm2AllModesSingleton
+jdk.internal.icu.impl.NormalizerImpl
+jdk.internal.icu.impl.ICUBinary$Authenticate
+jdk.internal.icu.impl.NormalizerImpl$IsAcceptable
+jdk.internal.icu.impl.ICUBinary
+jdk.internal.module.SystemModuleFinders
+jdk.internal.module.SystemModuleFinders$SystemModuleReader$$Lambda/0x00003fc001285e70
+jdk.internal.icu.util.VersionInfo
+jdk.internal.icu.util.CodePointMap
+jdk.internal.icu.util.CodePointTrie
+jdk.internal.icu.util.CodePointTrie$Fast
+jdk.internal.icu.util.CodePointTrie$Fast16
+jdk.internal.icu.util.CodePointTrie$Type
+jdk.internal.icu.util.CodePointTrie$ValueWidth
+java.nio.ByteBufferAsCharBufferB
+jdk.internal.icu.util.CodePointTrie$Data
+jdk.internal.icu.util.CodePointTrie$Data16
+jdk.internal.icu.impl.Norm2AllModes$Normalizer2WithImpl
+jdk.internal.icu.impl.Norm2AllModes$ComposeNormalizer2
+jdk.internal.icu.impl.Norm2AllModes$DecomposeNormalizer2
+java.util.regex.Pattern$NFCCharProperty
+java.nio.file.PathMatcher
+sun.nio.fs.UnixFileSystem$1
+java.nio.file.DirectoryStream$Filter
+java.nio.file.Files$1
+java.nio.file.SecureDirectoryStream
+sun.nio.fs.UnixSecureDirectoryStream
+sun.nio.fs.UnixDirectoryStream
+java.util.concurrent.locks.ReentrantReadWriteLock$FairSync
+sun.nio.fs.UnixDirectoryStream$UnixDirectoryIterator
+jdk.internal.util.regex.Grapheme
+jdk.internal.util.regex.IndicConjunctBreak
+javax.crypto.CryptoPermissions
+javax.crypto.CryptoPolicyParser
+java.io.StreamTokenizer
+javax.crypto.CryptoPolicyParser$GrantEntry
+javax.crypto.CryptoPolicyParser$CryptoPermissionEntry
+java.util.Vector$Itr
+javax.crypto.CryptoPermission
+javax.crypto.CryptoAllPermission
+javax.crypto.CryptoAllPermissionCollection
+sun.nio.fs.UnixException
+sun.nio.fs.UnixSecureDirectoryStream$$Lambda/0x00003fc00128bca8
+java.net.URL$ThreadTrackHolder
+java.net.spi.URLStreamHandlerProvider
+sun.net.www.protocol.http.Handler
+javax.crypto.JceSecurity$WeakIdentityWrapper
+javax.crypto.JceSecurity$1
+java.lang.Class$Holder
+java.security.AllPermissionCollection
+java.security.UnresolvedPermission
+javax.crypto.ProviderVerifier
+javax.crypto.CipherSpi
+com.sun.crypto.provider.ARCFOURCipher
+sun.security.ssl.SSLCipher$T10BlockReadCipherGenerator
+sun.security.ssl.SSLCipher$T10BlockWriteCipherGenerator
+com.sun.crypto.provider.DESCipher
+com.sun.crypto.provider.CipherCore
+com.sun.crypto.provider.DESConstants
+com.sun.crypto.provider.SymmetricCipher
+com.sun.crypto.provider.DESCrypt
+com.sun.crypto.provider.FeedbackCipher
+com.sun.crypto.provider.ElectronicCodeBook
+com.sun.crypto.provider.Padding
+com.sun.crypto.provider.PKCS5Padding
+com.sun.crypto.provider.CipherBlockChaining
+sun.security.ssl.SSLCipher$T11BlockReadCipherGenerator
+sun.security.ssl.SSLCipher$T11BlockWriteCipherGenerator
+javax.crypto.JceSecurityManager
+java.lang.StackWalker$Option
+java.util.Vector$1
+com.sun.crypto.provider.DESedeCipher
+com.sun.crypto.provider.DESedeCrypt
+com.sun.crypto.provider.AESCipher
+com.sun.crypto.provider.AESCipher$General
+com.sun.crypto.provider.AESConstants
+com.sun.crypto.provider.AESCrypt
+sun.security.ssl.SSLCipher$T12GcmReadCipherGenerator
+sun.security.ssl.SSLCipher$T12GcmWriteCipherGenerator
+com.sun.crypto.provider.GaloisCounterMode
+com.sun.crypto.provider.GaloisCounterMode$AESGCM
+sun.security.ssl.SSLCipher$T13GcmReadCipherGenerator
+sun.security.ssl.SSLCipher$T13GcmWriteCipherGenerator
+sun.security.ssl.SSLCipher$T12CC20P1305ReadCipherGenerator
+sun.security.ssl.SSLCipher$T13CC20P1305ReadCipherGenerator
+sun.security.ssl.SSLCipher$T12CC20P1305WriteCipherGenerator
+sun.security.ssl.SSLCipher$T13CC20P1305WriteCipherGenerator
+com.sun.crypto.provider.ChaCha20Cipher
+com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305
+sun.security.ssl.CipherSuite$HashAlg
+sun.security.ssl.CipherSuite$MacAlg
+sun.security.ssl.CipherSuite$KeyExchange
+sun.security.ssl.NamedGroup$NamedGroupScheme
+sun.security.ssl.NamedGroup$NamedGroupSpec
+sun.security.ssl.NamedGroup$ECDHEScheme
+sun.security.ssl.NamedGroup
+sun.security.ssl.NamedGroup$FFDHEScheme
+sun.security.ssl.NamedGroup$XDHScheme
+sun.security.ssl.JsseJce
+sun.security.ssl.Utilities
+sun.security.ssl.SSLAlgorithmDecomposer$1
+sun.security.ssl.JsseJce$EcAvailability
+java.security.SignatureSpi
+java.security.Signature
+jdk.internal.access.JavaSecuritySignatureAccess
+java.security.Signature$1
+sun.security.ec.ECDSASignature
+sun.security.ec.ECDSASignature$SHA1
+java.security.MessageDigestSpi
+java.security.MessageDigest
+sun.security.provider.DigestBase
+sun.security.provider.SHA
+sun.security.util.MessageDigestSpi2
+java.security.MessageDigest$Delegate
+java.security.MessageDigest$Delegate$CloneableDelegate
+java.security.Signature$Delegate
+sun.security.ec.ECDSASignature$RawECDSA
+sun.security.ec.ECDSASignature$Raw
+javax.crypto.KeyAgreement
+java.security.KeyPairGeneratorSpi
+java.security.KeyPairGenerator
+sun.security.ec.ECKeyPairGenerator
+sun.security.util.ECKeySizeParameterSpec
+java.security.spec.NamedParameterSpec
+java.security.spec.ECGenParameterSpec
+java.security.KeyPairGenerator$Delegate
+sun.security.ssl.SSLContextImpl$CustomizedSSLProtocols
+sun.security.ssl.EphemeralKeyManager
+sun.security.ssl.EphemeralKeyManager$EphemeralKeyPair
+javax.net.ssl.SSLSessionContext
+sun.security.ssl.SSLSessionContextImpl
+javax.net.ssl.KeyManager
+javax.net.ssl.X509KeyManager
+javax.net.ssl.X509ExtendedKeyManager
+sun.security.ssl.DummyX509KeyManager
+java.security.SecureRandom
+sun.security.ssl.SSLContextImpl$$Lambda/0x00003fc00129aae8
+sun.security.provider.SecureRandom
+sun.security.provider.ByteArrayAccess
+sun.security.provider.ByteArrayAccess$BE
+org.apache.hc.core5.util.TextUtils
+org.apache.hc.client5.http.ssl.SSLConnectionSocketFactory
+java.net.Socket
+javax.net.ssl.SSLSocket
+java.security.PrivilegedActionException
+javax.net.ssl.SSLException
+javax.net.ssl.SSLHandshakeException
+javax.net.ssl.SSLPeerUnverifiedException
+sun.security.ssl.SSLSocketFactoryImpl
+org.apache.hc.client5.http.ssl.NoopHostnameVerifier
+org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder
+org.apache.hc.client5.http.io.HttpClientConnectionOperator
+org.apache.hc.client5.http.ssl.TlsSocketStrategy
+java.lang.invoke.LambdaForm$DMH/0x00003fc0012c0000
+org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder$$Lambda/0x00003fc0012655d8
+org.apache.hc.client5.http.config.ConnectionConfig
+org.apache.hc.client5.http.config.ConnectionConfig$Builder
+org.apache.hc.core5.function.Resolver
+org.apache.hc.client5.http.RouteInfo
+org.apache.hc.client5.http.HttpRoute
+org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManagerBuilder$$Lambda/0x00003fc001266338
+org.apache.hc.client5.http.impl.io.ManagedHttpClientConnectionFactory
+org.apache.hc.core5.http.SocketModalCloseable
+org.apache.hc.core5.http.HttpConnection
+org.apache.hc.core5.http.io.BHttpConnection
+org.apache.hc.core5.http.io.HttpClientConnection
+org.apache.hc.client5.http.io.ManagedHttpClientConnection
+org.apache.hc.core5.http.io.HttpMessageWriterFactory
+org.apache.hc.core5.http.io.HttpMessageParserFactory
+org.apache.hc.core5.http.ContentLengthStrategy
+org.apache.hc.core5.http.io.ResponseOutOfOrderStrategy
+org.apache.hc.core5.http.config.Http1Config
+org.apache.hc.core5.http.config.Http1Config$Builder
+org.apache.hc.core5.http.ProtocolVersion
+org.apache.hc.core5.http.HttpVersion
+org.apache.hc.core5.http.HttpException
+org.apache.hc.core5.http.ProtocolException
+org.apache.hc.core5.http.ParseException
+org.apache.hc.core5.http.config.CharCodingConfig
+org.apache.hc.core5.http.config.CharCodingConfig$Builder
+org.apache.hc.core5.http.impl.io.DefaultHttpRequestWriterFactory
+org.apache.hc.core5.http.message.LineFormatter
+org.apache.hc.core5.http.io.HttpMessageWriter
+org.apache.hc.core5.http.message.BasicLineFormatter
+org.apache.hc.client5.http.impl.io.DefaultHttpResponseParserFactory
+org.apache.hc.core5.http.message.LineParser
+org.apache.hc.core5.http.HttpResponseFactory
+org.apache.hc.core5.http.io.HttpMessageParser
+org.apache.hc.core5.http.message.BasicLineParser
+org.apache.hc.core5.util.Tokenizer$Cursor
+org.apache.hc.core5.http.message.ParserCursor
+org.apache.hc.core5.http.NameValuePair
+org.apache.hc.core5.http.Header
+org.apache.hc.core5.util.Tokenizer
+org.apache.hc.core5.util.Tokenizer$Delimiter
+org.apache.hc.core5.util.Tokenizer$$Lambda/0x00003fc0012c7460
+org.apache.hc.core5.util.Tokenizer$$Lambda/0x00003fc0012c7688
+org.apache.hc.core5.http.impl.io.DefaultClassicHttpResponseFactory
+org.apache.hc.core5.http.ClassicHttpResponse
+org.apache.hc.core5.http.ReasonPhraseCatalog
+org.apache.hc.core5.http.impl.EnglishReasonPhraseCatalog
+org.apache.hc.core5.http.impl.DefaultContentLengthStrategy
+org.apache.hc.core5.http.NotImplementedException
+org.apache.hc.core5.http.impl.io.NoResponseOutOfOrderStrategy
+org.apache.hc.core5.pool.ConnPoolStats
+org.apache.hc.core5.pool.ConnPoolControl
+org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager
+org.apache.hc.core5.concurrent.Cancellable
+org.apache.hc.client5.http.io.LeaseRequest
+org.apache.hc.core5.pool.DisposalCallback
+org.apache.hc.core5.pool.ConnPool
+org.apache.hc.core5.pool.ManagedConnPool
+org.apache.hc.client5.http.impl.PrefixedIncrementingId
+org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator
+org.apache.hc.core5.http.ConnectionClosedException
+org.apache.hc.core5.net.NamedEndpoint
+org.apache.hc.client5.http.UnsupportedSchemeException
+org.apache.hc.client5.http.io.DetachedSocketFactory
+java.net.Proxy
+org.apache.hc.client5.http.impl.io.DefaultHttpClientConnectionOperator$$Lambda/0x00003fc0012c18e0
+org.apache.hc.core5.http.config.RegistryBuilder
+org.apache.hc.core5.http.URIScheme
+org.apache.hc.core5.http.config.Registry
+org.apache.hc.client5.http.impl.DefaultSchemePortResolver
+org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager$4
+org.apache.hc.core5.pool.PoolConcurrencyPolicy
+org.apache.hc.core5.pool.StrictConnPool
+org.apache.hc.client5.http.impl.io.PoolingHttpClientConnectionManager$1
+org.apache.hc.core5.concurrent.BasicFuture
+org.apache.hc.core5.pool.StrictConnPool$1
+java.util.concurrent.TimeoutException
+org.apache.hc.core5.util.DeadlineTimeoutException
+org.apache.hc.core5.pool.DefaultDisposalCallback
+org.apache.hc.core5.pool.PoolReusePolicy
+org.apache.hc.core5.http.impl.io.HttpRequestExecutor
+org.apache.hc.core5.http.UnsupportedHttpVersionException
+org.apache.hc.core5.http.EntityDetails
+org.apache.hc.core5.http.impl.DefaultConnectionReuseStrategy
+org.apache.hc.client5.http.impl.DefaultAuthenticationStrategy
+org.apache.hc.client5.http.impl.DefaultUserTokenHandler
+org.apache.hc.core5.util.VersionInfo
+org.apache.hc.core5.http.protocol.HttpProcessorBuilder
+org.apache.hc.core5.http.protocol.RequestTargetHost
+org.apache.hc.client5.http.protocol.RequestValidateTrace
+org.apache.hc.client5.http.protocol.RequestDefaultHeaders
+org.apache.hc.core5.http.protocol.RequestContent
+org.apache.hc.client5.http.protocol.RequestClientConnControl
+org.apache.hc.core5.http.protocol.RequestUserAgent
+org.apache.hc.client5.http.protocol.RequestExpectContinue
+org.apache.hc.client5.http.protocol.RequestUpgrade
+org.apache.hc.core5.http.protocol.ChainBuilder
+org.apache.hc.core5.http.protocol.DefaultHttpProcessor
+org.apache.hc.core5.http.config.NamedElementChain
+org.apache.hc.core5.http.config.NamedElementChain$Node
+org.apache.hc.client5.http.classic.ExecChainHandler
+org.apache.hc.client5.http.impl.classic.MainClientExec
+org.apache.hc.client5.http.impl.ConnectionShutdownException
+java.io.InterruptedIOException
+org.apache.hc.client5.http.impl.ProtocolSwitchStrategy
+org.apache.hc.core5.http.ProtocolVersionParser
+java.lang.invoke.LambdaForm$DMH/0x00003fc0012d0000
+org.apache.hc.core5.util.Tokenizer$$Lambda/0x00003fc0012cd7b8
+java.lang.invoke.LambdaForm$DMH/0x00003fc0012d0400
+java.lang.invoke.LambdaForm$DMH/0x00003fc0012d0800
+java.lang.invoke.LambdaForm$MH/0x00003fc0012d0c00
+org.apache.hc.client5.http.impl.ChainElement
+org.apache.hc.client5.http.impl.classic.ConnectExec
+org.apache.hc.core5.http.HttpEntity
+org.apache.hc.client5.http.routing.HttpRouteDirector
+org.apache.hc.client5.http.impl.auth.AuthenticationHandler
+org.apache.hc.client5.http.auth.AuthenticationException
+org.apache.hc.client5.http.auth.MalformedChallengeException
+org.apache.hc.client5.http.impl.auth.AuthChallengeParser
+org.apache.hc.client5.http.impl.routing.BasicRouteDirector
+org.apache.hc.client5.http.impl.classic.ProtocolExec
+java.net.ProxySelector
+org.apache.hc.client5.http.impl.classic.HttpClientBuilder$$Lambda/0x00003fc0012cf228
+sun.net.spi.DefaultProxySelector
+java.net.Proxy$Type
+sun.net.NetProperties
+org.apache.hc.client5.http.impl.routing.DefaultRoutePlanner
+org.apache.hc.client5.http.impl.routing.SystemDefaultRoutePlanner
+org.apache.hc.client5.http.impl.classic.ExecChainElement
+org.apache.hc.client5.http.auth.AuthSchemeFactory
+org.apache.hc.client5.http.impl.auth.BasicSchemeFactory
+org.apache.hc.client5.http.auth.AuthScheme
+org.apache.hc.client5.http.impl.auth.DigestSchemeFactory
+org.apache.hc.client5.http.impl.auth.BearerSchemeFactory
+org.apache.hc.client5.http.impl.CookieSpecSupport
+org.apache.hc.client5.http.psl.PublicSuffixMatcherLoader
+org.apache.hc.client5.http.psl.PublicSuffixListParser
+org.apache.hc.client5.http.psl.DomainType
+org.apache.hc.client5.http.psl.PublicSuffixList
+org.apache.hc.client5.http.psl.PublicSuffixMatcher
+org.apache.hc.client5.http.cookie.CookieSpecFactory
+org.apache.hc.client5.http.impl.cookie.RFC6265CookieSpecFactory
+org.apache.hc.client5.http.cookie.CookieAttributeHandler
+org.apache.hc.client5.http.cookie.CommonCookieAttributeHandler
+org.apache.hc.client5.http.cookie.CookieSpec
+org.apache.hc.client5.http.impl.cookie.RFC6265CookieSpecFactory$CompatibilityLevel
+org.apache.hc.client5.http.impl.cookie.IgnoreCookieSpecFactory
+org.apache.hc.client5.http.cookie.BasicCookieStore
+org.apache.hc.client5.http.cookie.CookieIdentityComparator
+org.apache.hc.client5.http.auth.CredentialsStore
+org.apache.hc.client5.http.impl.auth.SystemDefaultCredentialsProvider
+org.apache.hc.client5.http.impl.auth.BasicCredentialsProvider
+org.apache.hc.client5.http.ClientProtocolException
+org.apache.hc.client5.http.classic.ExecRuntime
+org.apache.hc.core5.http.protocol.HttpCoreContext
+org.apache.hc.client5.http.protocol.HttpClientContext
+org.apache.hc.core5.http.protocol.HttpCoreContext$Delegate
+org.apache.hc.client5.http.protocol.HttpClientContext$Delegate
+org.apache.hc.client5.http.impl.classic.HttpClientBuilder$$Lambda/0x00003fc0012d23c0
+com.github.tomakehurst.wiremock.http.client.ApacheBackedHttpClient
+com.github.tomakehurst.wiremock.http.ssl.TrustSpecificHostsStrategy
+com.github.tomakehurst.wiremock.http.RequestHandler
+com.github.tomakehurst.wiremock.http.RequestEventSource
+com.github.tomakehurst.wiremock.http.AbstractRequestHandler
+com.github.tomakehurst.wiremock.http.StubRequestHandler
+com.github.tomakehurst.wiremock.http.StubResponseRenderer
+com.github.tomakehurst.wiremock.http.ProxyResponseRenderer
+com.github.tomakehurst.wiremock.extension.ResponseTransformer
+com.github.tomakehurst.wiremock.extension.ResponseTransformerV2
+com.github.tomakehurst.wiremock.extension.requestfilter.RequestFilter
+com.github.tomakehurst.wiremock.core.WireMockApp$$Lambda/0x00003fc0012d1000
+com.github.tomakehurst.wiremock.extension.requestfilter.RequestFilterV2
+com.github.tomakehurst.wiremock.core.WireMockApp$$Lambda/0x00003fc0012d1460
+com.github.tomakehurst.wiremock.extension.requestfilter.FilterProcessor
+com.github.tomakehurst.wiremock.http.HttpServerFactoryLoader
+com.github.tomakehurst.wiremock.http.HttpServerFactoryLoader$$Lambda/0x00003fc0012d1b00
+org.eclipse.jetty.util.Jetty
+java.time.format.DateTimePrintContext
+java.time.Instant$1
+jdk.internal.util.DateTimeHelper
+java.lang.StringConcatHelper$Concat1
+com.github.tomakehurst.wiremock.extension.AdminApiExtension
+com.github.tomakehurst.wiremock.admin.AdminRoutes
+com.github.tomakehurst.wiremock.admin.Router
+com.github.tomakehurst.wiremock.admin.AdminRoutes$RouteBuilder
+com.google.common.collect.BiMap
+com.google.common.collect.ImmutableMap
+com.google.common.collect.ImmutableBiMap
+com.google.common.collect.ImmutableMap$IteratorBasedImmutableMap
+com.google.common.collect.ImmutableMap$MapViewOfValuesAsSingletonSets
+com.google.common.collect.UnmodifiableIterator
+com.google.common.collect.ImmutableMap$1
+com.google.common.collect.ImmutableCollection
+com.google.common.collect.ImmutableSet
+com.google.common.collect.SingletonImmutableBiMap
+com.google.common.collect.RegularImmutableBiMap
+com.google.common.collect.ImmutableMap$Builder
+com.google.common.collect.ImmutableBiMap$Builder
+com.github.tomakehurst.wiremock.http.RequestMethod
+com.github.tomakehurst.wiremock.admin.tasks.GetAllStubMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.RootTask
+com.github.tomakehurst.wiremock.admin.RequestSpec
+com.github.tomakehurst.wiremock.common.url.PathTemplate
+com.github.tomakehurst.wiremock.common.url.ParserBuilder
+com.github.tomakehurst.wiremock.common.url.RendererBuilder
+com.github.tomakehurst.wiremock.common.url.RendererBuilder$1Static
+com.github.tomakehurst.wiremock.common.url.Parser
+com.github.tomakehurst.wiremock.common.url.Renderer
+com.google.common.collect.ImmutableMapEntry
+com.google.common.collect.CollectPreconditions
+com.github.tomakehurst.wiremock.admin.tasks.RootRedirectTask
+com.github.tomakehurst.wiremock.admin.tasks.ResetTask
+com.github.tomakehurst.wiremock.admin.tasks.CreateStubMappingTask
+com.google.common.collect.ImmutableCollection$Builder
+com.github.tomakehurst.wiremock.admin.tasks.ResetStubMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.OldEditStubMappingTask
+com.github.tomakehurst.wiremock.admin.tasks.SaveMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.ResetToDefaultMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.GetUnmatchedStubMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.RemoveUnmatchedStubMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.AbstractSingleStubTask
+com.github.tomakehurst.wiremock.admin.tasks.GetStubMappingTask
+com.github.tomakehurst.wiremock.common.url.RendererBuilder$1Variable
+com.github.tomakehurst.wiremock.admin.tasks.EditStubMappingTask
+com.github.tomakehurst.wiremock.admin.tasks.RemoveMatchingStubMappingTask
+com.github.tomakehurst.wiremock.admin.tasks.RemoveStubMappingByIdTask
+com.github.tomakehurst.wiremock.admin.FindStubMappingsByMetadataTask
+com.github.tomakehurst.wiremock.admin.RemoveStubMappingsByMetadataTask
+com.github.tomakehurst.wiremock.admin.ImportStubMappingsTask
+com.github.tomakehurst.wiremock.admin.tasks.GetAllStubFilesTask
+com.github.tomakehurst.wiremock.admin.tasks.EditStubFileTask
+com.github.tomakehurst.wiremock.common.url.RendererBuilder$1Wildcard
+com.github.tomakehurst.wiremock.admin.tasks.DeleteStubFileTask
+com.github.tomakehurst.wiremock.admin.tasks.GetStubFileTask
+com.github.tomakehurst.wiremock.admin.GetAllScenariosTask
+com.github.tomakehurst.wiremock.admin.tasks.ResetScenariosTask
+com.github.tomakehurst.wiremock.admin.SetScenarioStateTask
+com.github.tomakehurst.wiremock.admin.tasks.GetAllRequestsTask
+com.github.tomakehurst.wiremock.admin.tasks.ResetRequestsTask
+com.github.tomakehurst.wiremock.admin.tasks.GetRequestCountTask
+com.github.tomakehurst.wiremock.admin.tasks.FindRequestsTask
+com.github.tomakehurst.wiremock.admin.tasks.FindUnmatchedRequestsTask
+com.github.tomakehurst.wiremock.admin.tasks.FindNearMissesForUnmatchedTask
+com.github.tomakehurst.wiremock.admin.tasks.AbstractSingleServeEventTask
+com.github.tomakehurst.wiremock.admin.tasks.GetServedStubTask
+com.github.tomakehurst.wiremock.admin.RemoveServeEventTask
+com.github.tomakehurst.wiremock.admin.RemoveServeEventsByRequestPatternTask
+com.github.tomakehurst.wiremock.admin.RemoveServeEventsByStubMetadataTask
+com.github.tomakehurst.wiremock.admin.tasks.SnapshotTask
+com.github.tomakehurst.wiremock.admin.StartRecordingTask
+com.github.tomakehurst.wiremock.admin.StopRecordingTask
+com.github.tomakehurst.wiremock.admin.GetRecordingStatusTask
+com.github.tomakehurst.wiremock.admin.tasks.AbstractGetDocTask
+com.github.tomakehurst.wiremock.admin.tasks.GetRecordingsIndexTask
+com.github.tomakehurst.wiremock.admin.tasks.FindNearMissesForRequestTask
+com.github.tomakehurst.wiremock.admin.tasks.FindNearMissesForRequestPatternTask
+com.github.tomakehurst.wiremock.admin.GetGlobalSettingsTask
+com.github.tomakehurst.wiremock.admin.tasks.GlobalSettingsUpdateTask
+com.github.tomakehurst.wiremock.admin.PatchExtendedSettingsTask
+com.github.tomakehurst.wiremock.admin.tasks.ShutdownServerTask
+com.github.tomakehurst.wiremock.admin.tasks.GetSwaggerSpecTask
+com.github.tomakehurst.wiremock.admin.tasks.GetDocIndexTask
+com.github.tomakehurst.wiremock.admin.tasks.GetCaCertTask
+java.util.Base64
+java.util.Base64$Decoder
+java.util.Base64$Encoder
+com.github.tomakehurst.wiremock.admin.tasks.HealthCheckTask
+com.github.tomakehurst.wiremock.admin.tasks.GetVersionTask
+com.google.common.collect.ImmutableSet$CachingAsList
+com.google.common.collect.ImmutableMapEntrySet
+com.google.common.collect.ImmutableMapEntrySet$RegularEntrySet
+com.google.common.collect.IndexedImmutableSet
+com.google.common.collect.ImmutableMapKeySet
+com.google.common.collect.RegularImmutableMap$BucketOverflowException
+com.google.common.collect.ImmutableMapEntry$NonTerminalImmutableMapEntry
+com.google.common.collect.ImmutableMapEntry$NonTerminalImmutableBiMapEntry
+com.google.common.collect.RegularImmutableBiMap$Inverse
+com.google.common.collect.Hashing
+com.google.common.collect.RegularImmutableMap
+com.google.common.collect.ImmutableList
+com.google.common.collect.RegularImmutableMap$Values
+com.google.common.collect.RegularImmutableMap$KeySet
+com.github.tomakehurst.wiremock.http.AdminRequestHandler
+com.github.tomakehurst.wiremock.common.InvalidParameterException
+com.github.tomakehurst.wiremock.common.NotPermittedException
+com.github.tomakehurst.wiremock.http.BasicResponseRenderer
+com.github.tomakehurst.wiremock.core.WireMockApp$$Lambda/0x00003fc0012e9478
+com.github.tomakehurst.wiremock.core.WireMockApp$$Lambda/0x00003fc0012e96d0
+com.github.tomakehurst.wiremock.jetty.JettyHttpServer
+com.github.tomakehurst.wiremock.jetty11.Jetty11HttpServer
+com.github.tomakehurst.wiremock.servlet.MultipartRequestConfigurer
+com.github.tomakehurst.wiremock.http.ThreadPoolFactory
+org.eclipse.jetty.io.NetworkTrafficListener
+org.eclipse.jetty.util.component.LifeCycle
+org.eclipse.jetty.util.component.Container
+org.eclipse.jetty.util.component.Graceful
+org.eclipse.jetty.server.Connector
+org.eclipse.jetty.server.ConnectionFactory
+org.eclipse.jetty.util.component.Destroyable
+org.eclipse.jetty.util.component.Dumpable
+org.eclipse.jetty.util.component.Dumpable$DumpableContainer
+org.eclipse.jetty.util.component.AbstractLifeCycle
+org.eclipse.jetty.util.component.ContainerLifeCycle
+org.eclipse.jetty.server.AbstractConnectionFactory
+org.eclipse.jetty.server.ConnectionFactory$Upgrading
+org.eclipse.jetty.server.NegotiatingServerConnection$CipherDiscriminator
+org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory
+org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory
+org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory
+org.eclipse.jetty.server.NetworkConnector
+org.eclipse.jetty.server.AbstractConnector
+org.eclipse.jetty.server.AbstractNetworkConnector
+org.eclipse.jetty.server.ServerConnector
+org.eclipse.jetty.server.NetworkTrafficServerConnector
+org.eclipse.jetty.server.Handler
+org.eclipse.jetty.server.handler.AbstractHandler
+com.github.tomakehurst.wiremock.jetty11.Jetty11HttpServer$1
+org.eclipse.jetty.server.HandlerContainer
+com.github.tomakehurst.wiremock.jetty.JettyHttpUtils
+org.eclipse.jetty.util.Attributes
+org.eclipse.jetty.server.handler.AbstractHandlerContainer
+org.eclipse.jetty.server.handler.HandlerWrapper
+org.eclipse.jetty.server.handler.ScopedHandler
+org.eclipse.jetty.server.handler.ContextHandler
+org.eclipse.jetty.servlet.ServletContextHandler
+org.eclipse.jetty.server.handler.ErrorHandler
+com.github.tomakehurst.wiremock.jetty11.NotFoundHandler
+jakarta.servlet.DispatcherType
+com.github.tomakehurst.wiremock.jetty.QueuedThreadPoolFactory
+org.eclipse.jetty.util.thread.ThreadPool
+org.eclipse.jetty.server.Server
+org.eclipse.jetty.util.component.AbstractLifeCycle$StopException
+org.eclipse.jetty.http.BadMessageException
+org.eclipse.jetty.http.HttpURI
+org.eclipse.jetty.http.HttpField
+org.eclipse.jetty.http.PreEncodedHttpField
+jakarta.servlet.ServletResponse
+jakarta.servlet.http.HttpServletResponse
+jakarta.servlet.ServletRequest
+jakarta.servlet.http.HttpServletRequest
+org.eclipse.jetty.util.component.AbstractLifeCycle$State
+org.eclipse.jetty.util.thread.ThreadPool$SizedThreadPool
+org.eclipse.jetty.util.thread.TryExecutor
+org.eclipse.jetty.util.VirtualThreads$Configurable
+org.eclipse.jetty.util.thread.QueuedThreadPool
+java.util.concurrent.RejectedExecutionException
+org.eclipse.jetty.util.thread.TryExecutor$1
+org.eclipse.jetty.util.thread.QueuedThreadPool$$Lambda/0x00003fc0012f76c8
+org.eclipse.jetty.util.thread.AutoLock
+org.eclipse.jetty.util.AtomicBiInteger
+org.eclipse.jetty.util.thread.AutoLock$WithCondition
+java.lang.invoke.LambdaForm$MH/0x00003fc0012fc000
+org.eclipse.jetty.util.thread.QueuedThreadPool$Runner
+org.eclipse.jetty.util.thread.ReservedThreadExecutor
+org.eclipse.jetty.util.component.AbstractLifeCycle$1
+org.eclipse.jetty.util.BlockingArrayQueue
+org.eclipse.jetty.util.MemoryUtils
+org.eclipse.jetty.util.thread.ThreadPoolBudget
+org.eclipse.jetty.util.thread.ThreadPoolBudget$Lease
+org.eclipse.jetty.util.thread.ThreadPoolBudget$1
+java.util.concurrent.CopyOnWriteArraySet
+org.eclipse.jetty.util.component.ContainerLifeCycle$Managed
+org.eclipse.jetty.util.component.ContainerLifeCycle$Bean
+java.util.EventListener
+org.eclipse.jetty.util.component.ContainerLifeCycle$1
+org.eclipse.jetty.util.component.AttributeContainerMap
+com.github.tomakehurst.wiremock.common.JettySettings$Builder
+com.github.tomakehurst.wiremock.common.JettySettings
+java.lang.invoke.LambdaForm$DMH/0x00003fc0012fc400
+com.github.tomakehurst.wiremock.jetty.JettyHttpServer$$Lambda/0x00003fc0012fb388
+com.github.tomakehurst.wiremock.jetty.JettyHttpServer$NetworkTrafficListenerAdapter
+com.github.tomakehurst.wiremock.jetty11.Jetty11Utils
+org.eclipse.jetty.server.HttpConfiguration$Customizer
+org.eclipse.jetty.server.HttpConfiguration
+org.eclipse.jetty.util.Index$Builder
+org.eclipse.jetty.util.Index
+org.eclipse.jetty.util.Index$Mutable
+org.eclipse.jetty.util.AbstractTrie
+org.eclipse.jetty.util.ArrayTrie
+org.eclipse.jetty.util.Index$Mutable$Builder
+org.eclipse.jetty.util.TreeTrie
+org.eclipse.jetty.util.TreeTrie$Node
+org.eclipse.jetty.http.HttpScheme
+org.eclipse.jetty.util.BufferUtil
+org.eclipse.jetty.http.HttpScheme$$Lambda/0x00003fc0012fd410
+org.eclipse.jetty.util.AbstractTrie$$Lambda/0x00003fc0012fd658
+org.eclipse.jetty.util.ArrayTrie$Node
+org.eclipse.jetty.http.ComplianceViolation$Mode
+org.eclipse.jetty.http.HttpCompliance
+org.eclipse.jetty.http.ComplianceViolation
+org.eclipse.jetty.http.HttpCompliance$Violation
+org.eclipse.jetty.http.UriCompliance
+org.eclipse.jetty.http.UriCompliance$Violation
+org.eclipse.jetty.http.CookieCompliance
+org.eclipse.jetty.http.CookieCompliance$Violation
+org.eclipse.jetty.server.MultiPartFormDataCompliance
+org.eclipse.jetty.http.HttpMethod
+org.eclipse.jetty.http.HttpMethod$Type
+org.eclipse.jetty.util.StringUtil
+org.eclipse.jetty.http.HttpMethod$$Lambda/0x00003fc0013026c8
+org.eclipse.jetty.http.HttpMethod$$Lambda/0x00003fc001302910
+org.eclipse.jetty.http.HttpMethod$$Lambda/0x00003fc001302b58
+org.eclipse.jetty.server.SecureRequestCustomizer
+org.eclipse.jetty.util.ssl.SslContextFactory
+org.eclipse.jetty.util.ssl.SniX509ExtendedKeyManager$SniSelector
+org.eclipse.jetty.util.ssl.SslContextFactory$Server
+org.eclipse.jetty.server.HttpConfiguration$ConnectionFactory
+org.eclipse.jetty.server.HttpConnectionFactory
+org.eclipse.jetty.io.Connection
+org.eclipse.jetty.io.AbstractConnection
+org.eclipse.jetty.server.HttpTransport
+org.eclipse.jetty.io.WriteFlusher$Listener
+org.eclipse.jetty.io.Connection$UpgradeFrom
+org.eclipse.jetty.io.Connection$UpgradeTo
+org.eclipse.jetty.server.HttpConnection
+org.eclipse.jetty.http.HttpVersion
+org.eclipse.jetty.http.HttpVersion$$Lambda/0x00003fc001306d38
+org.eclipse.jetty.http2.parser.Parser$Listener
+org.eclipse.jetty.http2.HTTP2Connection
+org.eclipse.jetty.http2.parser.ServerParser$Listener
+org.eclipse.jetty.http2.server.HTTP2ServerConnection
+org.eclipse.jetty.http2.parser.RateControl$Factory
+org.eclipse.jetty.http2.FlowControlStrategy
+org.eclipse.jetty.http2.api.Session$Listener
+org.eclipse.jetty.http2.api.server.ServerSessionListener
+org.eclipse.jetty.io.Connection$Listener
+org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory$HTTP2SessionContainer
+java.util.concurrent.CompletionStage
+java.util.concurrent.CompletableFuture
+org.eclipse.jetty.util.component.Graceful$1
+org.eclipse.jetty.http2.parser.WindowRateControl$Factory
+org.eclipse.jetty.http2.parser.RateControl
+org.eclipse.jetty.http2.FlowControlStrategy$Factory
+org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory$$Lambda/0x00003fc001309868
+org.eclipse.jetty.util.thread.Invocable
+org.eclipse.jetty.util.Callback
+org.eclipse.jetty.http2.api.Session
+org.eclipse.jetty.http2.ISession
+org.eclipse.jetty.util.thread.ExecutionStrategy$Producer
+org.eclipse.jetty.util.thread.ExecutionStrategy
+org.eclipse.jetty.http.MetaData
+org.eclipse.jetty.http.MetaData$Request
+org.eclipse.jetty.http2.HTTP2Channel$Server
+org.eclipse.jetty.server.HttpOutput$Interceptor
+org.eclipse.jetty.server.HttpChannel
+org.eclipse.jetty.http2.server.HttpChannelOverHTTP2
+org.eclipse.jetty.http2.server.HTTP2ServerConnection$ServerHttpChannelOverHTTP2
+org.eclipse.jetty.http2.HTTP2Session
+org.eclipse.jetty.http2.server.HTTP2ServerSession
+org.eclipse.jetty.util.component.Container$Listener
+com.github.tomakehurst.wiremock.jetty11.Jetty11HttpServer$$Lambda/0x00003fc00130d4c0
+com.github.tomakehurst.wiremock.jetty11.Jetty11HttpServer$$Lambda/0x00003fc00130d718
+org.eclipse.jetty.util.component.Graceful$Shutdown
+org.eclipse.jetty.server.AbstractConnector$2
+org.eclipse.jetty.util.thread.Scheduler
+org.eclipse.jetty.io.ByteBufferPool
+org.eclipse.jetty.io.SelectorManager
+org.eclipse.jetty.server.ServerConnector$ServerConnectorManager
+java.nio.channels.ServerSocketChannel
+org.eclipse.jetty.io.ManagedSelector$Selectable
+org.eclipse.jetty.io.EndPoint
+org.eclipse.jetty.io.IdleTimeout
+org.eclipse.jetty.io.AbstractEndPoint
+org.eclipse.jetty.io.SelectableChannelEndPoint
+org.eclipse.jetty.io.SocketChannelEndPoint
+org.eclipse.jetty.io.NetworkTrafficSocketChannelEndPoint
+org.eclipse.jetty.http.HttpFields
+org.eclipse.jetty.server.RequestLog
+org.eclipse.jetty.server.HttpChannel$Dispatchable
+org.eclipse.jetty.server.HttpChannel$Listener
+org.eclipse.jetty.server.HttpChannel$1
+org.eclipse.jetty.util.thread.ScheduledExecutorScheduler
+org.eclipse.jetty.util.thread.Scheduler$Task
+org.eclipse.jetty.io.AbstractByteBufferPool
+org.eclipse.jetty.io.ArrayByteBufferPool
+org.eclipse.jetty.io.LogarithmicArrayByteBufferPool
+org.eclipse.jetty.io.RetainableByteBufferPool
+org.eclipse.jetty.io.ArrayRetainableByteBufferPool
+org.eclipse.jetty.io.LogarithmicArrayByteBufferPool$LogarithmicRetainablePool
+org.eclipse.jetty.util.Pool
+org.eclipse.jetty.io.ArrayRetainableByteBufferPool$RetainedBucket
+java.util.function.IntUnaryOperator
+org.eclipse.jetty.io.LogarithmicArrayByteBufferPool$LogarithmicRetainablePool$$Lambda/0x00003fc0013131d0
+org.eclipse.jetty.io.LogarithmicArrayByteBufferPool$LogarithmicRetainablePool$$Lambda/0x00003fc001313418
+org.eclipse.jetty.util.Pool$Entry
+org.eclipse.jetty.util.Pool$MultiEntry
+org.eclipse.jetty.util.Pool$MonoEntry
+org.eclipse.jetty.util.Pool$StrategyType
+org.eclipse.jetty.io.AbstractByteBufferPool$Bucket
+java.util.function.IntConsumer
+java.lang.invoke.LambdaForm$DMH/0x00003fc001318000
+java.lang.classfile.CodeBuilder$1
+org.eclipse.jetty.io.AbstractByteBufferPool$$Lambda/0x00003fc001314b10
+org.eclipse.jetty.util.NanoTime
+org.eclipse.jetty.io.AbstractByteBufferPool$$Lambda/0x00003fc001314f60
+org.eclipse.jetty.server.AbstractConnector$1
+org.eclipse.jetty.util.component.Container$InheritedListener
+org.eclipse.jetty.util.ProcessorUtils
+java.lang.ProcessEnvironment
+java.lang.ProcessEnvironment$ExternalData
+java.lang.ProcessEnvironment$Variable
+java.lang.Process
+java.lang.ProcessImpl
+java.lang.ProcessImpl$LaunchMechanism
+java.lang.ProcessEnvironment$Value
+java.lang.ProcessEnvironment$StringEnvironment
+org.eclipse.jetty.io.ManagedSelector$SelectorUpdate
+org.eclipse.jetty.io.ManagedSelector
+org.eclipse.jetty.io.SelectorManager$$Lambda/0x00003fc001316150
+java.lang.invoke.LambdaForm$DMH/0x00003fc001318400
+com.github.tomakehurst.wiremock.jetty11.Jetty11Utils$$Lambda/0x00003fc0013163a0
+com.github.tomakehurst.wiremock.jetty11.Jetty11Utils$$Lambda/0x00003fc0013165e0
+jakarta.servlet.ServletContext
+org.eclipse.jetty.server.handler.ContextHandler$AliasCheck
+org.eclipse.jetty.server.session.SessionHandler
+org.eclipse.jetty.security.Authenticator$AuthConfiguration
+org.eclipse.jetty.security.SecurityHandler
+org.eclipse.jetty.servlet.ServletHandler
+org.eclipse.jetty.server.handler.gzip.GzipFactory
+org.eclipse.jetty.server.handler.gzip.GzipHandler
+org.eclipse.jetty.util.Decorator
+org.eclipse.jetty.util.AttributesMap
+org.eclipse.jetty.server.handler.ContextHandler$StaticContext
+org.eclipse.jetty.server.handler.ContextHandler$Context
+org.eclipse.jetty.servlet.ServletContextHandler$Context
+jakarta.servlet.ServletContextListener
+jakarta.servlet.ServletContextAttributeListener
+jakarta.servlet.ServletRequestListener
+jakarta.servlet.ServletRequestAttributeListener
+jakarta.servlet.http.HttpSessionIdListener
+jakarta.servlet.http.HttpSessionListener
+jakarta.servlet.http.HttpSessionAttributeListener
+org.eclipse.jetty.server.handler.ContextHandler$ContextStatus
+org.eclipse.jetty.util.security.SecurityUtils
+java.io.Console
+java.lang.SecurityManager
+java.lang.Deprecated
+jdk.proxy1.$Proxy16
+org.eclipse.jetty.util.EmptyTrie
+org.eclipse.jetty.server.handler.ContextHandler$Availability
+jakarta.servlet.ServletException
+jakarta.servlet.RequestDispatcher
+java.security.BasicPermission
+java.lang.RuntimePermission
+org.eclipse.jetty.server.AllowedResourceAliasChecker
+org.eclipse.jetty.server.SymlinkAllowedResourceAliasChecker
+org.eclipse.jetty.util.resource.ResourceFactory
+org.eclipse.jetty.util.resource.Resource
+org.eclipse.jetty.server.AllowedResourceAliasChecker$$Lambda/0x00003fc00131b810
+org.eclipse.jetty.util.component.LifeCycle$Listener
+org.eclipse.jetty.server.AllowedResourceAliasChecker$AllowedResourceAliasCheckListener
+org.eclipse.jetty.util.URIUtil
+org.eclipse.jetty.util.Utf8Appendable$NotUtf8Exception
+org.eclipse.jetty.security.ConstraintAware
+org.eclipse.jetty.security.ConstraintSecurityHandler
+jakarta.servlet.Registration
+jakarta.servlet.ServletRegistration
+jakarta.servlet.FilterRegistration
+org.eclipse.jetty.util.DecoratedObjectFactory
+org.eclipse.jetty.server.UserIdentity$Scope
+jakarta.servlet.FilterChain
+org.eclipse.jetty.http.pathmap.PathSpec
+org.eclipse.jetty.server.ResourceService$WelcomeFactory
+jakarta.servlet.Servlet
+jakarta.servlet.ServletConfig
+jakarta.servlet.GenericServlet
+jakarta.servlet.http.HttpServlet
+org.eclipse.jetty.servlet.DefaultServlet
+org.eclipse.jetty.servlet.Source
+org.eclipse.jetty.servlet.Source$Origin
+org.eclipse.jetty.servlet.BaseHolder
+org.eclipse.jetty.servlet.Holder
+org.eclipse.jetty.servlet.ServletHolder
+jakarta.servlet.UnavailableException
+jakarta.servlet.Registration$Dynamic
+jakarta.servlet.ServletRegistration$Dynamic
+org.eclipse.jetty.servlet.ServletHolder$1
+org.eclipse.jetty.servlet.Holder$1
+org.eclipse.jetty.util.ArrayUtil
+org.eclipse.jetty.servlet.ServletHandler$MappedServlet
+org.eclipse.jetty.servlet.ServletMapping
+com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet
+com.github.tomakehurst.wiremock.jetty.DefaultMultipartRequestConfigurer
+com.github.tomakehurst.wiremock.servlet.NotMatchedServlet
+org.eclipse.jetty.servlet.FilterHolder
+jakarta.servlet.FilterRegistration$Dynamic
+jakarta.servlet.FilterConfig
+jakarta.servlet.Filter
+org.eclipse.jetty.servlets.CrossOriginFilter
+org.eclipse.jetty.servlet.FilterMapping
+com.github.tomakehurst.wiremock.common.AsynchronousResponseSettings
+com.github.tomakehurst.wiremock.jetty11.Jetty11HttpUtils
+com.github.tomakehurst.wiremock.servlet.FaultInjectorFactory
+com.github.tomakehurst.wiremock.jetty.JettyFaultInjectorFactory
+com.github.tomakehurst.wiremock.core.FaultInjector
+com.github.tomakehurst.wiremock.core.Options$ChunkedEncodingPolicy
+org.eclipse.jetty.http.MimeTypes
+org.eclipse.jetty.http.MimeTypes$$Lambda/0x00003fc001327358
+org.eclipse.jetty.http.MimeTypes$Type
+org.eclipse.jetty.util.QuotedStringTokenizer
+org.eclipse.jetty.http.HttpFieldPreEncoder
+org.eclipse.jetty.util.TypeUtil
+org.eclipse.jetty.util.ServiceLoaderSpliterator
+org.eclipse.jetty.http.PreEncodedHttpField$$Lambda/0x00003fc0013282a8
+org.eclipse.jetty.http.Http1FieldPreEncoder
+org.eclipse.jetty.util.ServiceLoaderSpliterator$ServiceProvider
+org.eclipse.jetty.http.PreEncodedHttpField$1
+org.eclipse.jetty.http2.hpack.HpackFieldPreEncoder
+org.eclipse.jetty.http.HttpHeader
+org.eclipse.jetty.http.HttpHeader$$Lambda/0x00003fc001329428
+org.eclipse.jetty.http2.hpack.HpackEncoder
+org.eclipse.jetty.http2.hpack.HpackException
+org.eclipse.jetty.http2.hpack.HpackException$StreamException
+org.eclipse.jetty.http.HttpField$IntValueHttpField
+org.eclipse.jetty.http2.hpack.HpackException$SessionException
+java.util.JumboEnumSet
+org.eclipse.jetty.http2.hpack.HpackContext
+org.eclipse.jetty.http2.hpack.StaticTableHttpField
+org.eclipse.jetty.http2.hpack.HpackContext$Entry
+org.eclipse.jetty.http2.hpack.HpackContext$StaticEntry
+org.eclipse.jetty.http2.hpack.HpackContext$1
+org.eclipse.jetty.http.compression.HuffmanEncoder
+org.eclipse.jetty.http.compression.Huffman
+org.eclipse.jetty.http.HttpTokens
+org.eclipse.jetty.http.HttpTokens$Token
+org.eclipse.jetty.http.HttpTokens$Type
+org.eclipse.jetty.http.compression.NBitIntegerEncoder
+org.eclipse.jetty.http.compression.NBitStringEncoder
+org.eclipse.jetty.http.HttpStatus$Code
+sun.util.PreHashedMap
+sun.nio.cs.StandardCharsets$Aliases
+sun.nio.cs.StandardCharsets$Cache
+org.eclipse.jetty.http.MimeTypes$$Lambda/0x00003fc00132cd38
+org.eclipse.jetty.http.MimeTypes$$Lambda/0x00003fc00132cf90
+org.eclipse.jetty.http.MimeTypes$$Lambda/0x00003fc00132d1d0
+org.eclipse.jetty.http.MimeTypes$$Lambda/0x00003fc00132d428
+java.nio.BufferOverflowException
+org.eclipse.jetty.io.ByteBufferOutputStream
+java.io.PrintWriter
+com.github.tomakehurst.wiremock.servlet.ContentTypeSettingFilter
+com.github.tomakehurst.wiremock.servlet.TrailingSlashFilter
+org.eclipse.jetty.server.handler.HandlerCollection
+org.eclipse.jetty.util.MultiException
+com.github.tomakehurst.wiremock.jetty11.Jetty11HttpServer$$Lambda/0x00003fc00132e7e8
+org.eclipse.jetty.server.handler.HandlerCollection$Handlers
+org.eclipse.jetty.server.HttpInput$Interceptor
+org.eclipse.jetty.util.IncludeExcludeSet
+org.eclipse.jetty.util.IncludeExclude
+org.eclipse.jetty.util.IncludeExcludeSet$SetContainsPredicate
+org.eclipse.jetty.http.pathmap.PathSpecSet
+org.eclipse.jetty.http.pathmap.PathMappings
+org.eclipse.jetty.http.pathmap.MappedResource
+org.eclipse.jetty.http.pathmap.PathMappings$$Lambda/0x00003fc001330000
+org.eclipse.jetty.util.AsciiLowerCaseSet
+org.eclipse.jetty.server.handler.gzip.GzipHttpOutputInterceptor
+java.nio.channels.WritePendingException
+org.eclipse.jetty.http.pathmap.AbstractPathSpec
+org.eclipse.jetty.http.pathmap.ServletPathSpec
+org.eclipse.jetty.http.pathmap.PathSpecGroup
+org.eclipse.jetty.http.pathmap.MappedResource$1
+org.eclipse.jetty.http.pathmap.PathMappings$1
+com.github.tomakehurst.wiremock.client.WireMock
+com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder
+com.github.tomakehurst.wiremock.client.ResponseDefinitionBuilder$ProxyResponseDefinitionBuilder
+com.github.tomakehurst.wiremock.matching.ContentPattern
+com.github.tomakehurst.wiremock.matching.StringValuePattern
+com.github.tomakehurst.wiremock.matching.EqualToPattern
+com.github.tomakehurst.wiremock.matching.EqualToJsonPattern
+com.github.tomakehurst.wiremock.matching.PathPattern
+com.github.tomakehurst.wiremock.matching.MatchesJsonPathPattern
+com.github.tomakehurst.wiremock.matching.MatchesJsonSchemaPattern
+com.github.tomakehurst.wiremock.matching.MatchesXPathPattern
+com.github.tomakehurst.wiremock.matching.ContainsPattern
+com.github.tomakehurst.wiremock.matching.NegativeContainsPattern
+com.github.tomakehurst.wiremock.matching.AbstractRegexPattern
+com.github.tomakehurst.wiremock.matching.NegativeRegexPattern
+com.github.tomakehurst.wiremock.matching.AbsentPattern
+com.github.tomakehurst.wiremock.matching.UrlPattern
+com.github.tomakehurst.wiremock.matching.UrlPathPattern
+com.github.tomakehurst.wiremock.matching.UrlPathTemplatePattern
+com.github.tomakehurst.wiremock.matching.MultiValuePattern
+com.github.tomakehurst.wiremock.matching.MultipleMatchMultiValuePattern
+com.github.tomakehurst.wiremock.matching.ExactMatchMultiValuePattern
+com.github.tomakehurst.wiremock.matching.IncludesMatchMultiValuePattern
+com.github.tomakehurst.wiremock.client.MappingBuilder
+com.github.tomakehurst.wiremock.matching.RegexPattern
+com.github.tomakehurst.wiremock.client.WireMock$1
+com.github.tomakehurst.wiremock.matching.AbstractLogicalMatcher
+com.github.tomakehurst.wiremock.matching.LogicalOr
+com.github.tomakehurst.wiremock.matching.LogicalAnd
+com.github.tomakehurst.wiremock.matching.NotPattern
+org.eclipse.jetty.server.handler.ErrorHandler$ErrorPageMapper
+org.eclipse.jetty.server.ShutdownMonitor
+org.eclipse.jetty.server.ShutdownMonitor$Holder
+org.slf4j.event.Level
+org.slf4j.helpers.MessageFormatter
+org.slf4j.helpers.NormalizedParameters
+org.slf4j.helpers.FormattingTuple
+org.apache.maven.surefire.api.report.TestOutputReportEntry
+org.eclipse.jetty.http.HttpGenerator
+org.eclipse.jetty.http.MetaData$Response
+org.eclipse.jetty.http.HttpFields$Immutable
+org.eclipse.jetty.http.EmptyHttpFields
+org.eclipse.jetty.http.HttpFields$Mutable
+org.eclipse.jetty.http.HttpHeaderValue
+org.eclipse.jetty.http.HttpHeaderValue$$Lambda/0x00003fc0013394d8
+org.eclipse.jetty.http.HttpGenerator$PreparedResponse
+org.eclipse.jetty.http.HttpStatus
+java.nio.HeapByteBufferR
+org.eclipse.jetty.server.Server$$Lambda/0x00003fc001339d48
+org.eclipse.jetty.server.Server$$Lambda/0x00003fc001339fa8
+org.eclipse.jetty.server.Server$$Lambda/0x00003fc00133a1f8
+java.net.InetSocketAddress$InetSocketAddressHolder
+java.nio.channels.spi.SelectorProvider
+java.nio.channels.spi.SelectorProvider$Holder
+sun.nio.ch.DefaultSelectorProvider
+sun.nio.ch.SelectorProviderImpl
+sun.nio.ch.KQueueSelectorProvider
+sun.nio.ch.ServerSocketChannelImpl
+sun.nio.ch.UnixDispatcher
+sun.nio.ch.SocketDispatcher
+sun.nio.ch.Net
+java.net.ProtocolFamily
+sun.nio.ch.Net$1
+java.lang.StableValue
+jdk.internal.lang.stable.StableValueImpl
+sun.net.ext.ExtendedSocketOptions
+jdk.net.ExtendedSocketOptions
+java.net.SocketOption
+jdk.net.ExtendedSocketOptions$ExtSocketOption
+jdk.net.UnixDomainPrincipal
+jdk.net.ExtendedSocketOptions$PlatformSocketOptions
+jdk.net.ExtendedSocketOptions$2
+jdk.net.MacOSXSocketOptions
+jdk.net.ExtendedSocketOptions$1
+java.net.StandardProtocolFamily
+java.net.StandardSocketOptions
+java.net.StandardSocketOptions$StdSocketOption
+java.net.NetworkInterface
+sun.nio.ch.ServerSocketChannelImpl$DefaultOptionsHolder
+sun.nio.ch.SocketOptionRegistry
+sun.nio.ch.SocketOptionRegistry$RegistryKey
+sun.nio.ch.SocketOptionRegistry$LazyInitialization
+sun.nio.ch.OptionKey
+sun.nio.ch.ExtendedSocketOption
+sun.nio.ch.ExtendedSocketOption$1
+sun.net.NetHooks
+sun.net.NetHooks$Provider
+sun.net.sdp.SdpProvider
+java.net.ServerSocket
+sun.nio.ch.ServerSocketAdaptor
+java.net.SocketOptions
+java.net.SocketImpl
+sun.nio.ch.DummySocketImpl
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$1
+java.util.concurrent.SynchronousQueue
+java.util.concurrent.TransferQueue
+java.util.concurrent.LinkedTransferQueue
+java.util.concurrent.SynchronousQueue$Transferer
+java.util.concurrent.LinkedTransferQueue$DualNode
+org.eclipse.jetty.util.VirtualThreads
+java.security.PrivilegedExceptionAction
+java.lang.Thread$Builder
+java.lang.Thread$Builder$OfVirtual
+java.lang.ThreadBuilders$BaseThreadBuilder
+java.lang.ThreadBuilders$VirtualThreadBuilder
+java.lang.ThreadBuilders
+java.lang.ThreadBuilders$BaseThreadFactory
+java.lang.ThreadBuilders$VirtualThreadFactory
+java.util.concurrent.ThreadPerTaskExecutor
+java.lang.Thread$Builder$OfPlatform
+org.eclipse.jetty.util.thread.ThreadPoolBudget$Leased
+org.eclipse.jetty.util.thread.ThreadPoolBudget$$Lambda/0x00003fc00133aae8
+java.util.stream.IntStream
+java.util.stream.IntPipeline
+java.util.stream.IntPipeline$StatelessOp
+java.util.stream.ReferencePipeline$4
+java.util.function.IntBinaryOperator
+java.util.stream.IntPipeline$$Lambda/0x00003fc0012ae248
+java.util.stream.ReduceOps$6
+java.util.stream.Sink$OfInt
+java.util.stream.ReduceOps$5ReducingSink
+java.util.stream.ReferencePipeline$4$1
+org.eclipse.jetty.util.thread.QueuedThreadPool$$Lambda/0x00003fc00133ad10
+org.eclipse.jetty.util.thread.PrivilegedThreadFactory
+java.lang.String$$StringConcat/0x00003fc00133c000
+java.lang.invoke.LambdaForm$DMH/0x00003fc00133c400
+java.lang.invoke.LambdaForm$MH/0x00003fc00133c800
+java.lang.invoke.LambdaForm$MH/0x00003fc00133cc00
+org.eclipse.jetty.util.DeprecationWarning
+org.eclipse.jetty.servlet.ServletContextHandler$ServletContainerInitializerCaller
+org.eclipse.jetty.servlet.ListenerHolder
+org.eclipse.jetty.server.handler.ContextHandler$ContextScopeListener
+jakarta.servlet.http.HttpSessionActivationListener
+jakarta.servlet.http.HttpSessionBindingListener
+org.eclipse.jetty.util.MultiMap
+org.eclipse.jetty.servlet.ServletHandler$$Lambda/0x00003fc00133e7d8
+org.eclipse.jetty.http.pathmap.MatchedPath
+org.eclipse.jetty.http.pathmap.MatchedPath$1
+org.eclipse.jetty.http.pathmap.MatchedPath$2
+org.eclipse.jetty.servlet.ServletHandler$1
+jakarta.servlet.http.HttpServletMapping
+org.eclipse.jetty.server.ServletPathMapping
+org.eclipse.jetty.server.ServletPathMapping$1
+jakarta.servlet.http.MappingMatch
+org.eclipse.jetty.http.pathmap.MatchedResource
+org.eclipse.jetty.http.pathmap.ServletPathSpec$1
+org.eclipse.jetty.servlet.ServletHandler$$Lambda/0x00003fc00133d210
+org.eclipse.jetty.servlet.FilterHolder$WrapFunction
+org.eclipse.jetty.servlet.FilterHolder$$Lambda/0x00003fc00133d658
+org.eclipse.jetty.servlet.Holder$HolderConfig
+org.eclipse.jetty.servlet.FilterHolder$Config
+org.eclipse.jetty.util.StringUtil$CsvSplitState
+org.eclipse.jetty.util.StringUtil$1
+jakarta.servlet.annotation.ServletSecurity
+org.eclipse.jetty.servlet.ServletHolder$Config
+org.eclipse.jetty.util.compression.CompressionPool
+org.eclipse.jetty.util.compression.InflaterPool
+org.eclipse.jetty.util.compression.DeflaterPool
+jakarta.servlet.ServletOutputStream
+com.github.tomakehurst.wiremock.http.HttpResponder
+java.util.ResourceBundle$ResourceBundleControlProviderHolder
+java.util.spi.ResourceBundleControlProvider
+java.util.ResourceBundle$ResourceBundleControlProviderHolder$$Lambda/0x00003fc0012af360
+java.util.stream.ReferencePipeline$$Lambda/0x00003fc0012af5a8
+java.util.ResourceBundle$CacheKey
+java.util.ResourceBundle$CacheKeyReference
+java.util.ResourceBundle$KeyElementReference
+java.util.PropertyResourceBundle
+sun.util.PropertyResourceBundleCharset
+sun.util.PropertyResourceBundleCharset$PropertiesFileDecoder
+java.util.ResourceBundle$BundleReference
+jakarta.servlet.SingleThreadModel
+org.eclipse.jetty.servlet.ServletHolder$WrapFunction
+org.eclipse.jetty.servlet.ServletHolder$$Lambda/0x00003fc0013420e8
+org.eclipse.jetty.io.SelectorManager$SelectorManagerListener
+org.eclipse.jetty.server.ConnectionFactory$Configuring
+org.eclipse.jetty.server.AbstractConnector$$Lambda/0x00003fc001342930
+org.eclipse.jetty.server.AbstractConnector$$Lambda/0x00003fc001342b90
+org.eclipse.jetty.server.AbstractConnector$$Lambda/0x00003fc001342de0
+org.eclipse.jetty.server.ConnectionFactory$Detecting
+org.eclipse.jetty.server.SslConnectionFactory
+org.eclipse.jetty.util.thread.ScheduledExecutorScheduler$$Lambda/0x00003fc0013437d8
+java.nio.channels.ClosedSelectorException
+java.net.SocketTimeoutException
+java.net.SocketException
+java.net.ConnectException
+org.eclipse.jetty.util.statistic.SampleStatistic
+java.util.concurrent.atomic.LongAccumulator
+java.util.function.LongBinaryOperator
+java.lang.invoke.LambdaForm$DMH/0x00003fc001344000
+org.eclipse.jetty.util.statistic.SampleStatistic$$Lambda/0x00003fc001343c60
+org.eclipse.jetty.io.ManagedSelector$SelectorProducer
+java.nio.channels.CancelledKeyException
+org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy
+org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy$State
+java.nio.channels.Selector
+java.nio.channels.spi.AbstractSelector
+sun.nio.ch.SelectorImpl
+sun.nio.ch.KQueueSelectorImpl
+java.nio.channels.spi.AbstractSelector$1
+sun.nio.ch.Util$2
+sun.nio.ch.KQueue
+org.eclipse.jetty.io.ManagedSelector$$Lambda/0x00003fc001346be0
+org.eclipse.jetty.io.ManagedSelector$Start
+org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy$1
+java.util.concurrent.locks.AbstractQueuedSynchronizer$SharedNode
+org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy$SubStrategy
+org.eclipse.jetty.util.thread.Invocable$InvocationType
+org.eclipse.jetty.util.thread.Invocable$Task
+org.eclipse.jetty.server.AbstractConnector$Acceptor
+org.eclipse.jetty.util.Uptime
+org.eclipse.jetty.util.Uptime$Impl
+org.eclipse.jetty.util.Uptime$DefaultImpl
+javax.management.MBeanServerConnection
+java.lang.management.ClassLoadingMXBean
+java.lang.management.MemoryMXBean
+java.lang.management.CompilationMXBean
+java.lang.management.OperatingSystemMXBean
+javax.management.MBeanServer
+java.lang.management.ThreadMXBean
+java.lang.invoke.LambdaForm$DMH/0x00003fc001344400
+java.lang.invoke.LambdaForm$BMH/0x00003fc001344800
+java.lang.invoke.LambdaForm$MH/0x00003fc001344c00
+java.lang.invoke.LambdaForm$MH/0x00003fc001348000
+com.github.tomakehurst.wiremock.junit5.WireMockExtension$$Lambda/0x00003fc001345668
+com.github.tomakehurst.wiremock.junit5.WireMockExtension$$Lambda/0x00003fc0013458b0
+com.github.tomakehurst.wiremock.common.Lazy$$Lambda/0x00003fc001345af8
+org.junit.jupiter.engine.execution.DefaultParameterContext
+org.junit.jupiter.engine.execution.ParameterResolutionUtils$$Lambda/0x00003fc00134c2d8
+org.junit.jupiter.engine.execution.ParameterResolutionUtils$$Lambda/0x00003fc00134c538
+java.lang.invoke.LambdaForm$MH/0x00003fc001348400
+java.lang.invoke.LambdaForm$MH/0x00003fc001348800
+java.lang.invoke.LambdaForm$MH/0x00003fc001348c00
+com.github.tomakehurst.wiremock.matching.AnythingPattern
+com.github.tomakehurst.wiremock.matching.StringValuePattern$$Lambda/0x00003fc00134ca18
+com.github.tomakehurst.wiremock.matching.StringValuePattern$$Lambda/0x00003fc00134cc70
+com.github.tomakehurst.wiremock.matching.EqualToPattern$1
+com.github.tomakehurst.wiremock.client.ScenarioMappingBuilder
+com.github.tomakehurst.wiremock.client.BasicMappingBuilder
+java.util.UUID$Holder
+com.github.tomakehurst.wiremock.matching.RequestPatternBuilder
+com.github.tomakehurst.wiremock.matching.SingleMatchMultiValuePattern
+com.github.tomakehurst.wiremock.http.DelayDistribution
+com.github.tomakehurst.wiremock.http.Body
+com.github.tomakehurst.wiremock.http.MultiValue
+com.github.tomakehurst.wiremock.http.HttpHeader
+com.github.tomakehurst.wiremock.common.Strings
+com.github.tomakehurst.wiremock.matching.RequestPattern
+com.github.tomakehurst.wiremock.matching.RequestPattern$1
+com.github.tomakehurst.wiremock.http.HttpHeaders
+com.google.common.collect.Multimap
+com.google.common.collect.AbstractMultimap
+com.google.common.collect.BaseImmutableMultimap
+com.google.common.collect.ImmutableMultimap
+com.google.common.collect.ImmutableMultimap$Values
+com.google.common.collect.ImmutableMultimap$1
+com.google.common.collect.ImmutableMultimap$2
+com.google.common.collect.Multiset
+com.google.common.collect.ImmutableMultiset
+com.google.common.collect.ImmutableMultimap$Keys
+com.google.common.collect.ImmutableMultimap$EntryCollection
+com.google.common.collect.ListMultimap
+com.google.common.collect.ImmutableListMultimap
+com.google.common.collect.ImmutableMultimap$Builder
+com.google.common.collect.ImmutableList$Builder
+com.github.tomakehurst.wiremock.http.CaseInsensitiveKey
+com.github.tomakehurst.wiremock.http.CaseInsensitiveKey$$Lambda/0x00003fc001349c40
+com.google.common.collect.Platform
+com.google.common.collect.ImmutableAsList
+com.google.common.collect.RegularImmutableAsList
+com.google.common.collect.RegularImmutableList
+com.google.common.collect.ImmutableList$SubList
+com.google.common.collect.ImmutableList$ReverseImmutableList
+com.google.common.collect.SingletonImmutableList
+com.google.common.collect.UnmodifiableListIterator
+com.google.common.collect.AbstractIndexedListIterator
+com.google.common.collect.ImmutableList$1
+com.google.common.collect.EmptyImmutableListMultimap
+com.github.tomakehurst.wiremock.http.ResponseDefinition
+com.github.tomakehurst.wiremock.common.Metadata
+com.github.tomakehurst.wiremock.extension.Parameters
+java.util.concurrent.ConcurrentSkipListMap$CSLMSpliterator
+java.util.concurrent.ConcurrentSkipListMap$KeySpliterator
+com.github.tomakehurst.wiremock.store.InMemoryStubMappingStore$$Lambda/0x00003fc0013544c8
+software.amazon.lambda.powertools.metadata.exception.LambdaMetadataException
+java.net.HttpURLConnection
+sun.net.www.protocol.http.HttpURLConnection
+sun.util.logging.PlatformLogger
+sun.util.logging.PlatformLogger$Level
+sun.net.www.protocol.http.AuthCache
+sun.net.www.protocol.http.AuthCacheImpl
+java.net.Authenticator
+sun.net.www.protocol.http.AuthCacheImpl$$Lambda/0x00003fc0012b5d78
+sun.net.www.protocol.http.HttpURLConnection$TunnelState
+sun.net.util.ProxyUtil
+java.net.CookieHandler
+java.net.ResponseCache
+sun.net.spi.DefaultProxySelector$NonProxyInfo
+sun.net.NetworkClient
+sun.net.www.http.HttpClient
+sun.net.www.http.KeepAliveCache
+sun.net.www.http.KeepAliveKey
+sun.net.www.http.HttpCapture
+sun.net.PlatformSocketImpl
+sun.nio.ch.NioSocketImpl
+java.lang.invoke.LambdaForm$DMH/0x00003fc001358000
+sun.nio.ch.NioSocketImpl$$Lambda/0x00003fc0012b7fc8
+sun.nio.ch.SocketChannelImpl$DefaultOptionsHolder
+java.net.Socket$SocketOutputStream
+sun.nio.ch.NioSocketImpl$2
+org.eclipse.jetty.io.ManagedSelector$Accept
+sun.net.www.protocol.http.AuthCacheValue
+sun.net.www.protocol.http.AuthenticationInfo
+jdk.internal.event.SocketWriteEvent
+java.net.Socket$SocketInputStream
+sun.nio.ch.NioSocketImpl$1
+jdk.internal.event.SocketReadEvent
+java.nio.channels.SelectionKey
+java.nio.channels.spi.AbstractSelectionKey
+sun.nio.ch.SelectionKeyImpl
+java.lang.invoke.ConstantBootstraps
+org.eclipse.jetty.io.FillInterest
+org.eclipse.jetty.io.AbstractEndPoint$1
+org.eclipse.jetty.io.WriteFlusher
+org.eclipse.jetty.io.AbstractEndPoint$2
+org.eclipse.jetty.io.QuietException
+org.eclipse.jetty.io.EofException
+org.eclipse.jetty.io.AbstractEndPoint$State
+java.nio.channels.ReadPendingException
+org.eclipse.jetty.io.WriteFlusher$State
+org.eclipse.jetty.io.WriteFlusher$FailedState
+org.eclipse.jetty.io.WriteFlusher$PendingState
+org.eclipse.jetty.io.WriteFlusher$IdleState
+org.eclipse.jetty.io.WriteFlusher$WritingState
+org.eclipse.jetty.io.WriteFlusher$CompletingState
+org.eclipse.jetty.io.WriteFlusher$StateType
+org.eclipse.jetty.io.SelectableChannelEndPoint$$Lambda/0x00003fc001356fc0
+org.eclipse.jetty.io.SelectableChannelEndPoint$RunnableCloseable
+org.eclipse.jetty.io.SelectableChannelEndPoint$1
+org.eclipse.jetty.io.SelectableChannelEndPoint$2
+org.eclipse.jetty.io.SelectableChannelEndPoint$3
+org.eclipse.jetty.io.IdleTimeout$$Lambda/0x00003fc001357c90
+java.lang.String$$StringConcat/0x00003fc001358400
+java.lang.invoke.LambdaForm$MH/0x00003fc001358800
+org.eclipse.jetty.util.thread.ScheduledExecutorScheduler$ScheduledFutureTask
+org.eclipse.jetty.http.HttpParser$HttpHandler
+org.eclipse.jetty.http.HttpParser$RequestHandler
+org.eclipse.jetty.http.ComplianceViolation$Listener
+org.eclipse.jetty.server.HttpChannelOverHttp
+org.eclipse.jetty.server.HttpInput$Content
+org.eclipse.jetty.server.HttpConnection$Content
+org.eclipse.jetty.io.AbstractConnection$ReadCallback
+org.eclipse.jetty.util.Callback$1
+org.eclipse.jetty.server.HttpConnection$AsyncReadCallback
+org.eclipse.jetty.util.IteratingCallback
+org.eclipse.jetty.server.HttpConnection$SendCallback
+org.eclipse.jetty.util.IteratingCallback$State
+org.eclipse.jetty.http.HttpGenerator$State
+org.eclipse.jetty.http.HttpTokens$EndOfContent
+org.eclipse.jetty.server.HttpInput$SpecialContent
+org.eclipse.jetty.server.HttpInput$ErrorContent
+org.eclipse.jetty.http.HostPortHttpField
+org.eclipse.jetty.server.HttpInput$EofContent
+org.eclipse.jetty.server.HttpInput$WrappingContent
+org.eclipse.jetty.server.HttpChannelState
+jakarta.servlet.AsyncEvent
+org.eclipse.jetty.server.AsyncContextEvent
+org.eclipse.jetty.server.HttpChannelState$State
+org.eclipse.jetty.server.HttpChannelState$RequestState
+org.eclipse.jetty.server.HttpChannelState$OutputState
+org.eclipse.jetty.server.HttpChannelState$InputState
+org.eclipse.jetty.server.Request
+jakarta.servlet.AsyncContext
+jakarta.servlet.http.WebConnection
+org.eclipse.jetty.io.RuntimeIOException
+jakarta.servlet.ServletInputStream
+jakarta.servlet.http.HttpSession
+org.eclipse.jetty.server.MultiParts
+org.eclipse.jetty.server.Request$1
+java.nio.charset.UnsupportedCharsetException
+jakarta.servlet.http.PushBuilder
+org.eclipse.jetty.server.QuietServletException
+org.eclipse.jetty.server.Authentication$Failed
+org.eclipse.jetty.server.HttpInput
+org.eclipse.jetty.server.ContentProducer
+org.eclipse.jetty.server.AsyncContentProducer
+org.eclipse.jetty.util.StaticException
+org.eclipse.jetty.server.BlockingContentProducer
+org.eclipse.jetty.server.AsyncContentProducer$LockedSemaphore
+org.eclipse.jetty.server.Response
+org.eclipse.jetty.server.HttpWriter
+org.eclipse.jetty.server.Iso88591HttpWriter
+org.eclipse.jetty.server.Utf8HttpWriter
+org.eclipse.jetty.server.EncodingHttpWriter
+org.eclipse.jetty.server.ResponseWriter
+org.eclipse.jetty.server.HttpOutput
+java.nio.channels.IllegalSelectorException
+org.eclipse.jetty.http.HttpCookie$SetCookieHttpField
+org.eclipse.jetty.server.Response$EncodingFrom
+org.eclipse.jetty.http.DateGenerator
+org.eclipse.jetty.http.DateGenerator$1
+java.io.CharConversionException
+org.eclipse.jetty.util.SharedBlockingCallback
+org.eclipse.jetty.server.HttpOutput$WriteBlocker
+org.eclipse.jetty.server.HttpOutput$ApiState
+org.eclipse.jetty.server.HttpOutput$State
+org.eclipse.jetty.util.ConstantThrowable
+org.eclipse.jetty.util.SharedBlockingCallback$BlockerFailedException
+org.eclipse.jetty.util.SharedBlockingCallback$Blocker
+org.eclipse.jetty.server.Response$OutputType
+org.eclipse.jetty.server.HttpChannel$RequestDispatchable
+org.eclipse.jetty.server.HttpChannel$AsyncDispatchable
+org.eclipse.jetty.server.HttpChannelOverHttp$RequestBuilder
+org.eclipse.jetty.http.HttpURI$Mutable
+org.eclipse.jetty.http.HttpParser
+org.eclipse.jetty.http.HttpParser$IllegalCharacterException
+org.eclipse.jetty.http.HttpParser$State
+org.eclipse.jetty.http.HttpParser$$Lambda/0x00003fc001367288
+org.eclipse.jetty.http.HttpParser$$Lambda/0x00003fc0013674b0
+org.eclipse.jetty.util.Utf8Appendable
+org.eclipse.jetty.util.Utf8StringBuilder
+org.eclipse.jetty.http.HttpParser$FieldCache
+org.eclipse.jetty.http.HttpParser$FieldState
+org.eclipse.jetty.server.AbstractConnectionFactory$$Lambda/0x00003fc0013686b0
+org.eclipse.jetty.server.AbstractConnectionFactory$$Lambda/0x00003fc0013688f0
+org.eclipse.jetty.io.ManagedSelector$$Lambda/0x00003fc001368b30
+sun.nio.ch.SocketAdaptor
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$State
+java.util.concurrent.ForkJoinWorkerThread
+org.eclipse.jetty.util.Retainable
+org.eclipse.jetty.io.RetainableByteBuffer
+org.eclipse.jetty.io.ArrayRetainableByteBufferPool$$Lambda/0x00003fc001369880
+java.nio.DirectByteBuffer$Deallocator
+org.eclipse.jetty.io.RetainableByteBuffer$$Lambda/0x00003fc001369ac0
+org.eclipse.jetty.io.AbstractEndPoint$3
+org.eclipse.jetty.http.HttpParser$1
+org.eclipse.jetty.http.HttpURI$Mutable$State
+org.eclipse.jetty.http.HttpURI$1
+org.eclipse.jetty.server.HttpChannelOverHttp$1
+org.eclipse.jetty.util.HostPort
+org.eclipse.jetty.http.HttpURI$Immutable
+org.eclipse.jetty.http.HttpFields$Mutable$1
+org.eclipse.jetty.io.RetainableByteBuffer$$Lambda/0x00003fc00136b220
+org.eclipse.jetty.server.HttpChannelState$3
+org.eclipse.jetty.server.HttpChannelState$Action
+org.eclipse.jetty.server.HttpChannel$2
+org.eclipse.jetty.io.EndPoint$Wrapper
+org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint
+org.eclipse.jetty.server.ProxyConnectionFactory$ProxyEndPoint
+org.eclipse.jetty.http.HttpFields$Immutable$1
+org.eclipse.jetty.server.handler.gzip.GzipHttpOutputInterceptor$GZState
+org.eclipse.jetty.server.handler.ContextHandler$1
+org.eclipse.jetty.servlet.FilterMapping$1
+org.eclipse.jetty.servlet.ServletHandler$ChainEnd
+jakarta.servlet.ServletRequestWrapper
+org.eclipse.jetty.server.ServletRequestHttpWrapper
+jakarta.servlet.ServletResponseWrapper
+org.eclipse.jetty.server.ServletResponseHttpWrapper
+com.github.tomakehurst.wiremock.common.LocalNotifier
+com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter
+com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter$$Lambda/0x00003fc00136f0a8
+com.google.common.base.Suppliers$NonSerializableMemoizingSupplier
+com.google.common.base.Suppliers$MemoizingSupplier
+com.google.common.base.Suppliers$NonSerializableMemoizingSupplier$$Lambda/0x00003fc00136f798
+jakarta.servlet.MultipartConfigElement
+org.eclipse.jetty.server.ServletAttributes
+com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet$ServletHttpResponder
+com.github.tomakehurst.wiremock.stubbing.ServeEvent
+com.github.tomakehurst.wiremock.verification.LoggedRequest
+com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter$$Lambda/0x00003fc001370910
+com.github.tomakehurst.wiremock.common.url.PathParams
+jakarta.servlet.http.Cookie
+com.github.tomakehurst.wiremock.http.Cookie
+com.github.tomakehurst.wiremock.servlet.WireMockHttpServletRequestAdapter$$Lambda/0x00003fc0013717e0
+com.google.common.collect.Maps
+com.google.common.collect.ImmutableEnumMap
+com.google.common.collect.Maps$8
+com.google.common.base.Converter
+com.google.common.collect.Maps$BiMapConverter
+com.google.common.collect.MapDifference
+com.google.common.collect.SortedMapDifference
+com.google.common.collect.Maps$EntryTransformer
+com.google.common.collect.Maps$$Lambda/0x00003fc001372df0
+com.google.common.collect.Maps$IteratorBasedAbstractMap
+com.google.common.collect.Maps$TransformedEntriesMap
+com.github.tomakehurst.wiremock.common.Gzip
+com.github.tomakehurst.wiremock.common.Urls
+com.github.tomakehurst.wiremock.verification.LoggedRequest$$Lambda/0x00003fc001373bd0
+com.github.tomakehurst.wiremock.verification.LoggedRequest$$Lambda/0x00003fc001373e00
+com.github.tomakehurst.wiremock.common.Timing
+com.google.common.base.Stopwatch
+com.github.tomakehurst.wiremock.extension.ServeEventListener$RequestPhase
+com.github.tomakehurst.wiremock.extension.ServeEventListenerUtils
+com.github.tomakehurst.wiremock.extension.ServeEventListenerUtils$$Lambda/0x00003fc001374b00
+com.github.tomakehurst.wiremock.extension.ServeEventListenerUtils$$Lambda/0x00003fc001374d58
+com.github.tomakehurst.wiremock.http.RequestIdDecorator
+com.github.tomakehurst.wiremock.stubbing.SubEvent
+com.github.tomakehurst.wiremock.stubbing.AbstractStubMappings$$Lambda/0x00003fc0013755c8
+com.github.tomakehurst.wiremock.common.Pair
+com.github.tomakehurst.wiremock.store.StubMappingStore$$Lambda/0x00003fc001375a20
+com.github.tomakehurst.wiremock.store.StubMappingStore$$Lambda/0x00003fc001375c70
+com.github.tomakehurst.wiremock.store.StubMappingStore$$Lambda/0x00003fc001375eb0
+com.github.tomakehurst.wiremock.store.StubMappingStore$$Lambda/0x00003fc001376108
+com.github.tomakehurst.wiremock.stubbing.AbstractStubMappings$$Lambda/0x00003fc001376350
+com.github.tomakehurst.wiremock.http.RequestPathParamsDecorator
+com.github.tomakehurst.wiremock.matching.EagerMatchResult
+com.github.tomakehurst.wiremock.matching.WeightedAggregateMatchResult
+com.github.tomakehurst.wiremock.matching.WeightedMatchResult
+com.github.tomakehurst.wiremock.matching.MatchResult$$Lambda/0x00003fc0013772a0
+com.github.tomakehurst.wiremock.matching.WeightedAggregateMatchResult$$Lambda/0x00003fc0013774f8
+com.github.tomakehurst.wiremock.matching.MemoizingMatchResult$1
+com.github.tomakehurst.wiremock.matching.MemoizingMatchResult$2
+com.github.tomakehurst.wiremock.matching.WeightedAggregateMatchResult$$Lambda/0x00003fc001377be8
+com.github.tomakehurst.wiremock.matching.RequestPattern$$Lambda/0x00003fc001378000
+com.google.common.collect.ObjectArrays
+com.github.tomakehurst.wiremock.matching.MultiValuePattern$$Lambda/0x00003fc001378460
+java.util.function.ToDoubleFunction
+java.lang.invoke.LambdaForm$DMH/0x00003fc00137c000
+com.github.tomakehurst.wiremock.matching.MultiValuePattern$$Lambda/0x00003fc0013786b0
+java.util.Comparator$$Lambda/0x00003fc0012bb780
+com.github.tomakehurst.wiremock.matching.MatchResult$$Lambda/0x00003fc0013788d8
+com.google.common.base.NullnessCasts
+com.github.tomakehurst.wiremock.stubbing.AbstractStubMappings$$Lambda/0x00003fc001378d30
+java.util.ImmutableCollections$SubList
+jdk.internal.util.ByteArrayLittleEndian
+com.google.common.collect.ImmutableSet$SetBuilderImpl
+com.google.common.collect.ImmutableSet$RegularSetBuilderImpl
+com.google.common.collect.RegularImmutableSet
+com.google.common.collect.SingletonImmutableSet
+com.google.common.collect.Iterators
+com.google.common.collect.Iterators$ArrayItr
+com.google.common.collect.Iterators$1
+com.google.common.collect.Iterators$4
+com.google.common.collect.Iterators$9
+com.google.common.collect.PeekingIterator
+com.google.common.collect.Iterators$MergingIterator
+com.google.common.collect.AbstractIterator
+com.google.common.collect.Iterators$5
+com.google.common.collect.Iterators$SingletonIterator
+com.github.tomakehurst.wiremock.http.Response
+com.github.tomakehurst.wiremock.http.Response$Builder
+java.lang.invoke.LambdaForm$DMH/0x00003fc00137c400
+com.github.tomakehurst.wiremock.http.Response$Builder$$Lambda/0x00003fc00137bd88
+com.github.tomakehurst.wiremock.common.StreamSources
+com.github.tomakehurst.wiremock.common.StreamSources$ByteArrayInputStreamSource
+com.github.tomakehurst.wiremock.http.LoggedResponse
+com.google.common.collect.IndexedImmutableSet$1
+com.github.tomakehurst.wiremock.http.Response$$Lambda/0x00003fc00137ed20
+com.github.tomakehurst.wiremock.common.Exceptions
+com.github.tomakehurst.wiremock.http.ContentTypeHeader
+com.github.tomakehurst.wiremock.common.Json$PublicView
+com.fasterxml.jackson.databind.ObjectWriter
+com.fasterxml.jackson.core.util.MinimalPrettyPrinter
+com.fasterxml.jackson.databind.ObjectWriter$GeneratorSettings
+com.fasterxml.jackson.databind.ObjectWriter$Prefetch
+com.fasterxml.jackson.databind.RuntimeJsonMappingException
+com.fasterxml.jackson.core.exc.StreamWriteException
+com.fasterxml.jackson.core.JsonGenerationException
+com.fasterxml.jackson.core.json.JsonWriteContext
+com.fasterxml.jackson.core.StreamWriteCapability
+com.fasterxml.jackson.core.FormatFeature
+com.fasterxml.jackson.core.json.JsonWriteFeature
+com.fasterxml.jackson.databind.ser.impl.ReadOnlyClassToSerializerMap
+com.fasterxml.jackson.databind.ser.impl.ReadOnlyClassToSerializerMap$Bucket
+com.fasterxml.jackson.databind.util.TypeKey
+com.fasterxml.jackson.databind.ser.impl.ReadOnlyClassToSerializerMap$$Lambda/0x00003fc001380c60
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$EntrySet
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$EntryIterator
+com.github.tomakehurst.wiremock.http.ChunkedDribbleDelay
+com.github.tomakehurst.wiremock.http.Fault
+com.github.tomakehurst.wiremock.common.Errors
+com.fasterxml.jackson.annotation.JsonInclude
+jdk.proxy2.$Proxy17
+jdk.proxy2.$Proxy18
+jdk.proxy2.$Proxy19
+com.fasterxml.jackson.databind.introspect.MethodGenericTypeResolver
+sun.reflect.generics.scope.MethodScope
+sun.reflect.generics.repository.ConstructorRepository
+sun.reflect.generics.repository.MethodRepository
+sun.reflect.generics.tree.MethodTypeSignature
+com.fasterxml.jackson.databind.introspect.POJOPropertiesCollector$1
+sun.reflect.generics.scope.ConstructorScope
+sun.reflect.generics.tree.IntSignature
+sun.reflect.generics.tree.VoidDescriptor
+com.fasterxml.jackson.databind.ser.BeanSerializerBuilder
+com.fasterxml.jackson.annotation.JsonIgnoreType
+com.fasterxml.jackson.databind.annotation.JsonSerialize$Typing
+com.fasterxml.jackson.databind.annotation.JsonSerialize$Inclusion
+com.fasterxml.jackson.databind.util.Converter
+com.fasterxml.jackson.databind.util.Converter$None
+com.fasterxml.jackson.databind.JsonSerializer$None
+com.github.tomakehurst.wiremock.http.HttpHeadersJsonSerializer
+jdk.proxy2.$Proxy20
+com.fasterxml.jackson.databind.JsonDeserializer$None
+com.fasterxml.jackson.databind.KeyDeserializer$None
+com.github.tomakehurst.wiremock.http.HttpHeadersJsonDeserializer
+jdk.proxy2.$Proxy21
+com.fasterxml.jackson.databind.introspect.AnnotationCollector$TwoAnnotations
+com.fasterxml.jackson.annotation.JsonTypeInfo$Id
+com.fasterxml.jackson.annotation.JsonTypeInfo$As
+jdk.proxy2.$Proxy22
+com.fasterxml.jackson.annotation.JsonSubTypes
+com.fasterxml.jackson.annotation.JsonSubTypes$Type
+sun.reflect.annotation.AnnotationParser$$Lambda/0x00003fc0012bd290
+com.github.tomakehurst.wiremock.http.LogNormal
+jdk.proxy2.$Proxy23
+com.github.tomakehurst.wiremock.http.UniformDistribution
+com.github.tomakehurst.wiremock.http.FixedDelayDistribution
+jdk.proxy2.$Proxy24
+com.fasterxml.jackson.databind.ser.PropertyBuilder
+com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder$3
+com.fasterxml.jackson.annotation.JsonTypeId
+com.fasterxml.jackson.databind.BeanProperty$Std
+com.fasterxml.jackson.databind.ser.PropertyBuilder$1
+com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanPropertyWriter
+com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap
+com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap$Empty
+com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap$Single
+com.fasterxml.jackson.annotation.JsonTypeInfo$Value
+com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder
+com.fasterxml.jackson.databind.jsontype.TypeSerializer
+com.fasterxml.jackson.databind.jsontype.impl.TypeSerializerBase
+com.fasterxml.jackson.databind.jsontype.impl.AsDeductionTypeSerializer
+com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeSerializer
+com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeSerializer
+com.fasterxml.jackson.databind.jsontype.impl.AsWrapperTypeSerializer
+com.fasterxml.jackson.databind.jsontype.impl.AsExternalTypeSerializer
+com.fasterxml.jackson.databind.jsontype.impl.AsExistingPropertyTypeSerializer
+com.fasterxml.jackson.databind.jsontype.TypeDeserializer
+com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase
+com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer
+com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer
+com.fasterxml.jackson.databind.jsontype.impl.AsDeductionTypeDeserializer
+com.fasterxml.jackson.databind.jsontype.impl.AsWrapperTypeDeserializer
+com.fasterxml.jackson.databind.jsontype.impl.AsExternalTypeDeserializer
+com.fasterxml.jackson.databind.jsontype.TypeIdResolver
+com.fasterxml.jackson.databind.annotation.JsonTypeIdResolver
+com.fasterxml.jackson.databind.jsontype.NamedType
+com.fasterxml.jackson.annotation.JsonTypeName
+com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder$1
+com.fasterxml.jackson.databind.jsontype.impl.TypeIdResolverBase
+com.fasterxml.jackson.databind.jsontype.impl.TypeNameIdResolver
+com.fasterxml.jackson.databind.annotation.JsonAppend
+com.fasterxml.jackson.annotation.JsonFilter
+com.fasterxml.jackson.databind.ser.impl.BeanAsArraySerializer
+com.fasterxml.jackson.databind.ser.impl.UnwrappingBeanSerializer
+com.fasterxml.jackson.databind.ser.std.NumberSerializers$1
+com.fasterxml.jackson.databind.ser.AnyGetterWriter
+com.fasterxml.jackson.core.io.NumberOutput
+com.fasterxml.jackson.databind.annotation.NoClass
+com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap$SerializerAndMapResult
+com.fasterxml.jackson.databind.ser.impl.PropertySerializerMap$Double
+java.lang.String$$StringConcat/0x00003fc001390000
+java.lang.invoke.LambdaForm$DMH/0x00003fc001390400
+java.lang.invoke.LambdaForm$MH/0x00003fc001390800
+java.lang.invoke.LambdaForm$MH/0x00003fc001390c00
+java.lang.String$$StringConcat/0x00003fc001391000
+java.lang.invoke.LambdaForm$MH/0x00003fc001391400
+com.github.tomakehurst.wiremock.servlet.WireMockHandlerDispatchingServlet$ServletHttpResponder$$Lambda/0x00003fc00138e7c8
+java.io.PipedOutputStream
+org.eclipse.jetty.server.HttpOutput$2
+org.eclipse.jetty.server.handler.gzip.GzipHttpOutputInterceptor$1
+org.eclipse.jetty.util.Callback$Completing
+org.eclipse.jetty.util.Callback$Nested
+org.eclipse.jetty.server.HttpChannel$SendCallback
+org.eclipse.jetty.util.IteratingCallback$1
+org.eclipse.jetty.util.IteratingCallback$Action
+org.eclipse.jetty.http.HttpGenerator$1
+org.eclipse.jetty.http.HttpGenerator$Result
+org.eclipse.jetty.server.HttpConnection$1
+sun.nio.ch.IOVecWrapper
+sun.nio.ch.IOVecWrapper$1
+sun.nio.ch.NativeObject
+sun.nio.ch.AllocatedNativeObject
+sun.net.www.http.Hurryable
+sun.net.www.http.ChunkedInputStream
+org.eclipse.jetty.io.ArrayByteBufferPool$$Lambda/0x00003fc001394660
+sun.net.www.protocol.http.HttpURLConnection$HttpInputStream
+java.io.BufferedReader$1
+com.github.tomakehurst.wiremock.common.RequestCache
+com.github.tomakehurst.wiremock.common.RequestCache$1
+org.eclipse.jetty.server.HttpChannel$$Lambda/0x00003fc001394d00
+org.eclipse.jetty.server.HttpChannel$$Lambda/0x00003fc001394f30
+org.eclipse.jetty.util.Callback$3
+sun.net.www.http.KeepAliveCache$ClientVector
+org.eclipse.jetty.util.Attributes$Wrapper
+jdk.internal.event.ThreadSleepEvent
+sun.net.www.http.KeepAliveEntry
+org.eclipse.jetty.server.Authentication
+org.eclipse.jetty.server.Authentication$1
+org.eclipse.jetty.server.Authentication$2
+org.eclipse.jetty.server.Authentication$ResponseSent
+org.eclipse.jetty.server.Authentication$Challenge
+org.eclipse.jetty.server.Authentication$3
+org.eclipse.jetty.server.Authentication$Failure
+org.eclipse.jetty.server.Authentication$4
+org.eclipse.jetty.server.Authentication$SendSuccess
+org.eclipse.jetty.server.Authentication$5
+org.assertj.core.api.ObjectAssert
+org.assertj.core.api.ThrowableAssert$ThrowingCallable
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$$Lambda/0x00003fc001397600
+org.assertj.core.internal.Throwables
+org.assertj.core.internal.CommonValidations
+org.eclipse.jetty.util.Pool$1
+java.util.AbstractMap$SimpleEntry
+com.fasterxml.jackson.databind.util.internal.PrivateMaxEntriesMap$WriteThroughEntry
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$$Lambda/0x00003fc001392268
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$$Lambda/0x00003fc001392498
+java.lang.String$$StringConcat/0x00003fc001391800
+java.lang.invoke.LambdaForm$MH/0x00003fc001391c00
+org.assertj.core.api.ThrowingConsumer
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$$Lambda/0x00003fc001392ad0
+org.assertj.core.api.AbstractAssert$$Lambda/0x00003fc001392d30
+org.assertj.core.util.Preconditions
+org.assertj.core.api.AbstractAssert$$Lambda/0x00003fc001393198
+org.assertj.core.api.AbstractAssert$$Lambda/0x00003fc0013933e8
+org.assertj.core.api.AbstractAssert$$Lambda/0x00003fc001393640
+org.assertj.core.internal.WholeNumbers
+org.assertj.core.internal.Numbers
+org.assertj.core.internal.Integers
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$$Lambda/0x00003fc0013983b0
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClientTest$$Lambda/0x00003fc0013985e0
+com.github.tomakehurst.wiremock.jetty.JettyHttpServer$$Lambda/0x00003fc001398840
+org.eclipse.jetty.util.IO
+org.eclipse.jetty.util.IO$NullOS
+org.eclipse.jetty.util.IO$ClosedIS
+org.eclipse.jetty.util.IO$NullWrite
+org.eclipse.jetty.io.WriteFlusher$1
+org.eclipse.jetty.io.ManagedSelector$DestroyEndPoint
+org.eclipse.jetty.util.component.Graceful$$Lambda/0x00003fc001399928
+org.eclipse.jetty.util.component.Graceful$$Lambda/0x00003fc001399b70
+java.util.concurrent.CompletableFuture$AltResult
+java.util.concurrent.CompletableFuture$AsynchronousCompletionTask
+java.util.concurrent.CompletableFuture$Completion
+java.util.concurrent.ConcurrentHashMap$KeySpliterator
+org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory$HTTP2SessionContainer$$Lambda/0x00003fc001399d98
+org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory$HTTP2SessionContainer$$Lambda/0x00003fc001399fe8
+org.eclipse.jetty.http2.server.AbstractHTTP2ServerConnectionFactory$HTTP2SessionContainer$$Lambda/0x00003fc00139a210
+java.nio.channels.AsynchronousCloseException
+org.eclipse.jetty.util.component.Graceful$Shutdown$1
+java.util.concurrent.CompletableFuture$UniCompletion
+java.util.concurrent.CompletableFuture$BiCompletion
+java.util.concurrent.CompletableFuture$BiRelay
+org.eclipse.jetty.io.ManagedSelector$CloseConnections
+org.eclipse.jetty.io.ManagedSelector$StopSelector
+org.eclipse.jetty.servlet.BaseHolder$Wrapped
+org.eclipse.jetty.servlet.ServletHandler$$Lambda/0x00003fc00139b208
+org.eclipse.jetty.servlet.ServletHandler$$Lambda/0x00003fc00139b468
+java.util.EventObject
+jakarta.servlet.ServletContextEvent
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$$Lambda/0x00003fc00139b8f0
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$$Lambda/0x00003fc00139bb48
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$$Lambda/0x00003fc00139bd90
+org.eclipse.jetty.util.thread.ReservedThreadExecutor$$Lambda/0x00003fc00139bfe8
+java.util.IdentityHashMap$IdentityHashMapIterator
+java.util.IdentityHashMap$KeyIterator
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc00139c220
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc00139c450
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc00139c680
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc00139c8a8
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc00139cad8
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc00139cd38
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc00139cf68
+org.mockito.ArgumentMatchers
+org.mockito.Mockito
+org.mockito.ArgumentMatcher
+org.mockito.MockitoFramework
+org.mockito.session.MockitoSessionBuilder
+org.mockito.verification.VerificationMode
+org.mockito.stubbing.Answer
+org.mockito.verification.VerificationWithTimeout
+org.mockito.verification.VerificationAfterDelay
+org.mockito.internal.MockitoCore
+org.mockito.MockingDetails
+org.mockito.ScopedMock
+org.mockito.MockedStatic
+org.mockito.MockedConstruction
+org.mockito.exceptions.base.MockitoException
+org.mockito.exceptions.misusing.NotAMockException
+org.mockito.internal.verification.api.VerificationData
+org.mockito.stubbing.BaseStubber
+org.mockito.stubbing.Stubber
+org.mockito.InOrder
+org.mockito.exceptions.misusing.DoNotMockException
+org.mockito.internal.verification.api.VerificationDataInOrder
+org.mockito.stubbing.LenientStubber
+org.mockito.internal.configuration.plugins.Plugins
+org.mockito.plugins.MockitoPlugins
+org.mockito.internal.configuration.plugins.PluginRegistry
+org.mockito.plugins.PluginSwitch
+org.mockito.internal.configuration.plugins.PluginLoader
+org.mockito.internal.configuration.plugins.DefaultPluginSwitch
+org.mockito.internal.configuration.plugins.DefaultMockitoPlugins
+org.mockito.plugins.MockMaker
+org.mockito.plugins.StackTraceCleanerProvider
+org.mockito.plugins.InstantiatorProvider2
+org.mockito.plugins.AnnotationEngine
+org.mockito.plugins.MockitoLogger
+org.mockito.plugins.MemberAccessor
+org.mockito.plugins.DoNotMockEnforcerWithType
+org.mockito.internal.configuration.plugins.PluginInitializer
+org.mockito.internal.configuration.plugins.PluginFinder
+org.mockito.internal.util.collections.Iterables
+org.mockito.internal.creation.bytebuddy.ClassCreatingMockMaker
+org.mockito.plugins.InlineMockMaker
+org.mockito.creation.instance.Instantiator
+org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker
+org.mockito.creation.instance.InstantiationException
+org.mockito.plugins.MockMaker$ConstructionMockControl
+org.mockito.plugins.MockMaker$StaticMockControl
+org.mockito.exceptions.misusing.MockitoConfigurationException
+org.mockito.plugins.MockMaker$TypeMockability
+org.mockito.exceptions.base.MockitoInitializationException
+org.mockito.internal.creation.bytebuddy.BytecodeGenerator
+org.mockito.internal.PremainAttachAccess
+org.mockito.internal.PremainAttach
+java.lang.instrument.Instrumentation
+net.bytebuddy.agent.Installer
+java.lang.invoke.WrongMethodTypeException
+net.bytebuddy.ClassFileVersion
+net.bytebuddy.ClassFileVersion$VersionLocator$Resolver
+net.bytebuddy.ClassFileVersion$VersionLocator
+net.bytebuddy.ClassFileVersion$VersionLocator$Resolved
+org.mockito.internal.PremainAttachAccess$$Lambda/0x00003fc0013a5760
+net.bytebuddy.agent.ByteBuddyAgent
+net.bytebuddy.agent.ByteBuddyAgent$ProcessProvider
+net.bytebuddy.agent.ByteBuddyAgent$AgentProvider
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentTypeEvaluator$InstallationAction
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentTypeEvaluator
+java.lang.invoke.LambdaForm$MH/0x00003fc0013a8000
+java.lang.invoke.LambdaForm$MH/0x00003fc0013a8400
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentTypeEvaluator$ForJava9CapableVm
+java.lang.ProcessHandle
+java.lang.ProcessHandle$Info
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Compound
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Accessor
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$ForModularizedVm
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$ForJ9Vm
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$ForStandardToolsJarVm
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$ForUserDefinedToolsJar
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$ForEmulatedAttachment
+net.bytebuddy.agent.ByteBuddyAgent$ProcessProvider$ForCurrentVm
+net.bytebuddy.agent.ByteBuddyAgent$ProcessProvider$ForCurrentVm$ForJava9CapableVm
+java.lang.invoke.LambdaForm$MH/0x00003fc0013a8800
+java.lang.invoke.LambdaForm$MH/0x00003fc0013a8c00
+java.lang.ProcessHandleImpl
+java.lang.invoke.LambdaForm$DMH/0x00003fc0013a9000
+java.lang.invoke.LambdaForm$DMH/0x00003fc0013a9400
+java.lang.ProcessHandleImpl$$Lambda/0x00003fc0013c2810
+java.lang.invoke.LambdaForm$DMH/0x00003fc0013a9800
+net.bytebuddy.agent.ByteBuddyAgent$AgentProvider$ForByteBuddyAgent
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Accessor$Simple
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Accessor$Simple$WithExternalAttachment
+com.sun.tools.attach.VirtualMachine
+net.bytebuddy.agent.ByteBuddyAgent$AttachmentProvider$Accessor$ExternalAttachment
+java.util.zip.ZipInputStream
+java.util.jar.JarInputStream
+java.io.PushbackInputStream
+sun.security.util.ManifestEntryVerifier
+net.bytebuddy.agent.Attacher
+java.lang.ProcessBuilder
+java.lang.ProcessImpl$1
+java.lang.ProcessImpl$ProcessPipeOutputStream
+java.lang.Process$PipeOutputStream
+java.lang.ProcessImpl$ProcessPipeInputStream
+java.lang.Process$PipeInputStream
+java.lang.ProcessHandleImpl$ExitCompletion
+java.lang.ProcessHandleImpl$1
+java.lang.ProcessImpl$$Lambda/0x00003fc0013c4f60
+java.util.concurrent.CompletableFuture$UniHandle
+jdk.internal.event.ProcessStartEvent
+sun.instrument.InstrumentationImpl
+sun.instrument.TransformerManager
+sun.instrument.TransformerManager$TransformerInfo
+java.lang.invoke.LambdaForm$MH/0x00003fc0013a9c00
+java.lang.invoke.LambdaForm$MH/0x00003fc0013aa000
+java.lang.invoke.LambdaForm$MH/0x00003fc0013aa400
+java.lang.invoke.LambdaForm$MH/0x00003fc0013aa800
+java.lang.ProcessBuilder$NullInputStream
+java.io.FileOutputStream$1
+java.lang.ProcessBuilder$NullOutputStream
+java.io.File$TempDirectory
+java.io.DeleteOnExitHook
+java.io.DeleteOnExitHook$1
+java.util.zip.DeflaterOutputStream
+java.util.zip.ZipOutputStream
+java.util.jar.JarOutputStream
+java.util.zip.Deflater
+java.util.zip.Deflater$DeflaterZStreamRef
+java.time.zone.ZoneRulesProvider
+java.time.zone.TzdbZoneRulesProvider
+java.time.zone.Ser
+java.time.Month
+java.time.DayOfWeek
+java.time.zone.ZoneOffsetTransitionRule$TimeDefinition
+java.time.temporal.TemporalAdjusters
+java.lang.invoke.LambdaForm$DMH/0x00003fc0013aac00
+java.time.temporal.TemporalAdjusters$$Lambda/0x00003fc0013c9658
+java.time.LocalDate$1
+java.util.zip.ZipOutputStream$XEntry
+[1.149s][info][class,load] opened: /private/var/folders/zz/xy240ptn7ws8sdz8lpnjx0qm0000gq/T/mockitoboot2998279650633806747.jar
+java.io.RandomAccessFile$1
+org.mockito.internal.creation.bytebuddy.inject.MockMethodDispatcher
+org.mockito.internal.util.concurrent.WeakConcurrentMap
+org.mockito.internal.util.concurrent.DetachedThreadLocal
+org.mockito.internal.util.concurrent.DetachedThreadLocal$1
+org.mockito.internal.util.concurrent.WeakConcurrentMap$WithInlinedExpunction
+org.mockito.internal.util.concurrent.DetachedThreadLocal$2
+org.mockito.internal.util.concurrent.DetachedThreadLocal$Cleaner
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker$$Lambda/0x00003fc0013af5e0
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker$$Lambda/0x00003fc0013af808
+org.mockito.internal.creation.bytebuddy.StackWalkerChecker
+java.lang.invoke.LambdaForm$DMH/0x00003fc0013ab000
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker$$Lambda/0x00003fc0013afca0
+org.mockito.internal.creation.bytebuddy.ConstructionCallback
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker$$Lambda/0x00003fc0013aba08
+org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator
+net.bytebuddy.matcher.ElementMatcher
+net.bytebuddy.TypeCache
+net.bytebuddy.TypeCache$WithInlineExpunction
+java.lang.instrument.ClassFileTransformer
+org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator
+java.lang.instrument.UnmodifiableClassException
+net.bytebuddy.implementation.Implementation$Context$Factory
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler
+net.bytebuddy.dynamic.scaffold.InstrumentedType$Prepareable
+net.bytebuddy.implementation.Implementation
+net.bytebuddy.asm.AsmVisitorWrapper
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice
+net.bytebuddy.ByteBuddy
+net.bytebuddy.dynamic.DynamicType$Builder
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy
+net.bytebuddy.matcher.FilterableList
+net.bytebuddy.description.type.TypeList$Generic
+net.bytebuddy.description.NamedElement
+net.bytebuddy.description.ModifierReviewable
+net.bytebuddy.description.ModifierReviewable$OfByteCodeElement
+net.bytebuddy.description.ModifierReviewable$OfAbstraction
+net.bytebuddy.description.ModifierReviewable$OfEnumeration
+net.bytebuddy.description.ModifierReviewable$ForTypeDefinition
+net.bytebuddy.description.type.TypeDefinition
+net.bytebuddy.description.NamedElement$WithRuntimeName
+net.bytebuddy.description.NamedElement$WithDescriptor
+net.bytebuddy.description.DeclaredByType
+net.bytebuddy.description.annotation.AnnotationSource
+net.bytebuddy.description.ByteCodeElement
+net.bytebuddy.description.TypeVariableSource
+net.bytebuddy.description.type.TypeDescription
+net.bytebuddy.description.type.PackageDescription
+net.bytebuddy.utility.AsmClassWriter$Factory
+net.bytebuddy.NamingStrategy
+net.bytebuddy.implementation.auxiliary.AuxiliaryType$NamingStrategy
+net.bytebuddy.matcher.LatentMatcher
+net.bytebuddy.utility.AsmClassReader$Factory
+net.bytebuddy.dynamic.VisibilityBridgeStrategy
+net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory
+net.bytebuddy.implementation.attribute.AnnotationValueFilter$Factory
+net.bytebuddy.NamingStrategy$Suffixing$BaseNameResolver
+net.bytebuddy.utility.privilege.GetSystemPropertyAction
+net.bytebuddy.dynamic.scaffold.TypeValidation
+net.bytebuddy.utility.GraalImageCode
+net.bytebuddy.NamingStrategy$AbstractBase
+net.bytebuddy.NamingStrategy$Suffixing
+net.bytebuddy.NamingStrategy$SuffixingRandom
+net.bytebuddy.NamingStrategy$Suffixing$BaseNameResolver$ForUnnamedType
+net.bytebuddy.utility.RandomString
+net.bytebuddy.implementation.auxiliary.AuxiliaryType$NamingStrategy$SuffixingRandom
+net.bytebuddy.implementation.attribute.AnnotationValueFilter
+net.bytebuddy.implementation.attribute.AnnotationValueFilter$Default
+net.bytebuddy.implementation.attribute.AnnotationValueFilter$Default$1
+net.bytebuddy.implementation.attribute.AnnotationValueFilter$Default$2
+net.bytebuddy.implementation.attribute.AnnotationRetention
+net.bytebuddy.implementation.Implementation$Context$Default$Factory
+net.bytebuddy.implementation.MethodAccessorFactory
+net.bytebuddy.implementation.Implementation$Context
+net.bytebuddy.implementation.Implementation$Context$ExtractableView
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$AbstractBase
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Merger
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Harmonizer
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor
+net.bytebuddy.dynamic.scaffold.MethodGraph
+net.bytebuddy.dynamic.scaffold.MethodGraph$Linked
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Harmonizer$ForJavaMethod
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Merger$Directional
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Reifying
+net.bytebuddy.description.type.TypeDescription$Generic
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Reifying$1
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Reifying$2
+net.bytebuddy.matcher.ElementMatchers
+net.bytebuddy.matcher.ElementMatcher$Junction
+net.bytebuddy.description.ModifierReviewable$ForMethodDescription
+net.bytebuddy.description.DeclaredByType$WithMandatoryDeclaration
+net.bytebuddy.description.NamedElement$WithGenericName
+net.bytebuddy.description.ByteCodeElement$Member
+net.bytebuddy.description.ByteCodeElement$TypeDependant
+net.bytebuddy.description.method.MethodDescription
+net.bytebuddy.description.method.MethodDescription$InDefinedShape
+net.bytebuddy.description.ModifierReviewable$ForFieldDescription
+net.bytebuddy.description.field.FieldDescription
+net.bytebuddy.description.field.FieldDescription$InDefinedShape
+net.bytebuddy.matcher.ElementMatcher$Junction$AbstractBase
+net.bytebuddy.matcher.BooleanMatcher
+net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default
+net.bytebuddy.implementation.LoadedTypeInitializer
+net.bytebuddy.implementation.bytecode.ByteCodeAppender
+net.bytebuddy.dynamic.scaffold.TypeInitializer
+net.bytebuddy.dynamic.scaffold.InstrumentedType
+net.bytebuddy.dynamic.scaffold.InstrumentedType$WithFlexibleName
+net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default$1
+net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default$2
+net.bytebuddy.dynamic.VisibilityBridgeStrategy$Default
+net.bytebuddy.dynamic.VisibilityBridgeStrategy$Default$1
+net.bytebuddy.dynamic.VisibilityBridgeStrategy$Default$2
+net.bytebuddy.dynamic.VisibilityBridgeStrategy$Default$3
+net.bytebuddy.utility.AsmClassReader$Factory$Default
+net.bytebuddy.utility.AsmClassReader$Factory$Default$1
+net.bytebuddy.utility.AsmClassReader$Factory$Default$2
+net.bytebuddy.utility.AsmClassReader$Factory$Default$3
+net.bytebuddy.utility.AsmClassReader$Factory$Default$4
+net.bytebuddy.utility.AsmClassReader$Factory$Default$5
+net.bytebuddy.utility.AsmClassReader
+net.bytebuddy.utility.AsmClassWriter$Factory$Default
+net.bytebuddy.utility.AsmClassWriter$Factory$Default$1
+net.bytebuddy.utility.AsmClassWriter$Factory$Default$2
+net.bytebuddy.utility.AsmClassWriter$Factory$Default$3
+net.bytebuddy.utility.AsmClassWriter$Factory$Default$4
+net.bytebuddy.utility.AsmClassWriter$Factory$Default$5
+net.bytebuddy.pool.TypePool
+net.bytebuddy.jar.asm.ClassVisitor
+net.bytebuddy.jar.asm.ClassWriter
+net.bytebuddy.utility.AsmClassWriter$FrameComputingClassWriter
+net.bytebuddy.utility.AsmClassWriter
+net.bytebuddy.jar.asmjdkbridge.JdkClassReader
+net.bytebuddy.jar.asm.Attribute
+net.bytebuddy.jar.asmjdkbridge.AsmWrappedAttribute
+net.bytebuddy.jar.asmjdkbridge.AsmWrappedAttribute$AsmSourceIdAttribute
+net.bytebuddy.jar.asmjdkbridge.AsmWrappedAttribute$AsmCompilationIdAttribute
+net.bytebuddy.jar.asmjdkbridge.AsmWrappedAttribute$AsmModuleResolutionAttribute
+net.bytebuddy.jar.asmjdkbridge.AsmWrappedAttribute$AsmModuleHashesAttribute
+java.lang.MatchException
+net.bytebuddy.matcher.LatentMatcher$Resolved
+net.bytebuddy.matcher.ModifierMatcher$Mode
+net.bytebuddy.matcher.ElementMatcher$Junction$ForNonNullValues
+net.bytebuddy.matcher.ModifierMatcher
+net.bytebuddy.matcher.NameMatcher
+net.bytebuddy.matcher.StringMatcher
+net.bytebuddy.matcher.StringMatcher$Mode
+net.bytebuddy.matcher.StringMatcher$Mode$1
+net.bytebuddy.matcher.StringMatcher$Mode$2
+net.bytebuddy.matcher.StringMatcher$Mode$3
+net.bytebuddy.matcher.StringMatcher$Mode$4
+net.bytebuddy.matcher.StringMatcher$Mode$5
+net.bytebuddy.matcher.StringMatcher$Mode$6
+net.bytebuddy.matcher.StringMatcher$Mode$7
+net.bytebuddy.matcher.StringMatcher$Mode$8
+net.bytebuddy.matcher.StringMatcher$Mode$9
+net.bytebuddy.matcher.MethodParametersMatcher
+net.bytebuddy.matcher.CollectionSizeMatcher
+net.bytebuddy.matcher.ElementMatcher$Junction$Conjunction
+net.bytebuddy.description.ModifierReviewable$ForParameterDescription
+net.bytebuddy.description.ModifierReviewable$AbstractBase
+net.bytebuddy.description.TypeVariableSource$AbstractBase
+net.bytebuddy.description.type.TypeDescription$AbstractBase
+net.bytebuddy.description.type.TypeDescription$ForLoadedType
+net.bytebuddy.description.annotation.AnnotationList
+java.lang.ClassFormatError
+java.lang.reflect.GenericSignatureFormatError
+net.bytebuddy.description.type.TypeList
+net.bytebuddy.matcher.FilterableList$Empty
+net.bytebuddy.description.type.TypeList$Empty
+net.bytebuddy.matcher.FilterableList$AbstractBase
+net.bytebuddy.description.type.TypeList$AbstractBase
+net.bytebuddy.description.type.TypeList$ForLoadedTypes
+net.bytebuddy.description.field.FieldList
+net.bytebuddy.description.type.RecordComponentList
+net.bytebuddy.description.type.RecordComponentList$Empty
+net.bytebuddy.description.type.RecordComponentList$AbstractBase
+net.bytebuddy.description.type.RecordComponentList$ForLoadedRecordComponents
+net.bytebuddy.description.method.MethodList
+net.bytebuddy.description.type.TypeDescription$ForLoadedType$Dispatcher
+net.bytebuddy.utility.dispatcher.JavaDispatcher
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Dispatcher
+net.bytebuddy.utility.dispatcher.JavaDispatcher$DynamicClassLoader$Resolver$CreationAction
+net.bytebuddy.utility.dispatcher.JavaDispatcher$DynamicClassLoader$Resolver
+net.bytebuddy.utility.dispatcher.JavaDispatcher$DynamicClassLoader$Resolver$ForModuleSystem
+net.bytebuddy.utility.dispatcher.JavaDispatcher$InvokerCreationAction
+net.bytebuddy.utility.dispatcher.JavaDispatcher$DynamicClassLoader
+net.bytebuddy.utility.Invoker
+net.bytebuddy.jar.asm.AnnotationVisitor
+net.bytebuddy.jar.asm.AnnotationWriter
+net.bytebuddy.jar.asm.ModuleVisitor
+net.bytebuddy.jar.asm.ModuleWriter
+net.bytebuddy.jar.asm.RecordComponentVisitor
+net.bytebuddy.jar.asm.RecordComponentWriter
+net.bytebuddy.jar.asm.FieldVisitor
+net.bytebuddy.jar.asm.FieldWriter
+net.bytebuddy.jar.asm.MethodVisitor
+net.bytebuddy.jar.asm.MethodWriter
+java.lang.TypeNotPresentException
+net.bytebuddy.jar.asm.ClassTooLargeException
+net.bytebuddy.jar.asm.SymbolTable
+net.bytebuddy.jar.asm.Symbol
+net.bytebuddy.jar.asm.SymbolTable$Entry
+net.bytebuddy.jar.asm.ByteVector
+net.bytebuddy.jar.asm.Type
+net.bytebuddy.utility.MethodComparator
+net.bytebuddy.jar.asm.MethodTooLargeException
+net.bytebuddy.jar.asm.Frame
+net.bytebuddy.jar.asm.CurrentFrame
+net.bytebuddy.jar.asm.Handler
+java.lang.invoke.LambdaForm$MH/0x00003fc001414000
+java.lang.invoke.LambdaForm$MH/0x00003fc001414400
+java.lang.invoke.BoundMethodHandle$Species_LLLL
+java.lang.invoke.LambdaForm$MH/0x00003fc001414800
+net.bytebuddy.utility.Invoker$Dispatcher
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Proxied
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Defaults
+jdk.proxy2.$Proxy25
+jdk.proxy2.$Proxy26
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Instance
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Container
+net.bytebuddy.utility.dispatcher.JavaDispatcher$IsStatic
+net.bytebuddy.utility.dispatcher.JavaDispatcher$IsConstructor
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Dispatcher$ForNonStaticMethod
+net.bytebuddy.utility.nullability.MaybeNull
+jdk.proxy2.$Proxy27
+net.bytebuddy.utility.dispatcher.JavaDispatcher$ProxiedInvocationHandler
+net.bytebuddy.description.type.$Proxy28
+net.bytebuddy.dynamic.TargetType
+net.bytebuddy.matcher.EqualityMatcher
+net.bytebuddy.matcher.ErasureMatcher
+net.bytebuddy.matcher.MethodReturnTypeMatcher
+net.bytebuddy.matcher.DeclaringTypeMatcher
+net.bytebuddy.matcher.ElementMatcher$Junction$Disjunction
+net.bytebuddy.implementation.Implementation$Context$Disabled$Factory
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$ForDeclaredMethods
+net.bytebuddy.matcher.MethodSortMatcher$Sort
+net.bytebuddy.matcher.MethodSortMatcher$Sort$1
+net.bytebuddy.matcher.MethodSortMatcher$Sort$2
+net.bytebuddy.matcher.MethodSortMatcher$Sort$3
+net.bytebuddy.matcher.MethodSortMatcher$Sort$4
+net.bytebuddy.matcher.MethodSortMatcher$Sort$5
+net.bytebuddy.matcher.MethodSortMatcher
+net.bytebuddy.matcher.NegatingMatcher
+org.mockito.internal.util.concurrent.WeakConcurrentSet
+org.mockito.internal.util.concurrent.WeakConcurrentSet$Cleaner
+org.mockito.internal.creation.bytebuddy.SubclassBytecodeGenerator
+net.bytebuddy.implementation.attribute.MethodAttributeAppender$Factory
+net.bytebuddy.dynamic.loading.ClassLoadingStrategy
+org.mockito.internal.creation.bytebuddy.ModuleHandler
+org.mockito.internal.creation.bytebuddy.ModuleHandler$ModuleSystemFound
+org.mockito.internal.creation.bytebuddy.ModuleHandler$1
+org.mockito.internal.creation.bytebuddy.ModuleHandler$NoModuleSystemFound
+org.mockito.internal.creation.bytebuddy.ModuleHandler$2
+org.mockito.internal.creation.bytebuddy.ModuleHandler$3
+java.lang.instrument.ClassDefinition
+org.mockito.internal.creation.bytebuddy.ModuleHandler$MockitoMockClassLoader
+com.sun.proxy.jdk.proxy1.$Proxy29
+jdk.internal.vm.annotation.ForceInline
+com.sun.proxy.jdk.proxy1.$Proxy30
+net.bytebuddy.implementation.Implementation$Composable
+net.bytebuddy.implementation.MethodDelegation
+net.bytebuddy.implementation.bind.MethodDelegationBinder$Record
+net.bytebuddy.implementation.bind.MethodDelegationBinder$AmbiguityResolver
+net.bytebuddy.implementation.bind.MethodDelegationBinder$TerminationHandler
+net.bytebuddy.implementation.MethodDelegation$WithCustomProperties
+net.bytebuddy.dynamic.scaffold.FieldLocator$Factory
+net.bytebuddy.implementation.MethodDelegation$ImplementationDelegate
+net.bytebuddy.implementation.bind.MethodDelegationBinder$BindingResolver
+net.bytebuddy.implementation.bind.MethodDelegationBinder$AmbiguityResolver$Compound
+net.bytebuddy.implementation.bind.annotation.BindingPriority$Resolver
+net.bytebuddy.implementation.bind.annotation.BindingPriority
+net.bytebuddy.description.method.MethodList$AbstractBase
+net.bytebuddy.description.method.MethodList$ForLoadedMethods
+net.bytebuddy.description.method.MethodDescription$AbstractBase
+net.bytebuddy.description.method.MethodDescription$InDefinedShape$AbstractBase
+net.bytebuddy.description.method.MethodDescription$InDefinedShape$AbstractBase$ForLoadedExecutable
+net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$ParameterAnnotationSource
+net.bytebuddy.description.method.MethodDescription$ForLoadedConstructor
+net.bytebuddy.description.method.MethodDescription$ForLoadedMethod
+net.bytebuddy.utility.ConstructorComparator
+net.bytebuddy.description.ByteCodeElement$Token
+net.bytebuddy.description.method.MethodDescription$InDefinedShape$AbstractBase$Executable
+net.bytebuddy.description.method.$Proxy31
+net.bytebuddy.implementation.bind.DeclaringTypeResolver
+net.bytebuddy.implementation.bind.ArgumentTypeResolver
+net.bytebuddy.implementation.bind.MethodNameEqualityResolver
+net.bytebuddy.implementation.bind.ParameterLengthResolver
+net.bytebuddy.implementation.bind.MethodDelegationBinder$AmbiguityResolver$NoOp
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$ParameterBinder
+net.bytebuddy.implementation.bind.annotation.Argument$Binder
+net.bytebuddy.implementation.bytecode.StackManipulation
+net.bytebuddy.implementation.bind.MethodDelegationBinder$ParameterBinding
+net.bytebuddy.implementation.bind.annotation.Argument
+net.bytebuddy.implementation.bind.annotation.Argument$BindingMechanic
+net.bytebuddy.description.method.MethodList$Explicit
+net.bytebuddy.implementation.bind.annotation.AllArguments$Binder
+net.bytebuddy.implementation.bind.annotation.AllArguments
+net.bytebuddy.implementation.bind.annotation.AllArguments$Assignment
+net.bytebuddy.implementation.bind.annotation.Origin$Binder
+net.bytebuddy.implementation.bind.annotation.Origin
+net.bytebuddy.implementation.bind.annotation.This$Binder
+net.bytebuddy.implementation.bind.annotation.This
+net.bytebuddy.implementation.bind.annotation.Super$Binder
+net.bytebuddy.implementation.bind.annotation.Super
+net.bytebuddy.implementation.bind.annotation.Super$Instantiation
+net.bytebuddy.implementation.bind.annotation.Default$Binder
+net.bytebuddy.implementation.bind.annotation.Default
+net.bytebuddy.implementation.bind.annotation.SuperCall$Binder
+net.bytebuddy.implementation.bind.annotation.SuperCall
+net.bytebuddy.implementation.bind.annotation.SuperCallHandle$Binder
+net.bytebuddy.implementation.bind.annotation.SuperCallHandle
+net.bytebuddy.implementation.bind.annotation.DefaultCall$Binder
+net.bytebuddy.implementation.bind.annotation.DefaultCall$Binder$DefaultMethodLocator
+net.bytebuddy.implementation.bind.annotation.DefaultCall
+net.bytebuddy.implementation.bind.annotation.DefaultCallHandle$Binder
+net.bytebuddy.implementation.bind.annotation.DefaultCallHandle$Binder$DefaultMethodLocator
+net.bytebuddy.implementation.bind.annotation.DefaultCallHandle
+net.bytebuddy.implementation.bind.annotation.SuperMethod$Binder
+net.bytebuddy.implementation.bind.annotation.SuperMethod
+net.bytebuddy.implementation.bind.annotation.SuperMethodHandle$Binder
+net.bytebuddy.implementation.bind.annotation.SuperMethodHandle
+net.bytebuddy.implementation.bind.annotation.Handle$Binder
+net.bytebuddy.utility.ConstantValue
+net.bytebuddy.utility.JavaConstant
+net.bytebuddy.implementation.bind.annotation.Handle
+net.bytebuddy.utility.JavaConstant$MethodHandle$HandleType
+net.bytebuddy.implementation.bind.annotation.DynamicConstant$Binder
+net.bytebuddy.implementation.bind.annotation.DynamicConstant
+net.bytebuddy.implementation.bind.annotation.DefaultMethod$Binder
+net.bytebuddy.implementation.bind.annotation.DefaultMethod$Binder$MethodLocator
+net.bytebuddy.implementation.bind.annotation.DefaultMethod
+net.bytebuddy.implementation.bind.annotation.DefaultMethodHandle$Binder
+net.bytebuddy.implementation.bind.annotation.DefaultMethodHandle$Binder$MethodLocator
+net.bytebuddy.implementation.bind.annotation.DefaultMethodHandle
+net.bytebuddy.implementation.bind.annotation.FieldValue$Binder
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$ParameterBinder$ForFieldBinding
+net.bytebuddy.implementation.bind.annotation.FieldValue$Binder$Delegate
+net.bytebuddy.dynamic.scaffold.FieldLocator
+net.bytebuddy.dynamic.scaffold.FieldLocator$AbstractBase
+net.bytebuddy.dynamic.scaffold.FieldLocator$ForClassHierarchy
+net.bytebuddy.dynamic.scaffold.FieldLocator$ForExactType
+net.bytebuddy.implementation.bind.annotation.FieldValue
+net.bytebuddy.implementation.bind.annotation.FieldGetterHandle$Binder
+net.bytebuddy.implementation.bind.annotation.FieldGetterHandle$Binder$Delegate
+net.bytebuddy.implementation.bind.annotation.FieldGetterHandle
+net.bytebuddy.implementation.bind.annotation.FieldSetterHandle$Binder
+net.bytebuddy.implementation.bind.annotation.FieldSetterHandle$Binder$Delegate
+net.bytebuddy.implementation.bind.annotation.FieldSetterHandle
+net.bytebuddy.implementation.bind.annotation.StubValue$Binder
+net.bytebuddy.implementation.bind.annotation.Empty$Binder
+net.bytebuddy.implementation.bind.MethodDelegationBinder$BindingResolver$Default
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$Identifier
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$ParameterBinder$ForFixedValue
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$ParameterBinder$ForFixedValue$OfConstant
+net.bytebuddy.utility.CompoundList
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ForReadObject
+org.mockito.internal.creation.bytebuddy.access.MockAccess
+net.bytebuddy.implementation.bind.MethodDelegationBinder
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$DelegationProcessor
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$DelegationProcessor$Handler
+net.bytebuddy.implementation.bind.annotation.StubValue
+net.bytebuddy.implementation.bind.annotation.Empty
+net.bytebuddy.implementation.MethodDelegation$ImplementationDelegate$ForStaticMethod
+net.bytebuddy.implementation.MethodDelegation$ImplementationDelegate$Compiled
+net.bytebuddy.implementation.bind.annotation.IgnoreForBinding$Verifier
+net.bytebuddy.description.annotation.AnnotationList$AbstractBase
+net.bytebuddy.description.annotation.AnnotationList$ForLoadedAnnotations
+net.bytebuddy.description.annotation.AnnotationDescription
+net.bytebuddy.implementation.bind.annotation.IgnoreForBinding
+net.bytebuddy.description.method.ParameterList
+net.bytebuddy.description.method.ParameterList$AbstractBase
+net.bytebuddy.description.method.ParameterList$ForLoadedExecutable
+net.bytebuddy.description.method.ParameterList$ForLoadedExecutable$OfMethod
+net.bytebuddy.description.method.ParameterList$ForLoadedExecutable$OfLegacyVmMethod
+net.bytebuddy.description.method.ParameterList$ForLoadedExecutable$OfConstructor
+net.bytebuddy.description.method.ParameterList$ForLoadedExecutable$OfLegacyVmConstructor
+net.bytebuddy.description.method.ParameterList$ForLoadedExecutable$Executable
+jdk.proxy2.$Proxy32
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Dispatcher$ForInstanceCheck
+net.bytebuddy.description.method.$Proxy33
+net.bytebuddy.description.NamedElement$WithOptionalName
+net.bytebuddy.description.method.ParameterDescription
+net.bytebuddy.description.method.ParameterDescription$InDefinedShape
+net.bytebuddy.description.method.ParameterDescription$AbstractBase
+net.bytebuddy.description.method.ParameterDescription$InDefinedShape$AbstractBase
+net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter
+net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$OfMethod
+net.bytebuddy.description.method.ParameterDescription$ForLoadedParameter$Parameter
+net.bytebuddy.description.method.$Proxy34
+net.bytebuddy.implementation.bind.annotation.RuntimeType$Verifier
+org.mockito.internal.creation.bytebuddy.$Proxy35
+jdk.proxy2.$Proxy36
+net.bytebuddy.implementation.bind.annotation.Argument$BindingMechanic$1
+net.bytebuddy.implementation.bind.annotation.Argument$BindingMechanic$2
+jdk.proxy2.$Proxy37
+net.bytebuddy.implementation.bind.annotation.RuntimeType
+net.bytebuddy.description.annotation.AnnotationDescription$Loadable
+net.bytebuddy.description.annotation.AnnotationDescription$AbstractBase
+net.bytebuddy.description.annotation.AnnotationDescription$ForLoadedAnnotation
+net.bytebuddy.description.enumeration.EnumerationDescription
+net.bytebuddy.description.annotation.AnnotationValue
+net.bytebuddy.description.type.TypeDefinition$Sort
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader
+net.bytebuddy.description.type.TypeDefinition$Sort$AnnotatedType
+net.bytebuddy.description.type.$Proxy38
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$NoOp
+net.bytebuddy.description.type.TypeDescription$Generic$AbstractBase
+net.bytebuddy.description.type.TypeDescription$Generic$OfNonGenericType
+net.bytebuddy.description.type.TypeDescription$Generic$OfNonGenericType$ForLoadedType
+net.bytebuddy.implementation.bytecode.assign.Assigner$Typing
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$DelegationProcessor$Handler$Unbound
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$DelegationProcessor$Handler$Bound
+net.bytebuddy.implementation.bind.annotation.TargetMethodAnnotationDrivenBinder$Record
+net.bytebuddy.implementation.bind.MethodDelegationBinder$MethodBinding
+net.bytebuddy.implementation.bind.MethodDelegationBinder$TerminationHandler$Default
+net.bytebuddy.implementation.bind.MethodDelegationBinder$TerminationHandler$Default$1
+net.bytebuddy.implementation.bind.MethodDelegationBinder$TerminationHandler$Default$2
+net.bytebuddy.implementation.bytecode.assign.Assigner
+net.bytebuddy.implementation.bytecode.assign.primitive.VoidAwareAssigner
+net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveTypeAwareAssigner
+net.bytebuddy.implementation.bytecode.assign.reference.ReferenceTypeAwareAssigner
+net.bytebuddy.implementation.bytecode.StackManipulation$Trivial
+net.bytebuddy.implementation.bytecode.StackManipulation$Illegal
+net.bytebuddy.implementation.bytecode.assign.reference.GenericTypeAwareAssigner
+org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$DispatcherDefaultingToRealMethod
+org.mockito.internal.invocation.RealMethod
+org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor
+jdk.proxy2.$Proxy39
+jdk.proxy2.$Proxy40
+jdk.proxy2.$Proxy41
+jdk.proxy2.$Proxy42
+jdk.proxy2.$Proxy43
+jdk.proxy2.$Proxy44
+jdk.proxy2.$Proxy45
+org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$ForHashCode
+org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$ForEquals
+org.mockito.internal.creation.bytebuddy.access.MockMethodInterceptor$ForWriteReplace
+net.bytebuddy.TypeCache$Sort
+net.bytebuddy.TypeCache$Sort$1
+net.bytebuddy.TypeCache$Sort$2
+net.bytebuddy.TypeCache$Sort$3
+org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$TypeCachingLock
+net.bytebuddy.asm.AsmVisitorWrapper$ForDeclaredMethods
+net.bytebuddy.asm.AsmVisitorWrapper$ForDeclaredMethods$DispatchingVisitor
+net.bytebuddy.matcher.CollectionOneToOneMatcher
+net.bytebuddy.matcher.CollectionErasureMatcher
+net.bytebuddy.matcher.MethodParameterTypesMatcher
+net.bytebuddy.matcher.AnnotationTypeMatcher
+net.bytebuddy.matcher.DeclaringAnnotationMatcher
+net.bytebuddy.matcher.CollectionItemMatcher
+net.bytebuddy.asm.AsmVisitorWrapper$ForDeclaredMethods$MethodVisitorWrapper
+net.bytebuddy.asm.Advice
+net.bytebuddy.utility.visitor.ExceptionTableSensitiveMethodVisitor
+net.bytebuddy.utility.visitor.LineNumberPrependingMethodVisitor
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$Relocation
+net.bytebuddy.asm.Advice$AdviceVisitor
+net.bytebuddy.asm.Advice$AdviceVisitor$WithoutExitAdvice
+net.bytebuddy.asm.Advice$AdviceVisitor$WithExitAdvice
+net.bytebuddy.asm.Advice$AdviceVisitor$WithExitAdvice$WithoutExceptionHandling
+net.bytebuddy.asm.Advice$AdviceVisitor$WithExitAdvice$WithExceptionHandling
+net.bytebuddy.asm.Advice$ExceptionHandler
+net.bytebuddy.asm.Advice$Dispatcher
+net.bytebuddy.asm.Advice$Dispatcher$Unresolved
+net.bytebuddy.asm.Advice$Delegator$Factory
+net.bytebuddy.asm.Advice$PostProcessor$Factory
+net.bytebuddy.dynamic.ClassFileLocator
+net.bytebuddy.asm.Advice$OnMethodEnter
+net.bytebuddy.asm.Advice$OnMethodExit
+net.bytebuddy.asm.Advice$WithCustomMapping
+net.bytebuddy.asm.Advice$OffsetMapping$Factory
+net.bytebuddy.asm.Advice$BootstrapArgumentResolver$Factory
+net.bytebuddy.asm.Advice$PostProcessor
+net.bytebuddy.asm.Advice$PostProcessor$NoOp
+net.bytebuddy.asm.Advice$Delegator$ForRegularInvocation$Factory
+net.bytebuddy.asm.Advice$Delegator
+net.bytebuddy.asm.Advice$OffsetMapping$ForStackManipulation$Factory
+net.bytebuddy.asm.Advice$OffsetMapping
+net.bytebuddy.utility.ConstantValue$Simple
+net.bytebuddy.utility.JavaConstant$Simple
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher
+jdk.proxy2.$Proxy46
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Dispatcher$ForContainerCreation
+net.bytebuddy.utility.$Proxy47
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfClassDesc
+jdk.proxy2.$Proxy48
+net.bytebuddy.utility.dispatcher.JavaDispatcher$Dispatcher$ForStaticMethod
+jdk.proxy2.$Proxy49
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfMethodTypeDesc
+jdk.proxy2.$Proxy50
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfMethodHandleDesc
+jdk.proxy2.$Proxy51
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfDirectMethodHandleDesc
+jdk.proxy2.$Proxy52
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfDirectMethodHandleDesc$ForKind
+jdk.proxy2.$Proxy53
+net.bytebuddy.utility.JavaConstant$Simple$Dispatcher$OfDynamicConstantDesc
+jdk.proxy2.$Proxy54
+net.bytebuddy.utility.JavaConstant$Simple$OfTrivialValue
+net.bytebuddy.utility.JavaConstant$Simple$OfTrivialValue$ForString
+net.bytebuddy.implementation.bytecode.StackManipulation$AbstractBase
+net.bytebuddy.implementation.bytecode.constant.TextConstant
+net.bytebuddy.dynamic.ClassFileLocator$ForClassLoader
+net.bytebuddy.dynamic.ClassFileLocator$Resolution
+net.bytebuddy.dynamic.ClassFileLocator$ForClassLoader$BootLoaderProxyCreationAction
+net.bytebuddy.asm.Advice$Dispatcher$Resolved
+net.bytebuddy.asm.Advice$Dispatcher$Resolved$ForMethodEnter
+net.bytebuddy.asm.Advice$Dispatcher$Resolved$ForMethodExit
+net.bytebuddy.asm.Advice$Dispatcher$Bound
+net.bytebuddy.asm.Advice$Dispatcher$Inactive
+net.bytebuddy.asm.Advice$NoExceptionHandler
+jdk.proxy2.$Proxy55
+net.bytebuddy.description.annotation.AnnotationValue$AbstractBase
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant
+net.bytebuddy.description.annotation.AnnotationValue$Loaded
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$1
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$2
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$3
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$4
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$5
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$6
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$7
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$8
+net.bytebuddy.description.annotation.AnnotationValue$ForConstant$PropertyDelegate$ForNonArrayType$9
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$WithEagerNavigation
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$WithEagerNavigation$OfAnnotatedElement
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$ForLoadedReturnType
+net.bytebuddy.asm.Advice$Dispatcher$Inlining
+net.bytebuddy.asm.Advice$Return
+jdk.proxy2.$Proxy56
+net.bytebuddy.asm.Advice$Enter
+jdk.proxy2.$Proxy57
+net.bytebuddy.asm.Advice$Local
+net.bytebuddy.asm.Advice$OnNonDefaultValue
+jdk.proxy2.$Proxy58
+net.bytebuddy.asm.Advice$This
+jdk.proxy2.$Proxy59
+net.bytebuddy.asm.Advice$Origin
+jdk.proxy2.$Proxy60
+net.bytebuddy.asm.Advice$AllArguments
+jdk.proxy2.$Proxy61
+net.bytebuddy.dynamic.ClassFileLocator$Resolution$Explicit
+net.bytebuddy.utility.StreamDrainer
+net.bytebuddy.utility.OpenedClassReader
+net.bytebuddy.utility.AsmClassReader$ForAsm
+net.bytebuddy.jar.asm.ClassReader
+net.bytebuddy.asm.Advice$Dispatcher$Resolved$AbstractBase
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$ForMethodEnter
+net.bytebuddy.asm.Advice$ArgumentHandler
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$CodeTranslationVisitor
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$ForMethodEnter$WithRetainedEnterType
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$ForMethodEnter$WithDiscardedEnterType
+net.bytebuddy.asm.Advice$OffsetMapping$ForArgument$Unresolved$Factory
+net.bytebuddy.asm.Advice$Argument
+net.bytebuddy.asm.Advice$OffsetMapping$ForAllArguments$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForThisReference$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForField$Unresolved$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForField
+net.bytebuddy.asm.Advice$OffsetMapping$ForField$Unresolved
+net.bytebuddy.asm.Advice$OffsetMapping$ForField$Unresolved$WithImplicitType
+net.bytebuddy.asm.Advice$OffsetMapping$ForField$Unresolved$WithExplicitType
+net.bytebuddy.asm.Advice$OffsetMapping$ForFieldHandle$Unresolved$ReaderFactory
+net.bytebuddy.asm.Advice$OffsetMapping$ForFieldHandle
+net.bytebuddy.asm.Advice$OffsetMapping$ForFieldHandle$Unresolved
+net.bytebuddy.asm.Advice$OffsetMapping$ForFieldHandle$Unresolved$WithImplicitType
+net.bytebuddy.asm.Advice$OffsetMapping$ForFieldHandle$Unresolved$WithExplicitType
+net.bytebuddy.asm.Advice$FieldGetterHandle
+net.bytebuddy.asm.Advice$OffsetMapping$ForFieldHandle$Unresolved$WriterFactory
+net.bytebuddy.asm.Advice$FieldSetterHandle
+net.bytebuddy.asm.Advice$OffsetMapping$ForOrigin$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForSelfCallHandle$Factory
+net.bytebuddy.asm.Advice$SelfCallHandle
+net.bytebuddy.asm.Advice$OffsetMapping$ForHandle$Factory
+net.bytebuddy.asm.Advice$Handle
+net.bytebuddy.asm.Advice$OffsetMapping$ForDynamicConstant$Factory
+net.bytebuddy.asm.Advice$DynamicConstant
+net.bytebuddy.asm.Advice$OffsetMapping$ForUnusedValue$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForStubValue
+net.bytebuddy.asm.Advice$OffsetMapping$Target
+net.bytebuddy.asm.Advice$OffsetMapping$ForThrowable$Factory
+net.bytebuddy.asm.Advice$Thrown
+net.bytebuddy.asm.Advice$OffsetMapping$ForExitValue$Factory
+net.bytebuddy.asm.Advice$Exit
+net.bytebuddy.asm.Advice$OffsetMapping$Factory$Illegal
+net.bytebuddy.asm.Advice$OffsetMapping$ForLocalValue$Factory
+net.bytebuddy.description.annotation.AnnotationValue$ForTypeDescription
+net.bytebuddy.description.annotation.AnnotationValue$ForMismatchedType
+net.bytebuddy.asm.Advice$OffsetMapping$Factory$AdviceType
+net.bytebuddy.asm.Advice$FieldValue
+net.bytebuddy.asm.Advice$Unused
+net.bytebuddy.asm.Advice$StubValue
+net.bytebuddy.asm.Advice$OffsetMapping$ForStackManipulation
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$OfMethodParameter
+net.bytebuddy.description.type.TypeList$Generic$AbstractBase
+net.bytebuddy.description.type.TypeList$Generic$Explicit
+net.bytebuddy.description.type.TypeList$Explicit
+net.bytebuddy.implementation.bytecode.StackSize
+net.bytebuddy.asm.Advice$OffsetMapping$ForThisReference
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForDefaultValue
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForDefaultValue$ReadOnly
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForDefaultValue$ReadWrite
+net.bytebuddy.description.enumeration.EnumerationDescription$AbstractBase
+net.bytebuddy.description.enumeration.EnumerationDescription$ForLoadedEnumeration
+net.bytebuddy.description.annotation.AnnotationValue$ForEnumerationDescription
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedMethod
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedMethod$1
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedMethod$2
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedMethod$3
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedMethod$4
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedMethod$5
+sun.reflect.generics.tree.ArrayTypeSignature
+sun.reflect.generics.tree.BottomSignature
+sun.reflect.generics.tree.Wildcard
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedExecutableParameterType
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedExecutableParameterType$Dispatcher
+net.bytebuddy.description.type.$Proxy62
+net.bytebuddy.asm.Advice$OffsetMapping$ForAllArguments
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$Chained
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForComponentType
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForComponentType$AnnotatedParameterizedType
+java.lang.reflect.AnnotatedArrayType
+net.bytebuddy.description.type.$Proxy63
+net.bytebuddy.asm.Advice$Dispatcher$SuppressionHandler
+net.bytebuddy.asm.Advice$Dispatcher$SuppressionHandler$Suppressing
+net.bytebuddy.asm.Advice$Dispatcher$SuppressionHandler$Bound
+net.bytebuddy.asm.Advice$Dispatcher$SuppressionHandler$NoOp
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForType
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$Bound
+net.bytebuddy.asm.Advice$OnDefaultValue
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$1
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$2
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$3
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$4
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$5
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$6
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$7
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$8
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$9
+java.lang.reflect.WildcardType
+sun.reflect.generics.reflectiveObjects.WildcardTypeImpl
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedMethodReturnType
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedMethodReturnType$Dispatcher
+net.bytebuddy.description.type.$Proxy64
+net.bytebuddy.description.type.TypeDescription$Generic$OfParameterizedType
+net.bytebuddy.description.type.TypeDescription$Generic$OfParameterizedType$ForLoadedType
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$OfNonDefault
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$ForMethodExit
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$ForMethodExit$WithoutExceptionHandler
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$ForMethodExit$WithExceptionHandler
+net.bytebuddy.asm.Advice$OffsetMapping$ForEnterValue$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForReturnValue$Factory
+net.bytebuddy.asm.Advice$OffsetMapping$ForReturnValue
+net.bytebuddy.asm.Advice$OffsetMapping$ForEnterValue
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$Disabled
+net.bytebuddy.asm.Advice$ExceptionHandler$Default
+net.bytebuddy.asm.Advice$ExceptionHandler$Default$1
+net.bytebuddy.asm.Advice$ExceptionHandler$Default$2
+net.bytebuddy.asm.Advice$ExceptionHandler$Default$3
+net.bytebuddy.implementation.SuperMethodCall
+net.bytebuddy.asm.AsmVisitorWrapper$ForDeclaredMethods$Entry
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ForStatic
+net.bytebuddy.asm.Advice$OffsetMapping$ForInstrumentedType
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ConstructorShortcut
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ConstructorShortcut$1
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ForHashCode
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ForEquals
+jdk.proxy2.$Proxy65
+net.bytebuddy.asm.Advice$OffsetMapping$ForArgument
+net.bytebuddy.asm.Advice$OffsetMapping$ForArgument$Unresolved
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$SelfCallInfo
+org.mockito.internal.util.reflection.ModuleMemberAccessor
+org.mockito.internal.util.reflection.InstrumentationMemberAccessor
+net.bytebuddy.dynamic.loading.InjectionClassLoader
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader
+net.bytebuddy.implementation.MethodCall
+net.bytebuddy.implementation.MethodCall$WithoutSpecifiedTarget
+net.bytebuddy.dynamic.loading.ClassFilePostProcessor
+net.bytebuddy.dynamic.loading.PackageDefinitionStrategy
+java.lang.invoke.LambdaForm$MH/0x00003fc001474000
+java.lang.invoke.LambdaForm$MH/0x00003fc001474400
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$PackageLookupStrategy$CreationAction
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$PackageLookupStrategy
+net.bytebuddy.utility.JavaModule
+net.bytebuddy.utility.JavaModule$Resolver
+net.bytebuddy.utility.$Proxy66
+net.bytebuddy.utility.JavaModule$Module
+net.bytebuddy.utility.$Proxy67
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$PackageLookupStrategy$ForJava9CapableVm
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$SynchronizationStrategy$CreationAction
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$SynchronizationStrategy$Initializable
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$SynchronizationStrategy
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$SynchronizationStrategy$ForJava8CapableVm
+java.lang.invoke.LambdaForm$MH/0x00003fc001474800
+java.lang.invoke.LambdaForm$MH/0x00003fc001474c00
+java.lang.invoke.LambdaForm$MH/0x00003fc001475000
+java.lang.invoke.LambdaForm$MH/0x00003fc001475400
+java.lang.invoke.LambdaForm$MH/0x00003fc001475800
+java.lang.invoke.LambdaForm$MH/0x00003fc001475c00
+java.lang.invoke.BoundMethodHandle$Species_LLLLL
+java.lang.invoke.LambdaForm$MH/0x00003fc001478000
+java.lang.invoke.LambdaForm$MH/0x00003fc001478400
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$PersistenceHandler
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$PersistenceHandler$1
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$PersistenceHandler$2
+net.bytebuddy.dynamic.loading.PackageDefinitionStrategy$Trivial
+net.bytebuddy.dynamic.loading.PackageDefinitionStrategy$Definition
+net.bytebuddy.dynamic.loading.ClassFilePostProcessor$NoOp
+org.mockito.internal.util.reflection.InstrumentationMemberAccessor$Dispatcher
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy$Default
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy$Default$1
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy$Default$2
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy$Default$3
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy$Default$4
+net.bytebuddy.dynamic.scaffold.subclass.ConstructorStrategy$Default$5
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$UsingTypeWriter
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Adapter
+net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ImplementationDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$TypeVariableDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ExceptionDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ParameterDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$FieldDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$FieldDefinition$Optional
+net.bytebuddy.dynamic.TypeResolutionStrategy
+net.bytebuddy.dynamic.DynamicType$Builder$RecordComponentDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$RecordComponentDefinition$Optional
+net.bytebuddy.dynamic.DynamicType$Builder$TypeVariableDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ImplementationDefinition$Optional
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ParameterDefinition$Simple
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ParameterDefinition$Initial
+net.bytebuddy.dynamic.DynamicType$Builder$InnerTypeDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$InnerTypeDefinition$ForType
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Delegator
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Adapter$InnerTypeDefinitionForTypeAdapter
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Adapter$InnerTypeDefinitionForMethodAdapter
+net.bytebuddy.dynamic.DynamicType$Builder$FieldDefinition$Valuable
+net.bytebuddy.dynamic.DynamicType$Builder$FieldDefinition$Optional$Valuable
+net.bytebuddy.implementation.attribute.TypeAttributeAppender
+net.bytebuddy.implementation.Implementation$Target$Factory
+net.bytebuddy.dynamic.scaffold.TypeWriter$RecordComponentPool
+net.bytebuddy.dynamic.scaffold.TypeWriter$FieldPool
+net.bytebuddy.dynamic.scaffold.RecordComponentRegistry
+net.bytebuddy.dynamic.scaffold.MethodRegistry
+net.bytebuddy.dynamic.scaffold.FieldRegistry
+net.bytebuddy.description.modifier.ModifierContributor
+net.bytebuddy.description.modifier.ModifierContributor$ForType
+net.bytebuddy.description.modifier.ModifierContributor$ForMethod
+net.bytebuddy.description.modifier.ModifierContributor$ForField
+net.bytebuddy.description.modifier.Visibility
+net.bytebuddy.description.modifier.TypeManifestation
+net.bytebuddy.description.modifier.ModifierContributor$Resolver
+net.bytebuddy.description.type.TypeDescription$AbstractBase$OfSimpleType
+net.bytebuddy.dynamic.scaffold.InstrumentedType$Default
+net.bytebuddy.dynamic.scaffold.TypeInitializer$None
+net.bytebuddy.implementation.LoadedTypeInitializer$NoOp
+net.bytebuddy.description.type.TypeDescription$LazyProxy
+net.bytebuddy.description.modifier.Ownership
+net.bytebuddy.description.modifier.ModifierContributor$ForParameter
+net.bytebuddy.description.modifier.SyntheticState
+net.bytebuddy.description.modifier.EnumerationState
+net.bytebuddy.description.TypeVariableSource$Visitor
+jdk.proxy2.$Proxy68
+net.bytebuddy.description.type.TypeList$Generic$ForLoadedTypes
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Substitutor
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Substitutor$ForDetachment
+net.bytebuddy.dynamic.scaffold.FieldRegistry$Default
+net.bytebuddy.dynamic.scaffold.FieldRegistry$Compiled
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Default
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Prepared
+net.bytebuddy.dynamic.scaffold.RecordComponentRegistry$Default
+net.bytebuddy.dynamic.scaffold.RecordComponentRegistry$Compiled
+net.bytebuddy.implementation.attribute.TypeAttributeAppender$ForInstrumentedType
+net.bytebuddy.implementation.attribute.AnnotationAppender$Target
+net.bytebuddy.implementation.attribute.AnnotationAppender
+net.bytebuddy.asm.AsmVisitorWrapper$NoOp
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ImplementationDefinition$AbstractBase
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Adapter$MethodMatchAdapter
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ReceiverTypeDefinition
+net.bytebuddy.implementation.MethodCall$MethodLocator$Factory
+net.bytebuddy.implementation.MethodCall$ArgumentLoader$Factory
+net.bytebuddy.implementation.MethodCall$TerminationHandler$Factory
+net.bytebuddy.implementation.MethodCall$MethodInvoker$Factory
+net.bytebuddy.implementation.MethodCall$TargetHandler$Factory
+net.bytebuddy.implementation.MethodCall$MethodLocator
+net.bytebuddy.implementation.MethodCall$MethodLocator$ForExplicitMethod
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForField$Location
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForSelfOrStaticInvocation$Factory
+net.bytebuddy.implementation.MethodCall$TargetHandler
+net.bytebuddy.implementation.MethodCall$MethodInvoker$ForContextualInvocation$Factory
+net.bytebuddy.implementation.MethodCall$MethodInvoker
+net.bytebuddy.implementation.MethodCall$TerminationHandler
+net.bytebuddy.implementation.MethodCall$TerminationHandler$Simple
+net.bytebuddy.implementation.MethodCall$TerminationHandler$Simple$1
+net.bytebuddy.implementation.MethodCall$TerminationHandler$Simple$2
+net.bytebuddy.implementation.MethodCall$TerminationHandler$Simple$3
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$ForImplementation
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$Compiled
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$AbstractBase
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$ReceiverTypeDefinition$AbstractBase
+net.bytebuddy.dynamic.DynamicType$Builder$MethodDefinition$AbstractBase$Adapter
+net.bytebuddy.dynamic.DynamicType$Builder$AbstractBase$Adapter$MethodMatchAdapter$AnnotationAdapter
+net.bytebuddy.dynamic.Transformer
+net.bytebuddy.implementation.attribute.MethodAttributeAppender
+net.bytebuddy.implementation.attribute.MethodAttributeAppender$NoOp
+net.bytebuddy.dynamic.Transformer$NoOp
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Entry
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForMethodCall$Factory
+net.bytebuddy.implementation.MethodCall$MethodInvoker$ForVirtualInvocation$WithImplicitType
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForMethodParameter
+net.bytebuddy.implementation.MethodCall$TargetHandler$Resolved
+net.bytebuddy.implementation.MethodCall$ArgumentLoader$ArgumentProvider
+net.bytebuddy.implementation.MethodCall$ArgumentLoader$ForMethodParameter$Factory
+net.bytebuddy.dynamic.TypeResolutionStrategy$Resolved
+net.bytebuddy.dynamic.TypeResolutionStrategy$Passive
+net.bytebuddy.pool.TypePool$AbstractBase
+net.bytebuddy.pool.TypePool$AbstractBase$Hierarchical
+net.bytebuddy.pool.TypePool$ClassLoading
+net.bytebuddy.pool.TypePool$Resolution
+net.bytebuddy.pool.TypePool$CacheProvider
+net.bytebuddy.pool.TypePool$Empty
+net.bytebuddy.pool.TypePool$CacheProvider$Simple
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$WithResolvedErasure
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Substitutor$ForAttachment
+net.bytebuddy.description.method.MethodList$TypeSubstituting
+net.bytebuddy.description.method.MethodDescription$InGenericShape
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$ForRawType
+net.bytebuddy.matcher.VisibilityMatcher
+net.bytebuddy.description.method.MethodDescription$TypeSubstituting
+net.bytebuddy.description.type.TypeDescription$Generic$OfParameterizedType$ForGenerifiedErasure
+net.bytebuddy.description.type.TypeDescription$Generic$OfNonGenericType$ForErasure
+net.bytebuddy.description.type.TypeList$Generic$ForLoadedTypes$OfTypeVariables
+net.bytebuddy.description.method.MethodDescription$Token
+net.bytebuddy.matcher.TypeSortMatcher
+net.bytebuddy.description.ByteCodeElement$Token$TokenList
+net.bytebuddy.description.method.ParameterList$TypeSubstituting
+net.bytebuddy.description.method.ParameterDescription$InGenericShape
+net.bytebuddy.description.type.TypeList$Generic$ForDetachedTypes
+net.bytebuddy.description.type.TypeList$Generic$OfConstructorExceptionTypes
+jdk.internal.vm.annotation.IntrinsicCandidate
+com.sun.proxy.jdk.proxy1.$Proxy69
+net.bytebuddy.description.annotation.AnnotationList$Explicit
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProxy
+jdk.proxy2.$Proxy70
+net.bytebuddy.dynamic.scaffold.subclass.SubclassDynamicTypeBuilder$InstrumentableMatcher
+net.bytebuddy.description.method.MethodList$ForTokens
+net.bytebuddy.description.method.MethodDescription$Latent
+net.bytebuddy.description.method.ParameterList$ForTokens
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$WithLazyNavigation
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$WithLazyNavigation$OfAnnotatedElement
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$ForLoadedSuperClass
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Store
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Store$Entry
+net.bytebuddy.description.type.TypeList$Generic$ForDetachedTypes$WithResolvedErasure
+net.bytebuddy.description.type.TypeList$Generic$OfLoadedInterfaceTypes
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Harmonized
+net.bytebuddy.description.method.MethodDescription$TypeToken
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Harmonizer$ForJavaMethod$Token
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Store$Entry$Initial
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Store$Entry$Resolved
+net.bytebuddy.dynamic.scaffold.MethodGraph$Node
+net.bytebuddy.description.method.ParameterDescription$TypeSubstituting
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Store$Entry$Resolved$Node
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Detached
+net.bytebuddy.dynamic.scaffold.MethodGraph$Compiler$Default$Key$Store$Graph
+net.bytebuddy.dynamic.scaffold.MethodGraph$Linked$Delegation
+net.bytebuddy.matcher.MethodParameterTypeMatcher
+net.bytebuddy.matcher.FailSafeMatcher
+net.bytebuddy.dynamic.scaffold.MethodGraph$NodeList
+net.bytebuddy.dynamic.scaffold.MethodGraph$Node$Sort
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Prepared$Entry
+net.bytebuddy.description.method.MethodDescription$Latent$TypeInitializer
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Prepared
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Compiled
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Validator
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Validator$1
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Validator$2
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Validator$3
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$Validator$ForTypeAnnotations
+net.bytebuddy.description.annotation.AnnotationList$Empty
+net.bytebuddy.description.type.TypeList$Generic$ForDetachedTypes$OfTypeVariables
+net.bytebuddy.description.type.PackageDescription$AbstractBase
+net.bytebuddy.description.type.PackageDescription$Simple
+net.bytebuddy.description.field.FieldList$AbstractBase
+net.bytebuddy.description.field.FieldList$ForTokens
+net.bytebuddy.description.method.MethodDescription$SignatureToken
+net.bytebuddy.description.annotation.AnnotationValue$ForDescriptionArray
+net.bytebuddy.description.annotation.AnnotationValue$Sort
+net.bytebuddy.description.annotation.AnnotationValue$State
+net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget$Factory
+net.bytebuddy.implementation.Implementation$Target
+net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget$OriginTypeResolver
+net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget$OriginTypeResolver$1
+net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget$OriginTypeResolver$2
+net.bytebuddy.implementation.Implementation$Target$AbstractBase
+net.bytebuddy.dynamic.scaffold.subclass.SubclassImplementationTarget
+net.bytebuddy.implementation.Implementation$SpecialMethodInvocation
+net.bytebuddy.implementation.Implementation$Target$AbstractBase$DefaultMethodInvocation
+net.bytebuddy.implementation.Implementation$Target$AbstractBase$DefaultMethodInvocation$1
+net.bytebuddy.implementation.Implementation$Target$AbstractBase$DefaultMethodInvocation$2
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Handler$ForImplementation$Compiled
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record
+net.bytebuddy.implementation.MethodCall$Appender
+net.bytebuddy.implementation.MethodCall$MethodInvoker$ForContextualInvocation
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForSelfOrStaticInvocation
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Compiled$Entry
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForMethodCall
+net.bytebuddy.implementation.SuperMethodCall$Appender
+net.bytebuddy.implementation.SuperMethodCall$Appender$TerminationHandler
+net.bytebuddy.implementation.SuperMethodCall$Appender$TerminationHandler$1
+net.bytebuddy.implementation.SuperMethodCall$Appender$TerminationHandler$2
+net.bytebuddy.dynamic.scaffold.MethodRegistry$Default$Compiled
+net.bytebuddy.dynamic.scaffold.FieldRegistry$Default$Compiled
+net.bytebuddy.dynamic.scaffold.TypeWriter$FieldPool$Record
+net.bytebuddy.dynamic.scaffold.RecordComponentRegistry$Default$Compiled
+net.bytebuddy.dynamic.scaffold.TypeWriter$RecordComponentPool$Record
+net.bytebuddy.pool.TypePool$Explicit
+net.bytebuddy.pool.TypePool$CacheProvider$NoOp
+net.bytebuddy.dynamic.scaffold.TypeWriter
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default
+net.bytebuddy.dynamic.scaffold.inline.MethodRebaseResolver
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ClassDumpAction$Dispatcher
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation
+net.bytebuddy.utility.visitor.MetadataAwareClassVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation$CreationClassVisitor
+net.bytebuddy.utility.visitor.ContextClassVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForCreation$ImplementationContextClassVisitor
+net.bytebuddy.dynamic.scaffold.TypeInitializer$Drain
+net.bytebuddy.description.type.RecordComponentList$ForTokens
+net.bytebuddy.description.type.RecordComponentDescription
+net.bytebuddy.description.type.RecordComponentDescription$InDefinedShape
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ClassDumpAction$Dispatcher$Disabled
+net.bytebuddy.utility.AsmClassWriter$Factory$Default$EmptyAsmClassReader
+net.bytebuddy.utility.AsmClassWriter$ForAsm
+net.bytebuddy.implementation.Implementation$Context$FrameGeneration
+net.bytebuddy.implementation.Implementation$Context$FrameGeneration$1
+net.bytebuddy.implementation.Implementation$Context$FrameGeneration$2
+net.bytebuddy.implementation.Implementation$Context$FrameGeneration$3
+net.bytebuddy.implementation.Implementation$Context$ExtractableView$AbstractBase
+net.bytebuddy.implementation.Implementation$Context$Default
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod
+net.bytebuddy.implementation.Implementation$Context$Default$DelegationRecord
+net.bytebuddy.implementation.Implementation$Context$Default$AccessorMethodDelegation
+net.bytebuddy.implementation.Implementation$Context$Default$FieldGetterDelegation
+net.bytebuddy.implementation.Implementation$Context$Default$FieldSetterDelegation
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor$ValidatingFieldVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor$ValidatingMethodVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor$Constraint
+net.bytebuddy.jar.asm.signature.SignatureVisitor
+net.bytebuddy.jar.asm.signature.SignatureWriter
+net.bytebuddy.description.type.TypeDescription$Generic$Visitor$ForSignatureVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor$Constraint$ForClassFileVersion
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor$Constraint$ForClass
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ValidatingClassVisitor$Constraint$Compound
+net.bytebuddy.implementation.attribute.AnnotationAppender$Default
+net.bytebuddy.implementation.attribute.AnnotationAppender$Target$OnType
+net.bytebuddy.implementation.attribute.AnnotationAppender$ForTypeAnnotations
+java.util.AbstractList$SubList
+net.bytebuddy.jar.asm.TypeReference
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForDefinedMethod$WithBody
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$AccessBridgeWrapper
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$Sort
+net.bytebuddy.description.modifier.Visibility$1
+net.bytebuddy.description.type.TypeList$Generic$OfMethodExceptionTypes
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForSelfOrStaticInvocation$Resolved
+net.bytebuddy.implementation.bytecode.Duplication
+net.bytebuddy.implementation.bytecode.ByteCodeAppender$Size
+net.bytebuddy.implementation.bytecode.StackManipulation$Compound
+net.bytebuddy.implementation.bytecode.member.MethodInvocation
+net.bytebuddy.implementation.bytecode.member.MethodInvocation$WithImplicitInvocationTargetType
+net.bytebuddy.implementation.bytecode.member.MethodInvocation$Invocation
+net.bytebuddy.implementation.bytecode.member.MethodReturn
+net.bytebuddy.implementation.bytecode.StackManipulation$Size
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForMethodCall$Resolved
+net.bytebuddy.implementation.bytecode.member.MethodVariableAccess
+net.bytebuddy.implementation.bytecode.member.MethodVariableAccess$MethodLoading$TypeCastingHandler
+net.bytebuddy.implementation.bytecode.member.MethodVariableAccess$OffsetLoading
+net.bytebuddy.implementation.MethodCall$TargetHandler$ForMethodParameter$Resolved
+net.bytebuddy.implementation.MethodCall$ArgumentLoader
+net.bytebuddy.implementation.MethodCall$ArgumentLoader$ForMethodParameter
+net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveWideningDelegate
+net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveWideningDelegate$WideningStackManipulation
+net.bytebuddy.description.type.TypeList$Generic$OfMethodExceptionTypes$TypeProjection
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedExecutableExceptionType
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedExecutableExceptionType$Dispatcher
+net.bytebuddy.description.type.$Proxy71
+net.bytebuddy.matcher.SignatureTokenMatcher
+net.bytebuddy.implementation.Implementation$SpecialMethodInvocation$AbstractBase
+net.bytebuddy.implementation.Implementation$SpecialMethodInvocation$Simple
+net.bytebuddy.implementation.bytecode.member.MethodVariableAccess$MethodLoading
+net.bytebuddy.implementation.bytecode.member.MethodVariableAccess$MethodLoading$TypeCastingHandler$NoOp
+net.bytebuddy.dynamic.scaffold.TypeInitializer$Drain$Default
+net.bytebuddy.description.method.ParameterList$Empty
+net.bytebuddy.description.type.TypeList$Generic$Empty
+net.bytebuddy.dynamic.scaffold.TypeWriter$MethodPool$Record$ForNonImplementedMethod
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$UnresolvedType
+net.bytebuddy.dynamic.DynamicType
+net.bytebuddy.dynamic.DynamicType$Unloaded
+net.bytebuddy.dynamic.DynamicType$AbstractBase
+net.bytebuddy.dynamic.DynamicType$Default
+net.bytebuddy.dynamic.DynamicType$Default$Unloaded
+net.bytebuddy.dynamic.DynamicType$Loaded
+net.bytebuddy.dynamic.loading.InjectionClassLoader$Strategy
+net.bytebuddy.dynamic.DynamicType$Default$Loaded
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c4000
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c4400
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c4800
+java.lang.invoke.MethodHandleImpl$WrappedMember
+java.lang.invoke.MethodHandleImpl$LoopClauses
+java.lang.invoke.MethodHandleImpl$CasesHolder
+java.lang.invoke.MethodHandleImpl$ArrayAccess
+java.lang.invoke.MethodHandleImpl$ArrayAccessor
+java.lang.invoke.MethodHandleImpl$ArrayAccessor$1
+java.lang.invoke.LambdaForm$DMH/0x00003fc0014c4c00
+java.lang.invoke.LambdaForm$DMH/0x00003fc0014c5000
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c5400
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c5800
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c5c00
+net.bytebuddy.dynamic.loading.ByteArrayClassLoader$ClassDefinitionAction
+net.bytebuddy.dynamic.loading.PackageDefinitionStrategy$Definition$Trivial
+java.lang.invoke.LambdaForm$MH/0x00003fc0014c6000
+org.mockito.internal.util.reflection.InstrumentationMemberAccessor$Dispatcher$ByteBuddy$MLoL4JuG
+java.lang.invoke.LambdaForm$DMH/0x00003fc0014c6400
+org.mockito.internal.exceptions.stacktrace.DefaultStackTraceCleanerProvider
+org.mockito.internal.configuration.InjectingAnnotationEngine
+org.mockito.internal.configuration.IndependentAnnotationEngine
+org.mockito.internal.configuration.FieldAnnotationProcessor
+org.mockito.Mock
+org.mockito.internal.configuration.MockAnnotationProcessor
+org.mockito.Captor
+org.mockito.internal.configuration.CaptorAnnotationProcessor
+org.mockito.internal.configuration.SpyAnnotationEngine
+org.mockito.internal.util.ConsoleMockitoLogger
+org.mockito.plugins.MockResolver
+org.mockito.plugins.DoNotMockEnforcer
+org.mockito.internal.configuration.DefaultDoNotMockEnforcer
+org.mockito.internal.creation.instance.DefaultInstantiatorProvider
+org.mockito.internal.creation.instance.ObjenesisInstantiator
+org.objenesis.Objenesis
+org.objenesis.ObjenesisBase
+org.objenesis.ObjenesisStd
+org.objenesis.strategy.InstantiatorStrategy
+org.mockito.configuration.IMockitoConfiguration
+org.mockito.internal.configuration.GlobalConfiguration
+org.mockito.configuration.DefaultMockitoConfiguration
+org.mockito.internal.configuration.ClassPathLoader
+org.objenesis.strategy.BaseInstantiatorStrategy
+org.objenesis.strategy.StdInstantiatorStrategy
+org.objenesis.instantiator.ObjectInstantiator
+org.mockito.Answers
+org.mockito.internal.stubbing.defaultanswers.GloballyConfiguredAnswer
+org.mockito.internal.stubbing.defaultanswers.ReturnsSmartNulls
+org.mockito.internal.stubbing.defaultanswers.RetrieveGenericsForDefaultAnswers$AnswerCallback
+org.mockito.internal.stubbing.defaultanswers.ReturnsMoreEmptyValues
+org.mockito.internal.stubbing.defaultanswers.ReturnsEmptyValues
+org.mockito.internal.stubbing.defaultanswers.ReturnsMocks
+org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs
+org.mockito.invocation.DescribedInvocation
+org.mockito.internal.stubbing.defaultanswers.ReturnsDeepStubs$ReturnsDeepStubsSerializationFallback
+org.mockito.stubbing.ValidableAnswer
+org.mockito.internal.stubbing.answers.CallsRealMethods
+org.mockito.internal.stubbing.defaultanswers.TriesToReturnSelf
+org.mockito.MockSettings
+org.mockito.mock.MockCreationSettings
+org.mockito.internal.creation.settings.CreationSettings
+org.mockito.internal.creation.MockSettingsImpl
+org.mockito.mock.MockName
+org.mockito.mock.SerializableMode
+org.mockito.internal.util.MockCreationValidator
+org.mockito.internal.util.MockUtil
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker$1
+org.mockito.mock.MockType
+org.mockito.internal.util.MockNameImpl
+org.mockito.plugins.DoNotMockEnforcer$Cache
+org.mockito.internal.handler.MockHandlerFactory
+org.mockito.invocation.MockHandler
+org.mockito.internal.handler.MockHandlerImpl
+org.mockito.invocation.InvocationContainer
+org.mockito.invocation.MatchableInvocation
+org.mockito.stubbing.OngoingStubbing
+org.mockito.stubbing.Stubbing
+org.mockito.invocation.InvocationOnMock
+org.mockito.internal.invocation.MatchersBinder
+org.mockito.internal.stubbing.InvocationContainerImpl
+org.mockito.invocation.StubInfo
+org.mockito.internal.verification.RegisteredInvocations
+org.mockito.internal.verification.DefaultRegisteredInvocations
+org.mockito.internal.stubbing.DoAnswerStyleStubbing
+org.mockito.internal.handler.NullResultGuardian
+org.mockito.internal.handler.InvocationNotifierHandler
+org.mockito.listeners.MethodInvocationReport
+org.mockito.internal.creation.bytebuddy.MockFeatures
+net.bytebuddy.TypeCache$SimpleKey
+org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$MockitoMockKey
+org.mockito.internal.creation.bytebuddy.TypeCachingBytecodeGenerator$$Lambda/0x00003fc0014cfb10
+net.bytebuddy.TypeCache$LookupKey
+org.mockito.internal.util.concurrent.WeakConcurrentMap$WeakKey
+org.mockito.internal.util.concurrent.WeakConcurrentMap$LatentKey
+java.lang.invoke.LambdaForm$DMH/0x00003fc0014d4000
+java.lang.invoke.LambdaForm$BMH/0x00003fc0014d4400
+java.lang.invoke.LambdaForm$MH/0x00003fc0014d4800
+java.lang.invoke.LambdaForm$MH/0x00003fc0014d4c00
+java.lang.invoke.LambdaForm$MH/0x00003fc0014d5000
+java.lang.invoke.LambdaForm$MH/0x00003fc0014d5400
+java.lang.invoke.LambdaForm$MH/0x00003fc0014d5800
+java.lang.invoke.LambdaForm$MH/0x00003fc0014d5c00
+sun.instrument.InstrumentationImpl$$Lambda/0x00003fc0013cdc50
+sun.instrument.InstrumentationImpl$$Lambda/0x00003fc0013cde90
+net.bytebuddy.dynamic.ClassFileLocator$Simple
+net.bytebuddy.dynamic.scaffold.inline.AbstractInliningDynamicTypeBuilder
+net.bytebuddy.dynamic.scaffold.inline.RedefinitionDynamicTypeBuilder
+net.bytebuddy.description.field.FieldList$ForLoadedFields
+net.bytebuddy.utility.FieldComparator
+net.bytebuddy.description.field.FieldDescription$AbstractBase
+net.bytebuddy.description.field.FieldDescription$InDefinedShape$AbstractBase
+net.bytebuddy.description.field.FieldDescription$ForLoadedField
+net.bytebuddy.description.field.FieldDescription$Token
+net.bytebuddy.description.type.TypeDescription$Generic$LazyProjection$ForLoadedFieldType
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedField
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedField$Dispatcher
+net.bytebuddy.description.type.$Proxy72
+net.bytebuddy.description.type.TypeDescription$Generic$OfNonGenericType$Latent
+sun.reflect.annotation.TypeAnnotation$TypeAnnotationTarget
+sun.reflect.annotation.TypeAnnotationParser
+sun.reflect.annotation.TypeAnnotation
+sun.reflect.annotation.TypeAnnotation$LocationInfo
+sun.reflect.annotation.TypeAnnotation$LocationInfo$Location
+sun.reflect.annotation.AnnotatedTypeFactory
+sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedTypeBaseImpl
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$Simple
+net.bytebuddy.description.method.ParameterDescription$Token
+net.bytebuddy.description.type.RecordComponentDescription$Token
+net.bytebuddy.implementation.attribute.TypeAttributeAppender$ForInstrumentedType$Differentiating
+net.bytebuddy.asm.AsmVisitorWrapper$AbstractBase
+org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator$ParameterWritingVisitorWrapper
+org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator$ParameterWritingVisitorWrapper$ParameterAddingClassVisitor
+net.bytebuddy.asm.AsmVisitorWrapper$Compound
+net.bytebuddy.pool.TypePool$Default
+net.bytebuddy.pool.TypePool$Default$TypeExtractor
+net.bytebuddy.pool.TypePool$Default$ReaderMode
+net.bytebuddy.dynamic.scaffold.inline.InliningImplementationMatcher
+net.bytebuddy.description.method.ParameterDescription$Latent
+net.bytebuddy.dynamic.scaffold.MethodGraph$Node$Simple
+net.bytebuddy.dynamic.scaffold.MethodGraph$Simple
+net.bytebuddy.dynamic.scaffold.MethodGraph$Empty
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$RegistryContextClassVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor
+net.bytebuddy.jar.asm.commons.Remapper
+net.bytebuddy.jar.asm.commons.SimpleRemapper
+net.bytebuddy.jar.asm.commons.ClassRemapper
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$OpenedClassRemapper
+net.bytebuddy.dynamic.scaffold.inline.MethodRebaseResolver$Disabled
+net.bytebuddy.dynamic.scaffold.inline.MethodRebaseResolver$Resolution
+net.bytebuddy.jar.asm.Handle
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$ContextRegistry
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor$AttributeObtainingFieldVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor$AttributeObtainingMethodVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor$CodePreservingMethodVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor$AttributeObtainingRecordComponentVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$RedefinitionClassVisitor$DeduplicatingClassVisitor
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler
+net.bytebuddy.description.field.FieldDescription$Latent
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$SignatureKey
+net.bytebuddy.jar.asm.Context
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Creating
+net.bytebuddy.implementation.Implementation$Context$Disabled
+org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator$ParameterWritingVisitorWrapper$MethodParameterStrippingMethodVisitor
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$Delegator$ForLoadedSuperClass
+net.bytebuddy.dynamic.scaffold.TypeWriter$FieldPool$Record$ForImplicitField
+net.bytebuddy.matcher.DescriptorMatcher
+net.bytebuddy.jar.asm.Label
+net.bytebuddy.implementation.bytecode.Removal
+net.bytebuddy.implementation.bytecode.Removal$1
+net.bytebuddy.utility.visitor.StackAwareMethodVisitor
+net.bytebuddy.asm.Advice$ArgumentHandler$Factory
+net.bytebuddy.asm.Advice$ArgumentHandler$Factory$1
+net.bytebuddy.asm.Advice$ArgumentHandler$Factory$2
+net.bytebuddy.asm.Advice$ArgumentHandler$ForInstrumentedMethod
+net.bytebuddy.asm.Advice$ArgumentHandler$ForInstrumentedMethod$Default
+net.bytebuddy.asm.Advice$ArgumentHandler$ForInstrumentedMethod$Default$Copying
+net.bytebuddy.asm.Advice$ArgumentHandler$ForAdvice
+java.util.TreeMap$Values
+java.util.TreeMap$ValueIterator
+net.bytebuddy.asm.Advice$MethodSizeHandler
+net.bytebuddy.asm.Advice$MethodSizeHandler$ForInstrumentedMethod
+net.bytebuddy.asm.Advice$MethodSizeHandler$Default
+net.bytebuddy.asm.Advice$MethodSizeHandler$ForAdvice
+net.bytebuddy.asm.Advice$MethodSizeHandler$Default$WithCopiedArguments
+net.bytebuddy.asm.Advice$StackMapFrameHandler
+net.bytebuddy.asm.Advice$StackMapFrameHandler$ForInstrumentedMethod
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default
+net.bytebuddy.asm.Advice$StackMapFrameHandler$ForPostProcessor
+net.bytebuddy.asm.Advice$StackMapFrameHandler$ForAdvice
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$WithPreservedArguments
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$WithPreservedArguments$WithArgumentCopy
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$AdviceMethodInliner
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$AdviceMethodInliner$ExceptionTableSubstitutor
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$AdviceMethodInliner$ExceptionTableExtractor
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$ForValue$Bound
+net.bytebuddy.asm.Advice$Dispatcher$RelocationHandler$Relocation$ForLabel
+net.bytebuddy.asm.Advice$Dispatcher$Inlining$Resolved$AdviceMethodInliner$ExceptionTableCollector
+net.bytebuddy.asm.Advice$ArgumentHandler$ForAdvice$Default
+net.bytebuddy.asm.Advice$ArgumentHandler$ForAdvice$Default$ForMethodEnter
+net.bytebuddy.asm.Advice$MethodSizeHandler$Default$ForAdvice
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$ForAdvice
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$TranslationMode
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$TranslationMode$1
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$TranslationMode$2
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$TranslationMode$3
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$Initialization
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$Initialization$1
+net.bytebuddy.asm.Advice$StackMapFrameHandler$Default$Initialization$2
+net.bytebuddy.asm.Advice$OffsetMapping$Sort
+net.bytebuddy.asm.Advice$OffsetMapping$Sort$1
+net.bytebuddy.asm.Advice$OffsetMapping$Sort$2
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForStackManipulation
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForVariable
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForVariable$ReadOnly
+net.bytebuddy.implementation.bytecode.constant.MethodConstant
+net.bytebuddy.implementation.bytecode.constant.MethodConstant$CanCache
+net.bytebuddy.implementation.bytecode.constant.MethodConstant$ForMethod
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForArray
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForArray$ReadOnly
+net.bytebuddy.implementation.bytecode.constant.ClassConstant
+net.bytebuddy.implementation.bytecode.constant.ClassConstant$ForReferenceType
+net.bytebuddy.implementation.bytecode.collection.CollectionFactory
+net.bytebuddy.implementation.bytecode.collection.ArrayFactory
+net.bytebuddy.implementation.bytecode.collection.ArrayFactory$ArrayCreator
+net.bytebuddy.implementation.bytecode.collection.ArrayFactory$ArrayCreator$ForReferenceType
+net.bytebuddy.implementation.bytecode.collection.ArrayFactory$ArrayStackManipulation
+net.bytebuddy.implementation.bytecode.constant.IntegerConstant
+net.bytebuddy.jar.asm.Opcodes
+net.bytebuddy.asm.Advice$ArgumentHandler$ForAdvice$Default$ForMethodExit
+net.bytebuddy.implementation.bytecode.assign.TypeCasting
+net.bytebuddy.asm.Advice$OffsetMapping$Target$ForVariable$ReadWrite
+net.bytebuddy.implementation.bytecode.member.MethodVariableAccess$OffsetWriting
+net.bytebuddy.implementation.bytecode.StackSize$1
+net.bytebuddy.description.field.FieldList$Explicit
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$WithDrain
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$WithDrain$WithActiveRecord
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$WithDrain$WithoutActiveRecord
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$WithoutDrain
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$WithoutDrain$WithActiveRecord
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$WithoutDrain$WithoutActiveRecord
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$FrameWriter
+net.bytebuddy.dynamic.scaffold.TypeWriter$Default$ForInlining$WithFullProcessing$InitializationHandler$Appending$FrameWriter$NoOp
+software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient
+net.bytebuddy.description.type.TypeDescription$Generic$OfParameterizedType$ForLoadedType$ParameterArgumentTypeList
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForTypeArgument
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForTypeArgument$AnnotatedParameterizedType
+java.lang.reflect.AnnotatedParameterizedType
+net.bytebuddy.description.type.$Proxy73
+net.bytebuddy.description.type.TypeDescription$Generic$OfWildcardType
+net.bytebuddy.description.type.TypeDescription$Generic$OfWildcardType$ForLoadedType
+net.bytebuddy.description.type.TypeDescription$Generic$OfWildcardType$Latent
+net.bytebuddy.description.type.TypeDescription$Generic$OfWildcardType$ForLoadedType$WildcardUpperBoundTypeList
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForWildcardUpperBoundType
+net.bytebuddy.description.type.TypeDescription$Generic$AnnotationReader$ForWildcardUpperBoundType$AnnotatedWildcardType
+java.lang.reflect.AnnotatedWildcardType
+net.bytebuddy.description.type.$Proxy74
+net.bytebuddy.description.type.TypeDescription$Generic$OfWildcardType$ForLoadedType$WildcardLowerBoundTypeList
+net.bytebuddy.description.type.TypeDescription$Generic$OfParameterizedType$Latent
+java.lang.invoke.LambdaForm$MH/0x00003fc0014f4000
+net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveBoxingDelegate
+net.bytebuddy.implementation.bytecode.assign.primitive.PrimitiveBoxingDelegate$BoxingStackManipulation
+net.bytebuddy.implementation.bytecode.constant.DefaultValue
+net.bytebuddy.implementation.bytecode.constant.LongConstant
+net.bytebuddy.implementation.bytecode.constant.FloatConstant
+net.bytebuddy.implementation.bytecode.constant.DoubleConstant
+net.bytebuddy.implementation.bytecode.constant.NullConstant
+net.bytebuddy.implementation.bytecode.Removal$2
+java.lang.Object
+net.bytebuddy.TypeCache$StorageKey
+org.mockito.plugins.MemberAccessor$OnConstruction
+org.mockito.plugins.MemberAccessor$ConstructionDispatcher
+org.mockito.internal.creation.bytebuddy.InlineDelegateByteBuddyMockMaker$$Lambda/0x00003fc0014f6460
+java.lang.invoke.LambdaForm$MH/0x00003fc0014f4400
+java.lang.invoke.LambdaForm$MH/0x00003fc0014f4800
+java.lang.invoke.LambdaForm$MH/0x00003fc0014f4c00
+java.lang.invoke.LambdaForm$MH/0x00003fc0014f5000
+java.lang.invoke.LambdaForm$MH/0x00003fc0014f5400
+org.mockito.internal.util.reflection.InstrumentationMemberAccessor$$Lambda/0x00003fc0014f6690
+org.mockito.invocation.Invocation
+org.mockito.internal.creation.bytebuddy.ByteBuddyCrossClassLoaderSerializationSupport
+org.mockito.exceptions.base.MockitoSerializationIssue
+org.mockito.internal.progress.ThreadSafeMockingProgress
+org.mockito.internal.progress.ThreadSafeMockingProgress$1
+org.mockito.internal.progress.MockingProgress
+org.mockito.internal.progress.MockingProgressImpl
+org.mockito.verification.VerificationStrategy
+org.mockito.internal.progress.ArgumentMatcherStorage
+org.mockito.internal.progress.ArgumentMatcherStorageImpl
+org.mockito.internal.progress.MockingProgressImpl$1
+org.crac.Resource
+software.amazon.lambda.powertools.metadata.LambdaMetadataClient
+org.crac.Core
+org.crac.Context
+org.crac.GlobalContextWrapper
+org.crac.Core$Compat
+org.crac.CheckpointException
+org.crac.RestoreException
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$RealMethodCall
+org.mockito.internal.invocation.mockref.MockReference
+org.mockito.internal.invocation.mockref.MockWeakReference
+org.mockito.internal.creation.bytebuddy.MockMethodAdvice$ReturnValueWrapper
+org.mockito.internal.debugging.LocationFactory
+org.mockito.internal.debugging.LocationFactory$Factory
+org.mockito.internal.util.Platform
+org.mockito.internal.debugging.LocationFactory$DefaultLocationFactory
+org.mockito.invocation.Location
+org.mockito.internal.debugging.LocationImpl
+org.mockito.exceptions.stacktrace.StackTraceCleaner
+org.mockito.exceptions.stacktrace.StackTraceCleaner$StackFrameMetadata
+org.mockito.internal.exceptions.stacktrace.DefaultStackTraceCleaner
+org.mockito.internal.debugging.LocationImpl$$Lambda/0x00003fc0014fa940
+org.mockito.internal.debugging.LocationImpl$$Lambda/0x00003fc0014fab88
+org.mockito.internal.debugging.LocationImpl$$Lambda/0x00003fc0014fade8
+java.lang.StackStreamFactory
+java.lang.StackWalker$ExtendedOption
+java.lang.StackStreamFactory$StackFrameTraverser
+java.lang.StackStreamFactory$WalkerState
+java.lang.StackStreamFactory$FrameBuffer
+java.lang.StackStreamFactory$StackFrameBuffer
+org.mockito.internal.debugging.LocationImpl$$Lambda/0x00003fc0014fb030
+org.mockito.internal.debugging.LocationImpl$MetadataShim
+org.mockito.internal.debugging.LocationImpl$$Lambda/0x00003fc0014fb4c0
+org.mockito.internal.debugging.LocationImpl$$Lambda/0x00003fc0014fb708
+org.mockito.invocation.InvocationFactory
+org.mockito.internal.invocation.DefaultInvocationFactory
+org.mockito.internal.invocation.AbstractAwareMethod
+org.mockito.internal.invocation.MockitoMethod
+org.mockito.internal.exceptions.VerificationAwareInvocation
+org.mockito.internal.invocation.InterceptedInvocation
+org.mockito.internal.invocation.InterceptedInvocation$1
+org.mockito.internal.creation.DelegatingMethod
+org.mockito.internal.creation.SuspendMethod
+org.mockito.internal.progress.SequenceNumber
+org.mockito.internal.invocation.ArgumentsProcessor
+org.mockito.internal.invocation.InvocationMatcher
+org.mockito.internal.invocation.ArgumentMatcherAction
+org.mockito.internal.stubbing.BaseStubbing
+org.mockito.internal.stubbing.OngoingStubbingImpl
+org.mockito.internal.listeners.StubbingLookupNotifier
+org.mockito.listeners.StubbingLookupEvent
+org.mockito.internal.util.ObjectMethodsGuru
+org.mockito.internal.util.Primitives
+java.util.stream.DoubleStream
+java.util.stream.LongStream
+java.util.OptionalDouble
+java.util.OptionalInt
+java.util.OptionalLong
+org.mockito.internal.stubbing.answers.DefaultAnswerValidator
+org.mockito.internal.stubbing.answers.InvocationInfo
+java.lang.invoke.LambdaForm$MH/0x00003fc001500000
+org.mockito.internal.stubbing.answers.Returns
+org.mockito.internal.util.reflection.GenericMetadataSupport
+org.mockito.internal.util.reflection.GenericMetadataSupport$GenericArrayReturnType
+org.mockito.internal.util.reflection.GenericMetadataSupport$FromClassGenericMetadataSupport
+org.mockito.internal.util.reflection.GenericMetadataSupport$FromParameterizedTypeGenericMetadataSupport
+org.mockito.internal.util.reflection.GenericMetadataSupport$BoundedType
+org.mockito.internal.util.reflection.GenericMetadataSupport$NotGenericReturnTypeSupport
+org.mockito.internal.util.reflection.GenericMetadataSupport$ParameterizedReturnType
+org.mockito.internal.util.reflection.GenericMetadataSupport$TypeVariableReturnType
+org.mockito.internal.util.Checks
+org.mockito.internal.stubbing.StubbedInvocationMatcher
+org.mockito.internal.stubbing.ConsecutiveStubbing
+software.amazon.lambda.powertools.metadata.LambdaMetadataClientConcurrencyTest$$Lambda/0x00003fc0015047e8
+org.mockito.internal.invocation.MatcherApplicationStrategy
+org.mockito.internal.invocation.TypeSafeMatching
+org.mockito.internal.invocation.StubInfoImpl
+org.mockito.internal.invocation.InvocationMatcher$1
+org.mockito.internal.util.KotlinInlineClassUtil
+org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor$$Lambda/0x00003fc0015054f0
+org.junit.jupiter.engine.extension.TimeoutExtension$$Lambda/0x00003fc001505718
+org.junit.jupiter.engine.extension.TimeoutConfiguration$$Lambda/0x00003fc001505978
+org.mockito.internal.verification.VerificationModeFactory
+org.mockito.internal.verification.api.VerificationInOrderMode
+org.mockito.internal.verification.Times
+org.mockito.internal.util.DefaultMockingDetails
+org.mockito.internal.listeners.VerificationStartedNotifier
+org.mockito.listeners.VerificationStartedEvent
+org.mockito.internal.verification.MockAwareVerificationMode
+org.mockito.verification.VerificationEvent
+org.mockito.internal.debugging.Localized
+org.mockito.internal.verification.VerificationDataImpl
+java.util.LinkedList$LLSpliterator
+org.mockito.internal.verification.DefaultRegisteredInvocations$$Lambda/0x00003fc0015071a8
+org.mockito.internal.verification.checkers.MissingInvocationChecker
+org.mockito.exceptions.base.MockitoAssertionError
+org.mockito.internal.invocation.InvocationsFinder
+org.mockito.internal.invocation.InvocationsFinder$$Lambda/0x00003fc001507a90
+org.mockito.internal.verification.checkers.NumberOfInvocationsChecker
+org.mockito.internal.invocation.InvocationMarker
+org.mockito.internal.verification.VerificationEventImpl
+org.mockito.internal.stubbing.answers.AbstractThrowsException
+org.mockito.internal.stubbing.answers.ThrowsException
+org.mockito.internal.exceptions.stacktrace.ConditionalStackTraceFilter
+org.mockito.internal.exceptions.stacktrace.StackTraceFilter
+software.amazon.lambda.powertools.metadata.LambdaMetadataClientTest$$Lambda/0x00003fc001502d80
+java.lang.StackTraceElement$HashedModules
+org.junit.platform.launcher.core.OutcomeDelayingEngineExecutionListener$Outcome
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc0015033f8
+org.junit.platform.launcher.core.CompositeTestExecutionListener$$Lambda/0x00003fc001503638
+org.junit.platform.launcher.core.EngineExecutionOrchestrator$$Lambda/0x00003fc001503868
+org.junit.platform.launcher.core.DefaultLauncherSession$ClosedLauncher
+org.apache.maven.surefire.api.suite.RunResult
+org.apache.maven.surefire.booter.ForkedBooter$6
+org.apache.maven.surefire.booter.ForkedBooter$7
+org.apache.maven.surefire.booter.ForkedBooter$1
+org.apache.maven.surefire.booter.spi.AbstractMasterProcessChannelProcessorFactory$2
diff --git a/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientConcurrencyTest.java b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientConcurrencyTest.java
new file mode 100644
index 000000000..a41aebd4d
--- /dev/null
+++ b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientConcurrencyTest.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Future;
+import java.util.concurrent.TimeUnit;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient;
+
+class LambdaMetadataClientConcurrencyTest {
+
+ private LambdaMetadataHttpClient mockHttpClient;
+
+ @BeforeEach
+ void setUp() {
+ mockHttpClient = mock(LambdaMetadataHttpClient.class);
+ LambdaMetadataClient.setHttpClient(mockHttpClient);
+ }
+
+ @AfterEach
+ void tearDown() {
+ LambdaMetadataClient.resetCache();
+ }
+
+ @Test
+ void get_shouldBeThreadSafe() throws Exception {
+ // Given
+ LambdaMetadata metadata = new LambdaMetadata("use1-az1");
+ when(mockHttpClient.fetchMetadata()).thenReturn(metadata);
+
+ int threadCount = 10;
+ ExecutorService executor = Executors.newFixedThreadPool(threadCount);
+ CountDownLatch startLatch = new CountDownLatch(1);
+ List> futures = new ArrayList<>();
+
+ // When - all threads try to get metadata simultaneously
+ for (int i = 0; i < threadCount; i++) {
+ futures.add(executor.submit(() -> {
+ startLatch.await();
+ return LambdaMetadataClient.get();
+ }));
+ }
+ startLatch.countDown();
+
+ // Then - all threads should get the same instance
+ LambdaMetadata firstResult = null;
+ for (Future future : futures) {
+ LambdaMetadata result = future.get(5, TimeUnit.SECONDS);
+ if (firstResult == null) {
+ firstResult = result;
+ }
+ assertThat(result).isSameAs(firstResult);
+ assertThat(result.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ }
+
+ executor.shutdown();
+ executor.awaitTermination(5, TimeUnit.SECONDS);
+ }
+}
diff --git a/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientTest.java b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientTest.java
new file mode 100644
index 000000000..822201ba0
--- /dev/null
+++ b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataClientTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import software.amazon.lambda.powertools.metadata.exception.LambdaMetadataException;
+import software.amazon.lambda.powertools.metadata.internal.LambdaMetadataHttpClient;
+
+class LambdaMetadataClientTest {
+
+ private LambdaMetadataHttpClient mockHttpClient;
+
+ @BeforeEach
+ void setUp() {
+ mockHttpClient = mock(LambdaMetadataHttpClient.class);
+ LambdaMetadataClient.setHttpClient(mockHttpClient);
+ }
+
+ @AfterEach
+ void tearDown() {
+ LambdaMetadataClient.resetCache();
+ }
+
+ @Test
+ void get_shouldReturnMetadata() {
+ // Given
+ LambdaMetadata metadata = new LambdaMetadata("use1-az1");
+ when(mockHttpClient.fetchMetadata()).thenReturn(metadata);
+
+ // When
+ LambdaMetadata result = LambdaMetadataClient.get();
+
+ // Then
+ assertThat(result).isNotNull();
+ assertThat(result.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ }
+
+ @Test
+ void get_shouldCacheMetadata() {
+ // Given
+ LambdaMetadata metadata = new LambdaMetadata("use1-az1");
+ when(mockHttpClient.fetchMetadata()).thenReturn(metadata);
+
+ // When
+ LambdaMetadata first = LambdaMetadataClient.get();
+ LambdaMetadata second = LambdaMetadataClient.get();
+
+ // Then
+ assertThat(first).isSameAs(second);
+ verify(mockHttpClient, times(1)).fetchMetadata();
+ }
+
+ @Test
+ void refresh_shouldFetchNewMetadata() {
+ // Given
+ LambdaMetadata metadata1 = new LambdaMetadata("use1-az1");
+ LambdaMetadata metadata2 = new LambdaMetadata("use1-az2");
+ when(mockHttpClient.fetchMetadata())
+ .thenReturn(metadata1)
+ .thenReturn(metadata2);
+
+ // When
+ LambdaMetadata first = LambdaMetadataClient.get();
+ LambdaMetadata refreshed = LambdaMetadataClient.refresh();
+
+ // Then
+ assertThat(first.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ assertThat(refreshed.getAvailabilityZoneId()).isEqualTo("use1-az2");
+ verify(mockHttpClient, times(2)).fetchMetadata();
+ }
+
+ @Test
+ void get_shouldThrowExceptionOnError() {
+ // Given
+ when(mockHttpClient.fetchMetadata())
+ .thenThrow(new LambdaMetadataException("Test error"));
+
+ // When/Then
+ assertThatThrownBy(LambdaMetadataClient::get)
+ .isInstanceOf(LambdaMetadataException.class)
+ .hasMessage("Test error");
+ }
+
+ @Test
+ void afterRestore_shouldInvalidateCache() {
+ // Given
+ LambdaMetadata metadata1 = new LambdaMetadata("use1-az1");
+ LambdaMetadata metadata2 = new LambdaMetadata("use1-az2");
+ when(mockHttpClient.fetchMetadata())
+ .thenReturn(metadata1)
+ .thenReturn(metadata2);
+
+ // When
+ LambdaMetadata first = LambdaMetadataClient.get();
+
+ // Simulate SnapStart restore
+ LambdaMetadataClient.resetCache();
+
+ LambdaMetadata afterRestore = LambdaMetadataClient.get();
+
+ // Then
+ assertThat(first.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ assertThat(afterRestore.getAvailabilityZoneId()).isEqualTo("use1-az2");
+ verify(mockHttpClient, times(2)).fetchMetadata();
+ }
+}
diff --git a/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataTest.java b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataTest.java
new file mode 100644
index 000000000..f391434ea
--- /dev/null
+++ b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/LambdaMetadataTest.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+
+class LambdaMetadataTest {
+
+ private final ObjectMapper objectMapper = new ObjectMapper();
+
+ @Test
+ void defaultConstructor_shouldCreateInstanceWithNullValues() {
+ // When
+ LambdaMetadata metadata = new LambdaMetadata();
+
+ // Then
+ assertThat(metadata.getAvailabilityZoneId()).isNull();
+ }
+
+ @Test
+ void constructor_withAvailabilityZoneId_shouldSetValue() {
+ // When
+ LambdaMetadata metadata = new LambdaMetadata("use1-az1");
+
+ // Then
+ assertThat(metadata.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ }
+
+ @Test
+ void deserialize_shouldMapJsonProperty() throws Exception {
+ // Given
+ String json = "{\"AvailabilityZoneID\": \"euw1-az3\"}";
+
+ // When
+ LambdaMetadata metadata = objectMapper.readValue(json, LambdaMetadata.class);
+
+ // Then
+ assertThat(metadata.getAvailabilityZoneId()).isEqualTo("euw1-az3");
+ }
+
+ @Test
+ void deserialize_shouldIgnoreUnknownFields() throws Exception {
+ // Given
+ String json = "{\"AvailabilityZoneID\": \"apne1-az1\", \"UnknownField\": \"value\", \"AnotherField\": 123}";
+
+ // When
+ LambdaMetadata metadata = objectMapper.readValue(json, LambdaMetadata.class);
+
+ // Then
+ assertThat(metadata.getAvailabilityZoneId()).isEqualTo("apne1-az1");
+ }
+}
diff --git a/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataExceptionTest.java b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataExceptionTest.java
new file mode 100644
index 000000000..edc1a98db
--- /dev/null
+++ b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/exception/LambdaMetadataExceptionTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata.exception;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.junit.jupiter.api.Test;
+
+class LambdaMetadataExceptionTest {
+
+ @Test
+ void constructor_withMessage_shouldSetMessage() {
+ // When
+ LambdaMetadataException exception = new LambdaMetadataException("Test message");
+
+ // Then
+ assertThat(exception.getMessage()).isEqualTo("Test message");
+ assertThat(exception.getStatusCode()).isEqualTo(-1);
+ assertThat(exception.getCause()).isNull();
+ }
+
+ @Test
+ void constructor_withMessageAndCause_shouldSetBoth() {
+ // Given
+ Throwable cause = new RuntimeException("Root cause");
+
+ // When
+ LambdaMetadataException exception = new LambdaMetadataException("Test message", cause);
+
+ // Then
+ assertThat(exception.getMessage()).isEqualTo("Test message");
+ assertThat(exception.getCause()).isSameAs(cause);
+ assertThat(exception.getStatusCode()).isEqualTo(-1);
+ }
+
+ @Test
+ void constructor_withMessageAndStatusCode_shouldSetBoth() {
+ // When
+ LambdaMetadataException exception = new LambdaMetadataException("Test message", 500);
+
+ // Then
+ assertThat(exception.getMessage()).isEqualTo("Test message");
+ assertThat(exception.getStatusCode()).isEqualTo(500);
+ assertThat(exception.getCause()).isNull();
+ }
+}
diff --git a/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClientTest.java b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClientTest.java
new file mode 100644
index 000000000..f8030500b
--- /dev/null
+++ b/powertools-lambda-metadata/src/test/java/software/amazon/lambda/powertools/metadata/internal/LambdaMetadataHttpClientTest.java
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2023 Amazon.com, Inc. or its affiliates.
+ * Licensed 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.
+ *
+ */
+
+package software.amazon.lambda.powertools.metadata.internal;
+
+import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
+import static com.github.tomakehurst.wiremock.client.WireMock.equalTo;
+import static com.github.tomakehurst.wiremock.client.WireMock.get;
+import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
+import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
+
+import org.junit.jupiter.api.Test;
+
+import com.github.tomakehurst.wiremock.junit5.WireMockRuntimeInfo;
+import com.github.tomakehurst.wiremock.junit5.WireMockTest;
+
+import software.amazon.lambda.powertools.metadata.LambdaMetadata;
+import software.amazon.lambda.powertools.metadata.exception.LambdaMetadataException;
+
+@WireMockTest
+class LambdaMetadataHttpClientTest {
+
+ private static final String TEST_TOKEN = "test-token-12345";
+ private static final String METADATA_PATH = "/2026-01-15/metadata/execution-environment";
+
+ @Test
+ void fetchMetadata_shouldReturnMetadata(WireMockRuntimeInfo wmRuntimeInfo) {
+ // Given
+ stubFor(get(urlEqualTo(METADATA_PATH))
+ .withHeader("Authorization", equalTo("Bearer " + TEST_TOKEN))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBody("{\"AvailabilityZoneID\": \"use1-az1\"}")));
+
+ LambdaMetadataHttpClient client = createClient(wmRuntimeInfo);
+
+ // When
+ LambdaMetadata metadata = client.fetchMetadata();
+
+ // Then
+ assertThat(metadata).isNotNull();
+ assertThat(metadata.getAvailabilityZoneId()).isEqualTo("use1-az1");
+ }
+
+ @Test
+ void fetchMetadata_shouldHandleUnknownFields(WireMockRuntimeInfo wmRuntimeInfo) {
+ // Given - response with extra fields that should be ignored
+ stubFor(get(urlEqualTo(METADATA_PATH))
+ .withHeader("Authorization", equalTo("Bearer " + TEST_TOKEN))
+ .willReturn(aResponse()
+ .withStatus(200)
+ .withHeader("Content-Type", "application/json")
+ .withBody("{\"AvailabilityZoneID\": \"use1-az2\", \"FutureField\": \"value\"}")));
+
+ LambdaMetadataHttpClient client = createClient(wmRuntimeInfo);
+
+ // When
+ LambdaMetadata metadata = client.fetchMetadata();
+
+ // Then
+ assertThat(metadata).isNotNull();
+ assertThat(metadata.getAvailabilityZoneId()).isEqualTo("use1-az2");
+ }
+
+ @Test
+ void fetchMetadata_shouldThrowOnNon200Status(WireMockRuntimeInfo wmRuntimeInfo) {
+ // Given
+ stubFor(get(urlEqualTo(METADATA_PATH))
+ .willReturn(aResponse()
+ .withStatus(500)
+ .withBody("Internal Server Error")));
+
+ LambdaMetadataHttpClient client = createClient(wmRuntimeInfo);
+
+ // When/Then
+ assertThatThrownBy(client::fetchMetadata)
+ .isInstanceOf(LambdaMetadataException.class)
+ .hasMessageContaining("status 500")
+ .satisfies(e -> {
+ LambdaMetadataException ex = (LambdaMetadataException) e;
+ assertThat(ex.getStatusCode()).isEqualTo(500);
+ });
+ }
+
+ @Test
+ void fetchMetadata_shouldThrowOnMissingToken() {
+ // Given
+ LambdaMetadataHttpClient client = new LambdaMetadataHttpClient() {
+ @Override
+ String getRequiredEnvironmentVariable(String name) {
+ if (LambdaMetadataHttpClient.ENV_METADATA_API.equals(name)) {
+ return "localhost:8080";
+ }
+ return super.getRequiredEnvironmentVariable(name);
+ }
+ };
+
+ // When/Then
+ assertThatThrownBy(client::fetchMetadata)
+ .isInstanceOf(LambdaMetadataException.class)
+ .hasMessageContaining(LambdaMetadataHttpClient.ENV_METADATA_TOKEN);
+ }
+
+ @Test
+ void fetchMetadata_shouldThrowOnMissingApi() {
+ // Given
+ LambdaMetadataHttpClient client = new LambdaMetadataHttpClient() {
+ @Override
+ String getRequiredEnvironmentVariable(String name) {
+ if (LambdaMetadataHttpClient.ENV_METADATA_TOKEN.equals(name)) {
+ return TEST_TOKEN;
+ }
+ return super.getRequiredEnvironmentVariable(name);
+ }
+ };
+
+ // When/Then
+ assertThatThrownBy(client::fetchMetadata)
+ .isInstanceOf(LambdaMetadataException.class)
+ .hasMessageContaining(LambdaMetadataHttpClient.ENV_METADATA_API);
+ }
+
+ @Test
+ void fetchMetadata_shouldThrowOn404(WireMockRuntimeInfo wmRuntimeInfo) {
+ // Given
+ stubFor(get(urlEqualTo(METADATA_PATH))
+ .willReturn(aResponse()
+ .withStatus(404)
+ .withBody("Not Found")));
+
+ LambdaMetadataHttpClient client = createClient(wmRuntimeInfo);
+
+ // When/Then
+ assertThatThrownBy(client::fetchMetadata)
+ .isInstanceOf(LambdaMetadataException.class)
+ .satisfies(e -> {
+ LambdaMetadataException ex = (LambdaMetadataException) e;
+ assertThat(ex.getStatusCode()).isEqualTo(404);
+ });
+ }
+
+ private LambdaMetadataHttpClient createClient(WireMockRuntimeInfo wmRuntimeInfo) {
+ return new LambdaMetadataHttpClient() {
+ @Override
+ String getRequiredEnvironmentVariable(String name) {
+ if (LambdaMetadataHttpClient.ENV_METADATA_TOKEN.equals(name)) {
+ return TEST_TOKEN;
+ }
+ if (LambdaMetadataHttpClient.ENV_METADATA_API.equals(name)) {
+ return "localhost:" + wmRuntimeInfo.getHttpPort();
+ }
+ return super.getRequiredEnvironmentVariable(name);
+ }
+ };
+ }
+}
From 761ed10cf502ba3f0c966647c92fc7e368c1cd70 Mon Sep 17 00:00:00 2001
From: "github-actions[bot]"
<41898282+github-actions[bot]@users.noreply.github.com>
Date: Thu, 19 Mar 2026 13:58:46 +0100
Subject: [PATCH 039/116] chore(ci): bump version to 2.10.0 (#2429)
* chore(ci): bump version to 2.10.0
* Restore CHANGELOG.md from main.
---------
Co-authored-by: Powertools for AWS Lambda (Java) Bot <151832416+aws-powertools-bot@users.noreply.github.com>
Co-authored-by: Philipp Page
---
README.md | 6 +++---
examples/pom.xml | 2 +-
examples/powertools-examples-batch/pom.xml | 2 +-
examples/powertools-examples-cloudformation/README.md | 4 ++--
.../infra/sam-graalvm/README.md | 2 +-
examples/powertools-examples-cloudformation/pom.xml | 2 +-
examples/powertools-examples-core-utilities/cdk/app/pom.xml | 2 +-
.../powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
.../powertools-examples-core-utilities/gradle/build.gradle | 6 +++---
.../kotlin/build.gradle.kts | 6 +++---
.../powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam/pom.xml | 2 +-
.../powertools-examples-core-utilities/serverless/pom.xml | 2 +-
.../powertools-examples-core-utilities/terraform/pom.xml | 2 +-
.../powertools-examples-idempotency/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-idempotency/sam/pom.xml | 2 +-
examples/powertools-examples-kafka/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam/pom.xml | 2 +-
.../powertools-examples-serialization/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-serialization/sam/pom.xml | 2 +-
examples/powertools-examples-validation/pom.xml | 2 +-
mkdocs.yml | 2 +-
pom.xml | 2 +-
powertools-batch/pom.xml | 2 +-
powertools-cloudformation/pom.xml | 2 +-
powertools-common/pom.xml | 2 +-
powertools-e2e-tests/handlers/batch/pom.xml | 2 +-
.../handlers/idempotency-functional/pom.xml | 2 +-
powertools-e2e-tests/handlers/idempotency-generics/pom.xml | 2 +-
powertools-e2e-tests/handlers/idempotency/pom.xml | 2 +-
powertools-e2e-tests/handlers/lambda-metadata/pom.xml | 2 +-
.../handlers/largemessage-functional/pom.xml | 2 +-
powertools-e2e-tests/handlers/largemessage/pom.xml | 2 +-
.../handlers/largemessage_idempotent/pom.xml | 2 +-
powertools-e2e-tests/handlers/logging-functional/pom.xml | 2 +-
.../handlers/logging-log4j-fluent-api/pom.xml | 2 +-
powertools-e2e-tests/handlers/logging-log4j/pom.xml | 2 +-
.../handlers/logging-logback-fluent-api/pom.xml | 2 +-
powertools-e2e-tests/handlers/logging-logback/pom.xml | 2 +-
powertools-e2e-tests/handlers/metrics/pom.xml | 2 +-
powertools-e2e-tests/handlers/parameters/pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
powertools-e2e-tests/handlers/tracing/pom.xml | 2 +-
powertools-e2e-tests/handlers/validation-alb-event/pom.xml | 2 +-
.../handlers/validation-apigw-event/pom.xml | 2 +-
powertools-e2e-tests/pom.xml | 2 +-
powertools-idempotency/pom.xml | 2 +-
powertools-idempotency/powertools-idempotency-core/pom.xml | 2 +-
.../powertools-idempotency-dynamodb/pom.xml | 2 +-
powertools-kafka/pom.xml | 2 +-
powertools-lambda-metadata/pom.xml | 2 +-
powertools-large-messages/pom.xml | 2 +-
powertools-logging/pom.xml | 2 +-
powertools-logging/powertools-logging-log4j/pom.xml | 2 +-
powertools-logging/powertools-logging-logback/pom.xml | 2 +-
powertools-metrics/pom.xml | 2 +-
powertools-parameters/pom.xml | 2 +-
.../powertools-parameters-appconfig/pom.xml | 2 +-
.../powertools-parameters-dynamodb/pom.xml | 2 +-
powertools-parameters/powertools-parameters-secrets/pom.xml | 2 +-
powertools-parameters/powertools-parameters-ssm/pom.xml | 2 +-
powertools-parameters/powertools-parameters-tests/pom.xml | 2 +-
powertools-serialization/pom.xml | 2 +-
powertools-tracing/pom.xml | 2 +-
powertools-validation/pom.xml | 2 +-
66 files changed, 73 insertions(+), 73 deletions(-)
diff --git a/README.md b/README.md
index 4c02e2d1f..6e5216b4f 100644
--- a/README.md
+++ b/README.md
@@ -22,17 +22,17 @@ Powertools for AWS Lambda (Java) is available in Maven Central. You can use your
software.amazon.lambda
powertools-tracing
- 2.9.0
+ 2.10.0
software.amazon.lambda
powertools-logging-log4j
- 2.9.0
+ 2.10.0
software.amazon.lambda
powertools-metrics
- 2.9.0
+ 2.10.0
...
diff --git a/examples/pom.xml b/examples/pom.xml
index 5d191063f..291db92df 100644
--- a/examples/pom.xml
+++ b/examples/pom.xml
@@ -20,7 +20,7 @@
software.amazon.lambda
powertools-examples
- 2.9.0
+ 2.10.0
pom
Powertools for AWS Lambda (Java) - Examples
diff --git a/examples/powertools-examples-batch/pom.xml b/examples/powertools-examples-batch/pom.xml
index 7d1253d7d..a82dbedae 100644
--- a/examples/powertools-examples-batch/pom.xml
+++ b/examples/powertools-examples-batch/pom.xml
@@ -5,7 +5,7 @@
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-batch
jar
Powertools for AWS Lambda (Java) - Examples - Batch
diff --git a/examples/powertools-examples-cloudformation/README.md b/examples/powertools-examples-cloudformation/README.md
index 27e564bf3..aff40b331 100644
--- a/examples/powertools-examples-cloudformation/README.md
+++ b/examples/powertools-examples-cloudformation/README.md
@@ -15,7 +15,7 @@ Run the following in your shell:
```bash
cd infra/sam
sam build
-sam deploy --guided --parameter-overrides BucketNameParam=my-unique-bucket-2.9.0718
+sam deploy --guided --parameter-overrides BucketNameParam=my-unique-bucket-2.10.0718
```
### Deploy with CDK
@@ -32,5 +32,5 @@ To build and deploy this application for the first time, run the following in yo
cd infra/cdk
mvn package
cdk synth
-cdk deploy -c BucketNameParam=my-unique-bucket-2.9.0718
+cdk deploy -c BucketNameParam=my-unique-bucket-2.10.0718
```
\ No newline at end of file
diff --git a/examples/powertools-examples-cloudformation/infra/sam-graalvm/README.md b/examples/powertools-examples-cloudformation/infra/sam-graalvm/README.md
index 3aca1408a..d5ae03171 100644
--- a/examples/powertools-examples-cloudformation/infra/sam-graalvm/README.md
+++ b/examples/powertools-examples-cloudformation/infra/sam-graalvm/README.md
@@ -40,7 +40,7 @@ sam build
## Deploy the sample application
```shell
-sam deploy --guided --parameter-overrides BucketNameParam=my-unique-bucket-2.9.0718
+sam deploy --guided --parameter-overrides BucketNameParam=my-unique-bucket-2.10.0718
```
This sample is based on Serverless Application Model (SAM). To deploy it, check out the instructions for getting started with SAM in [the examples directory](../../../README.md)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index dc4d5857b..cb1d19bdf 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -3,7 +3,7 @@
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-cloudformation
jar
diff --git a/examples/powertools-examples-core-utilities/cdk/app/pom.xml b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
index c02b73026..ec1f1364b 100644
--- a/examples/powertools-examples-core-utilities/cdk/app/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
@@ -6,7 +6,7 @@
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-core-utilities-cdk
jar
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index f71f446b6..eb4dae3d2 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -4,7 +4,7 @@
4.0.0
software.amazon.lambda.examples
cdk
- 2.9.0
+ 2.10.0
UTF-8
2.243.0
diff --git a/examples/powertools-examples-core-utilities/gradle/build.gradle b/examples/powertools-examples-core-utilities/gradle/build.gradle
index b01fdcfaa..a228857c8 100644
--- a/examples/powertools-examples-core-utilities/gradle/build.gradle
+++ b/examples/powertools-examples-core-utilities/gradle/build.gradle
@@ -29,8 +29,8 @@ dependencies {
implementation 'com.amazonaws:aws-lambda-java-events:3.16.0'
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.13.2'
implementation 'org.aspectj:aspectjrt:1.9.20.1'
- aspect 'software.amazon.lambda:powertools-tracing:2.9.0'
- aspect 'software.amazon.lambda:powertools-logging-log4j:2.9.0'
- aspect 'software.amazon.lambda:powertools-metrics:2.9.0'
+ aspect 'software.amazon.lambda:powertools-tracing:2.10.0'
+ aspect 'software.amazon.lambda:powertools-logging-log4j:2.10.0'
+ aspect 'software.amazon.lambda:powertools-metrics:2.10.0'
}
diff --git a/examples/powertools-examples-core-utilities/kotlin/build.gradle.kts b/examples/powertools-examples-core-utilities/kotlin/build.gradle.kts
index 3dae5015e..7d2a3b831 100644
--- a/examples/powertools-examples-core-utilities/kotlin/build.gradle.kts
+++ b/examples/powertools-examples-core-utilities/kotlin/build.gradle.kts
@@ -15,9 +15,9 @@ dependencies {
implementation("com.amazonaws:aws-lambda-java-events:3.16.0")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.15.2")
implementation("org.aspectj:aspectjrt:1.9.20.1")
- aspect("software.amazon.lambda:powertools-tracing:2.9.0")
- aspect("software.amazon.lambda:powertools-logging-log4j:2.9.0")
- aspect("software.amazon.lambda:powertools-metrics:2.9.0")
+ aspect("software.amazon.lambda:powertools-tracing:2.10.0")
+ aspect("software.amazon.lambda:powertools-logging-log4j:2.10.0")
+ aspect("software.amazon.lambda:powertools-metrics:2.10.0")
implementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.24")
}
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index 57a3663e7..18f245410 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -4,7 +4,7 @@
Powertools for AWS Lambda (Java) - Examples - Core Utilities (logging, tracing, metrics) with SAM GraalVM
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-core-utilities-sam-graalvm
jar
diff --git a/examples/powertools-examples-core-utilities/sam/pom.xml b/examples/powertools-examples-core-utilities/sam/pom.xml
index 2d6a00161..7b5d1d87d 100644
--- a/examples/powertools-examples-core-utilities/sam/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam/pom.xml
@@ -4,7 +4,7 @@
Powertools for AWS Lambda (Java) - Examples - Core Utilities (logging, tracing, metrics) with SAM
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-core-utilities-sam
jar
diff --git a/examples/powertools-examples-core-utilities/serverless/pom.xml b/examples/powertools-examples-core-utilities/serverless/pom.xml
index 26e647dad..81aebb078 100644
--- a/examples/powertools-examples-core-utilities/serverless/pom.xml
+++ b/examples/powertools-examples-core-utilities/serverless/pom.xml
@@ -4,7 +4,7 @@
Powertools for AWS Lambda (Java) - Examples - Core Utilities (logging, tracing, metrics) with Serverless
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-core-utilities-serverless
jar
diff --git a/examples/powertools-examples-core-utilities/terraform/pom.xml b/examples/powertools-examples-core-utilities/terraform/pom.xml
index 4de1e415c..92e6b709e 100644
--- a/examples/powertools-examples-core-utilities/terraform/pom.xml
+++ b/examples/powertools-examples-core-utilities/terraform/pom.xml
@@ -4,7 +4,7 @@
Powertools for AWS Lambda (Java) - Examples - Core Utilities (logging, tracing, metrics) with Terraform
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-core-utilities-terraform
jar
diff --git a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
index dc05bddbe..ca1c1cd41 100644
--- a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-idempotency-sam-graalvm
jar
Powertools for AWS Lambda (Java) - Examples - Idempotency GraalVM
diff --git a/examples/powertools-examples-idempotency/sam/pom.xml b/examples/powertools-examples-idempotency/sam/pom.xml
index 22d6a9c81..a206b6885 100644
--- a/examples/powertools-examples-idempotency/sam/pom.xml
+++ b/examples/powertools-examples-idempotency/sam/pom.xml
@@ -17,7 +17,7 @@
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-idempotency
jar
Powertools for AWS Lambda (Java) - Examples - Idempotency
diff --git a/examples/powertools-examples-kafka/pom.xml b/examples/powertools-examples-kafka/pom.xml
index 70eef52c1..aa76d208d 100644
--- a/examples/powertools-examples-kafka/pom.xml
+++ b/examples/powertools-examples-kafka/pom.xml
@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-kafka
jar
Powertools for AWS Lambda (Java) - Examples - Kafka
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index aaea139ee..e525a8260 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-parameters-sam-graalvm
jar
Powertools for AWS Lambda (Java) - Examples - Parameters GraalVM
diff --git a/examples/powertools-examples-parameters/sam/pom.xml b/examples/powertools-examples-parameters/sam/pom.xml
index d59e494f2..64f6519ce 100644
--- a/examples/powertools-examples-parameters/sam/pom.xml
+++ b/examples/powertools-examples-parameters/sam/pom.xml
@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-parameters-sam
jar
Powertools for AWS Lambda (Java) - Examples - Parameters
diff --git a/examples/powertools-examples-serialization/sam-graalvm/pom.xml b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
index 73d02365c..59d9d3811 100644
--- a/examples/powertools-examples-serialization/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-serialization-sam-graalvm
jar
Powertools for AWS Lambda (Java) - Examples - Serialization GraalVM
diff --git a/examples/powertools-examples-serialization/sam/pom.xml b/examples/powertools-examples-serialization/sam/pom.xml
index cf66c3e14..ff85d9814 100644
--- a/examples/powertools-examples-serialization/sam/pom.xml
+++ b/examples/powertools-examples-serialization/sam/pom.xml
@@ -2,7 +2,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-serialization-sam
jar
Powertools for AWS Lambda (Java) - Examples - Serialization
diff --git a/examples/powertools-examples-validation/pom.xml b/examples/powertools-examples-validation/pom.xml
index 95f2a064b..e7ecd72af 100644
--- a/examples/powertools-examples-validation/pom.xml
+++ b/examples/powertools-examples-validation/pom.xml
@@ -16,7 +16,7 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4.0.0
software.amazon.lambda.examples
- 2.9.0
+ 2.10.0
powertools-examples-validation
jar
Powertools for AWS Lambda (Java) - Examples - Validation
diff --git a/mkdocs.yml b/mkdocs.yml
index fea59aae0..f19a46f61 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -131,7 +131,7 @@ extra_javascript:
extra:
powertools:
- version: 2.9.0
+ version: 2.10.0
version:
provider: mike
default: latest
diff --git a/pom.xml b/pom.xml
index 75bdf6187..b6c5866a2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
pom
Powertools for AWS Lambda (Java) - Parent
diff --git a/powertools-batch/pom.xml b/powertools-batch/pom.xml
index 37cfdf7b2..31930bde9 100644
--- a/powertools-batch/pom.xml
+++ b/powertools-batch/pom.xml
@@ -6,7 +6,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
A suite of utilities that makes batch message processing using AWS Lambda easier.
diff --git a/powertools-cloudformation/pom.xml b/powertools-cloudformation/pom.xml
index 4c3d2ac70..d8a41ef33 100644
--- a/powertools-cloudformation/pom.xml
+++ b/powertools-cloudformation/pom.xml
@@ -24,7 +24,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Cloudformation
diff --git a/powertools-common/pom.xml b/powertools-common/pom.xml
index cd43df238..d15f86ff2 100644
--- a/powertools-common/pom.xml
+++ b/powertools-common/pom.xml
@@ -24,7 +24,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Common Internal Utilities
diff --git a/powertools-e2e-tests/handlers/batch/pom.xml b/powertools-e2e-tests/handlers/batch/pom.xml
index 3e89aadd2..a884d65d4 100644
--- a/powertools-e2e-tests/handlers/batch/pom.xml
+++ b/powertools-e2e-tests/handlers/batch/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-batch
diff --git a/powertools-e2e-tests/handlers/idempotency-functional/pom.xml b/powertools-e2e-tests/handlers/idempotency-functional/pom.xml
index b5669b21f..47a0dcdf9 100644
--- a/powertools-e2e-tests/handlers/idempotency-functional/pom.xml
+++ b/powertools-e2e-tests/handlers/idempotency-functional/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-idempotency-functional
diff --git a/powertools-e2e-tests/handlers/idempotency-generics/pom.xml b/powertools-e2e-tests/handlers/idempotency-generics/pom.xml
index 21a658e6c..7122d8c02 100644
--- a/powertools-e2e-tests/handlers/idempotency-generics/pom.xml
+++ b/powertools-e2e-tests/handlers/idempotency-generics/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-idempotency-generics
diff --git a/powertools-e2e-tests/handlers/idempotency/pom.xml b/powertools-e2e-tests/handlers/idempotency/pom.xml
index 921599bdb..fe59be802 100644
--- a/powertools-e2e-tests/handlers/idempotency/pom.xml
+++ b/powertools-e2e-tests/handlers/idempotency/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-idempotency
diff --git a/powertools-e2e-tests/handlers/lambda-metadata/pom.xml b/powertools-e2e-tests/handlers/lambda-metadata/pom.xml
index eb69c1d47..518feac59 100644
--- a/powertools-e2e-tests/handlers/lambda-metadata/pom.xml
+++ b/powertools-e2e-tests/handlers/lambda-metadata/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-lambda-metadata
diff --git a/powertools-e2e-tests/handlers/largemessage-functional/pom.xml b/powertools-e2e-tests/handlers/largemessage-functional/pom.xml
index ddfe39a5e..3f2808de9 100644
--- a/powertools-e2e-tests/handlers/largemessage-functional/pom.xml
+++ b/powertools-e2e-tests/handlers/largemessage-functional/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-largemessage-functional
diff --git a/powertools-e2e-tests/handlers/largemessage/pom.xml b/powertools-e2e-tests/handlers/largemessage/pom.xml
index bee253988..1f9e5427a 100644
--- a/powertools-e2e-tests/handlers/largemessage/pom.xml
+++ b/powertools-e2e-tests/handlers/largemessage/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-largemessage
diff --git a/powertools-e2e-tests/handlers/largemessage_idempotent/pom.xml b/powertools-e2e-tests/handlers/largemessage_idempotent/pom.xml
index 5ef7e1963..26ff22da9 100644
--- a/powertools-e2e-tests/handlers/largemessage_idempotent/pom.xml
+++ b/powertools-e2e-tests/handlers/largemessage_idempotent/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-large-msg-idempotent
diff --git a/powertools-e2e-tests/handlers/logging-functional/pom.xml b/powertools-e2e-tests/handlers/logging-functional/pom.xml
index 4ec6e5008..8c7b5cddb 100644
--- a/powertools-e2e-tests/handlers/logging-functional/pom.xml
+++ b/powertools-e2e-tests/handlers/logging-functional/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-logging-functional
diff --git a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml
index 8432aa604..ee73976a7 100644
--- a/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml
+++ b/powertools-e2e-tests/handlers/logging-log4j-fluent-api/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-logging-log4j-fluent-api
diff --git a/powertools-e2e-tests/handlers/logging-log4j/pom.xml b/powertools-e2e-tests/handlers/logging-log4j/pom.xml
index 022f029e6..71b549874 100644
--- a/powertools-e2e-tests/handlers/logging-log4j/pom.xml
+++ b/powertools-e2e-tests/handlers/logging-log4j/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-logging-log4j
diff --git a/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml b/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml
index 83d0abddb..6063b01e6 100644
--- a/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml
+++ b/powertools-e2e-tests/handlers/logging-logback-fluent-api/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-logging-logback-fluent-api
diff --git a/powertools-e2e-tests/handlers/logging-logback/pom.xml b/powertools-e2e-tests/handlers/logging-logback/pom.xml
index f8458db25..441d64d9b 100644
--- a/powertools-e2e-tests/handlers/logging-logback/pom.xml
+++ b/powertools-e2e-tests/handlers/logging-logback/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-logging-logback
diff --git a/powertools-e2e-tests/handlers/metrics/pom.xml b/powertools-e2e-tests/handlers/metrics/pom.xml
index ddc6ae1bd..790900739 100644
--- a/powertools-e2e-tests/handlers/metrics/pom.xml
+++ b/powertools-e2e-tests/handlers/metrics/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-metrics
diff --git a/powertools-e2e-tests/handlers/parameters/pom.xml b/powertools-e2e-tests/handlers/parameters/pom.xml
index fb2deb2aa..f18d54546 100644
--- a/powertools-e2e-tests/handlers/parameters/pom.xml
+++ b/powertools-e2e-tests/handlers/parameters/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-parameters
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index abea8288e..daf66d1a0 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -4,7 +4,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
pom
Handlers for End-to-End tests
Fake handlers that use Powertools for AWS Lambda (Java).
diff --git a/powertools-e2e-tests/handlers/tracing/pom.xml b/powertools-e2e-tests/handlers/tracing/pom.xml
index 9874ce986..3f0dae3f3 100644
--- a/powertools-e2e-tests/handlers/tracing/pom.xml
+++ b/powertools-e2e-tests/handlers/tracing/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-tracing
diff --git a/powertools-e2e-tests/handlers/validation-alb-event/pom.xml b/powertools-e2e-tests/handlers/validation-alb-event/pom.xml
index 14dbb9b13..520b0eb97 100644
--- a/powertools-e2e-tests/handlers/validation-alb-event/pom.xml
+++ b/powertools-e2e-tests/handlers/validation-alb-event/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-validation-alb-event
diff --git a/powertools-e2e-tests/handlers/validation-apigw-event/pom.xml b/powertools-e2e-tests/handlers/validation-apigw-event/pom.xml
index 290e47b13..7f71c076a 100644
--- a/powertools-e2e-tests/handlers/validation-apigw-event/pom.xml
+++ b/powertools-e2e-tests/handlers/validation-apigw-event/pom.xml
@@ -5,7 +5,7 @@
software.amazon.lambda
e2e-test-handlers-parent
- 2.9.0
+ 2.10.0
e2e-test-handler-validation-apigw-event
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 864440833..1f16e561e 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -20,7 +20,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
powertools-e2e-tests
diff --git a/powertools-idempotency/pom.xml b/powertools-idempotency/pom.xml
index cbe2384ba..80ed6268d 100644
--- a/powertools-idempotency/pom.xml
+++ b/powertools-idempotency/pom.xml
@@ -21,7 +21,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
powertools-idempotency
diff --git a/powertools-idempotency/powertools-idempotency-core/pom.xml b/powertools-idempotency/powertools-idempotency-core/pom.xml
index 0676be3fe..1d61a1f14 100644
--- a/powertools-idempotency/powertools-idempotency-core/pom.xml
+++ b/powertools-idempotency/powertools-idempotency-core/pom.xml
@@ -21,7 +21,7 @@
software.amazon.lambda
powertools-idempotency
- 2.9.0
+ 2.10.0
powertools-idempotency-core
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
index e7101da6f..483922da6 100644
--- a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
+++ b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
@@ -21,7 +21,7 @@
software.amazon.lambda
powertools-idempotency
- 2.9.0
+ 2.10.0
powertools-idempotency-dynamodb
diff --git a/powertools-kafka/pom.xml b/powertools-kafka/pom.xml
index 6cade6bbf..5803b4006 100644
--- a/powertools-kafka/pom.xml
+++ b/powertools-kafka/pom.xml
@@ -21,7 +21,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
powertools-kafka
diff --git a/powertools-lambda-metadata/pom.xml b/powertools-lambda-metadata/pom.xml
index 7a5ab6f24..1cf825cd8 100644
--- a/powertools-lambda-metadata/pom.xml
+++ b/powertools-lambda-metadata/pom.xml
@@ -24,7 +24,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Lambda Metadata
diff --git a/powertools-large-messages/pom.xml b/powertools-large-messages/pom.xml
index ad5910ec1..214d66992 100644
--- a/powertools-large-messages/pom.xml
+++ b/powertools-large-messages/pom.xml
@@ -23,7 +23,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
powertools-large-messages
diff --git a/powertools-logging/pom.xml b/powertools-logging/pom.xml
index 631a37b99..5342d9f45 100644
--- a/powertools-logging/pom.xml
+++ b/powertools-logging/pom.xml
@@ -21,7 +21,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Logging
diff --git a/powertools-logging/powertools-logging-log4j/pom.xml b/powertools-logging/powertools-logging-log4j/pom.xml
index d02439325..a719a8d19 100644
--- a/powertools-logging/powertools-logging-log4j/pom.xml
+++ b/powertools-logging/powertools-logging-log4j/pom.xml
@@ -7,7 +7,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-logging/powertools-logging-logback/pom.xml b/powertools-logging/powertools-logging-logback/pom.xml
index ff4c77f18..20af8fe95 100644
--- a/powertools-logging/powertools-logging-logback/pom.xml
+++ b/powertools-logging/powertools-logging-logback/pom.xml
@@ -6,7 +6,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-metrics/pom.xml b/powertools-metrics/pom.xml
index 37f4adae6..5d97e87cc 100644
--- a/powertools-metrics/pom.xml
+++ b/powertools-metrics/pom.xml
@@ -24,7 +24,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Metrics
diff --git a/powertools-parameters/pom.xml b/powertools-parameters/pom.xml
index 0ed7d26dc..757efff5f 100644
--- a/powertools-parameters/pom.xml
+++ b/powertools-parameters/pom.xml
@@ -21,7 +21,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
powertools-parameters
diff --git a/powertools-parameters/powertools-parameters-appconfig/pom.xml b/powertools-parameters/powertools-parameters-appconfig/pom.xml
index 012b5d3a8..d0c53ace2 100644
--- a/powertools-parameters/powertools-parameters-appconfig/pom.xml
+++ b/powertools-parameters/powertools-parameters-appconfig/pom.xml
@@ -7,7 +7,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-parameters/powertools-parameters-dynamodb/pom.xml b/powertools-parameters/powertools-parameters-dynamodb/pom.xml
index ff4be1ab6..54584647e 100644
--- a/powertools-parameters/powertools-parameters-dynamodb/pom.xml
+++ b/powertools-parameters/powertools-parameters-dynamodb/pom.xml
@@ -7,7 +7,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-parameters/powertools-parameters-secrets/pom.xml b/powertools-parameters/powertools-parameters-secrets/pom.xml
index 2dddedec2..3bc2bc2b9 100644
--- a/powertools-parameters/powertools-parameters-secrets/pom.xml
+++ b/powertools-parameters/powertools-parameters-secrets/pom.xml
@@ -7,7 +7,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-parameters/powertools-parameters-ssm/pom.xml b/powertools-parameters/powertools-parameters-ssm/pom.xml
index fac44f57f..50237ad8b 100644
--- a/powertools-parameters/powertools-parameters-ssm/pom.xml
+++ b/powertools-parameters/powertools-parameters-ssm/pom.xml
@@ -7,7 +7,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-parameters/powertools-parameters-tests/pom.xml b/powertools-parameters/powertools-parameters-tests/pom.xml
index 289a86ecb..00e321750 100644
--- a/powertools-parameters/powertools-parameters-tests/pom.xml
+++ b/powertools-parameters/powertools-parameters-tests/pom.xml
@@ -6,7 +6,7 @@
software.amazon.lambda
powertools-parent
- 2.9.0
+ 2.10.0
../../pom.xml
diff --git a/powertools-serialization/pom.xml b/powertools-serialization/pom.xml
index 45a724ba6..5658401c1 100644
--- a/powertools-serialization/pom.xml
+++ b/powertools-serialization/pom.xml
@@ -21,7 +21,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
powertools-serialization
diff --git a/powertools-tracing/pom.xml b/powertools-tracing/pom.xml
index b70c23262..070dc5a1b 100644
--- a/powertools-tracing/pom.xml
+++ b/powertools-tracing/pom.xml
@@ -24,7 +24,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Tracing
diff --git a/powertools-validation/pom.xml b/powertools-validation/pom.xml
index 8dfce6b6a..21d7c0274 100644
--- a/powertools-validation/pom.xml
+++ b/powertools-validation/pom.xml
@@ -24,7 +24,7 @@
powertools-parent
software.amazon.lambda
- 2.9.0
+ 2.10.0
Powertools for AWS Lambda (Java) - Validation
From 49b9b335743967e7d178e55194500915d36a0b83 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 19 Mar 2026 17:49:35 +0100
Subject: [PATCH 040/116] chore: bump org.codehaus.mojo:versions-maven-plugin
(#2426)
Bumps [org.codehaus.mojo:versions-maven-plugin](https://github.com/mojohaus/versions) from 2.20.1 to 2.21.0.
- [Release notes](https://github.com/mojohaus/versions/releases)
- [Changelog](https://github.com/mojohaus/versions/blob/master/ReleaseNotes.md)
- [Commits](https://github.com/mojohaus/versions/compare/2.20.1...2.21.0)
---
updated-dependencies:
- dependency-name: org.codehaus.mojo:versions-maven-plugin
dependency-version: 2.21.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index b6c5866a2..27f0a117f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -112,7 +112,7 @@
4.1.2
0.6.0
1.12.781
- 2.20.1
+ 2.21.0
1.7.0
5.21.0
5.21.0
From bd6d4cdc8df34c7426551f5b83a33eca0f9654ca Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 19 Mar 2026 17:49:44 +0100
Subject: [PATCH 041/116] chore: bump org.apache.maven.plugins:maven-jar-plugin
(#2427)
Bumps [org.apache.maven.plugins:maven-jar-plugin](https://github.com/apache/maven-jar-plugin) from 3.4.2 to 3.5.0.
- [Release notes](https://github.com/apache/maven-jar-plugin/releases)
- [Commits](https://github.com/apache/maven-jar-plugin/compare/maven-jar-plugin-3.4.2...maven-jar-plugin-3.5.0)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-jar-plugin
dependency-version: 3.5.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-idempotency/powertools-idempotency-dynamodb/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
index 483922da6..28f3a6bf6 100644
--- a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
+++ b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
@@ -203,7 +203,7 @@
org.apache.maven.plugins
maven-jar-plugin
- 3.4.2
+ 3.5.0
From 0aaf34ab0a86434aaa96afc30aa13c7dfac9e154 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 19 Mar 2026 17:49:53 +0100
Subject: [PATCH 042/116] chore: bump release-drafter/release-drafter from
7.1.0 to 7.1.1 (#2428)
Bumps [release-drafter/release-drafter](https://github.com/release-drafter/release-drafter) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/release-drafter/release-drafter/releases)
- [Commits](https://github.com/release-drafter/release-drafter/compare/44a942e465867c7465b76aa808ddca6e0acae5da...139054aeaa9adc52ab36ddf67437541f039b88e2)
---
updated-dependencies:
- dependency-name: release-drafter/release-drafter
dependency-version: 7.1.1
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index 951a0b0f9..b492f2d86 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -23,6 +23,6 @@ jobs:
contents: write # required for creating draft releases
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@44a942e465867c7465b76aa808ddca6e0acae5da
+ uses: release-drafter/release-drafter@139054aeaa9adc52ab36ddf67437541f039b88e2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From 2006aff7b51034fc24616bb44e38b7b0913a77db Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 19 Mar 2026 17:50:14 +0100
Subject: [PATCH 043/116] chore: bump
org.graalvm.buildtools:native-maven-plugin (#2425)
Bumps [org.graalvm.buildtools:native-maven-plugin](https://github.com/graalvm/native-build-tools) from 0.11.2 to 0.11.5.
- [Release notes](https://github.com/graalvm/native-build-tools/releases)
- [Commits](https://github.com/graalvm/native-build-tools/compare/0.11.2...0.11.5)
---
updated-dependencies:
- dependency-name: org.graalvm.buildtools:native-maven-plugin
dependency-version: 0.11.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-idempotency/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-serialization/sam-graalvm/pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index cb1d19bdf..41ea4dc3d 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -159,7 +159,7 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
+ 0.11.5
true
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index 18f245410..af06dcc76 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -158,7 +158,7 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
+ 0.11.5
true
diff --git a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
index ca1c1cd41..327a11450 100644
--- a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
@@ -139,7 +139,7 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
+ 0.11.5
true
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index e525a8260..4804f3f86 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -175,7 +175,7 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
+ 0.11.5
true
diff --git a/examples/powertools-examples-serialization/sam-graalvm/pom.xml b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
index 59d9d3811..8683f08ef 100644
--- a/examples/powertools-examples-serialization/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
@@ -61,7 +61,7 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
+ 0.11.5
true
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index daf66d1a0..6bfc5365f 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -216,7 +216,7 @@
org.graalvm.buildtools
native-maven-plugin
- 0.11.2
+ 0.11.5
true
From 06e4f35b1a5488750605007d197046201a7e70bc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Mar 2026 15:58:11 +0100
Subject: [PATCH 044/116] chore: bump github/codeql-action from 4.33.0 to
4.34.1 (#2435)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.33.0 to 4.34.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/github/codeql-action/compare/b1bff81932f5cdfc8695c7752dcee935dcd061c8...38697555549f1db7851b81482ff19f1fa5c4fedc)
---
updated-dependencies:
- dependency-name: github/codeql-action
dependency-version: 4.34.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 01bdf2621..c2a3ced2a 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v3.29.5
+ uses: github/codeql-action/upload-sarif@38697555549f1db7851b81482ff19f1fa5c4fedc # v3.29.5
with:
sarif_file: results.sarif
From 95cd484af68392ae09754202ad810aa07436c654 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Mar 2026 15:58:22 +0100
Subject: [PATCH 045/116] chore: bump sam/build-java25 (#2434)
Bumps sam/build-java25 from `32b91ab` to `fc5fca4`.
---
updated-dependencies:
- dependency-name: sam/build-java25
dependency-version: fc5fca4b79c4d97e46d7bd1d501ee1c68be6b75600375827a085c415239ea355
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index cb8ea7dcd..d81bc9409 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:32b91ab2cbab1eb7b165546f1788e1b113ea1c913aa68c16501458934692fcd2
+FROM public.ecr.aws/sam/build-java25@sha256:fc5fca4b79c4d97e46d7bd1d501ee1c68be6b75600375827a085c415239ea355
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From d9bb2b0a07c4716e00ce7b730342fe01334d523d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Mar 2026 15:58:36 +0100
Subject: [PATCH 046/116] chore: bump squidfunk/mkdocs-material in /docs
(#2433)
Bumps squidfunk/mkdocs-material from `c373999` to `868ad4d`.
---
updated-dependencies:
- dependency-name: squidfunk/mkdocs-material
dependency-version: 868ad4d39fb5865b72d00173ade00f4eae2b38dde7ff790a011cc44ce4a8ff8e
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
docs/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/docs/Dockerfile b/docs/Dockerfile
index b72dc7057..3f3918bdd 100644
--- a/docs/Dockerfile
+++ b/docs/Dockerfile
@@ -1,4 +1,4 @@
-FROM squidfunk/mkdocs-material@sha256:c3739993c3e7c92cfe649ba03cbc04f4fa9b1497886abd16267eb413cda8aecf
+FROM squidfunk/mkdocs-material@sha256:868ad4d39fb5865b72d00173ade00f4eae2b38dde7ff790a011cc44ce4a8ff8e
COPY requirements.txt /tmp/
RUN pip install --require-hashes -r /tmp/requirements.txt
From 9a8477dd14183f0959c514ea046d29de68d8e209 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Mar 2026 15:58:51 +0100
Subject: [PATCH 047/116] chore: bump mockito.version from 5.21.0 to 5.23.0
(#2432)
Bumps `mockito.version` from 5.21.0 to 5.23.0.
Updates `org.mockito:mockito-core` from 5.21.0 to 5.23.0
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.21.0...v5.23.0)
Updates `org.mockito:mockito-subclass` from 5.21.0 to 5.23.0
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.21.0...v5.23.0)
---
updated-dependencies:
- dependency-name: org.mockito:mockito-core
dependency-version: 5.23.0
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: org.mockito:mockito-subclass
dependency-version: 5.23.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam/pom.xml | 2 +-
examples/powertools-examples-validation/pom.xml | 2 +-
pom.xml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index 4804f3f86..a510b8759 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -76,7 +76,7 @@
org.mockito
mockito-core
- 5.21.0
+ 5.23.0
test
diff --git a/examples/powertools-examples-parameters/sam/pom.xml b/examples/powertools-examples-parameters/sam/pom.xml
index 64f6519ce..5b8b17d95 100644
--- a/examples/powertools-examples-parameters/sam/pom.xml
+++ b/examples/powertools-examples-parameters/sam/pom.xml
@@ -50,7 +50,7 @@
org.mockito
mockito-core
- 5.21.0
+ 5.23.0
test
diff --git a/examples/powertools-examples-validation/pom.xml b/examples/powertools-examples-validation/pom.xml
index e7ecd72af..c312f0b39 100644
--- a/examples/powertools-examples-validation/pom.xml
+++ b/examples/powertools-examples-validation/pom.xml
@@ -53,7 +53,7 @@
org.mockito
mockito-core
- 5.21.0
+ 5.23.0
test
diff --git a/pom.xml b/pom.xml
index 27f0a117f..df9644128 100644
--- a/pom.xml
+++ b/pom.xml
@@ -114,7 +114,7 @@
1.12.781
2.21.0
1.7.0
- 5.21.0
+ 5.23.0
5.21.0
2.3.0
1.5.0
From d0bdc090224f64d6d0c1c883d2e90489e35e4397 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Mar 2026 15:59:06 +0100
Subject: [PATCH 048/116] chore: bump org.yaml:snakeyaml from 2.5 to 2.6
(#2431)
Bumps [org.yaml:snakeyaml](https://bitbucket.org/snakeyaml/snakeyaml) from 2.5 to 2.6.
- [Commits](https://bitbucket.org/snakeyaml/snakeyaml/branches/compare/snakeyaml-2.6..snakeyaml-2.5)
---
updated-dependencies:
- dependency-name: org.yaml:snakeyaml
dependency-version: '2.6'
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-e2e-tests/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 1f16e561e..2bd16e7b2 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -152,7 +152,7 @@
org.yaml
snakeyaml
- 2.5
+ 2.6
test
From eda0478c302592c4235db741e1933596e1da8a69 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 26 Mar 2026 15:59:25 +0100
Subject: [PATCH 049/116] chore: bump aws.sdk.version from 2.42.15 to 2.42.17
(#2430)
Bumps `aws.sdk.version` from 2.42.15 to 2.42.17.
Updates `software.amazon.awssdk:bom` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:http-client-spi` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:url-connection-client` from 2.41.11 to 2.42.17
Updates `software.amazon.awssdk:s3` from 2.41.11 to 2.42.17
Updates `software.amazon.awssdk:dynamodb` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:lambda` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:kinesis` from 2.41.11 to 2.42.17
Updates `software.amazon.awssdk:cloudwatch` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:xray` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:sqs` from 2.41.11 to 2.42.17
Updates `software.amazon.awssdk:cloudformation` from 2.42.15 to 2.42.17
Updates `software.amazon.awssdk:sts` from 2.42.15 to 2.42.17
---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
dependency-version: 2.42.17
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:http-client-spi
dependency-version: 2.42.17
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:url-connection-client
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:s3
dependency-version: 2.42.17
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:dynamodb
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:lambda
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:kinesis
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudwatch
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:xray
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:sqs
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudformation
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:sts
dependency-version: 2.42.17
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 41ea4dc3d..9501d2922 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.15
+ 2.42.17
1.9.20.1
diff --git a/pom.xml b/pom.xml
index df9644128..d3aa5c7ee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.3
2.0.17
2.21.1
- 2.42.15
+ 2.42.17
2.20.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 6bfc5365f..37391b269 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.15
+ 2.42.17
1.9.20.1
true
From 4bef85e9df694458474a645d9911d674a9c47dd7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 27 Mar 2026 14:39:16 +0100
Subject: [PATCH 050/116] chore: bump aws.sdk.version from 2.42.17 to 2.42.22
(#2437)
Bumps `aws.sdk.version` from 2.42.17 to 2.42.22.
Updates `software.amazon.awssdk:bom` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:http-client-spi` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:url-connection-client` from 2.41.11 to 2.42.22
Updates `software.amazon.awssdk:s3` from 2.41.11 to 2.42.22
Updates `software.amazon.awssdk:dynamodb` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:lambda` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:kinesis` from 2.41.11 to 2.42.22
Updates `software.amazon.awssdk:cloudwatch` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:xray` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:sqs` from 2.41.11 to 2.42.22
Updates `software.amazon.awssdk:cloudformation` from 2.42.17 to 2.42.22
Updates `software.amazon.awssdk:sts` from 2.42.17 to 2.42.22
---
updated-dependencies:
- dependency-name: software.amazon.awssdk:bom
dependency-version: 2.42.22
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:http-client-spi
dependency-version: 2.42.22
dependency-type: direct:production
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:url-connection-client
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:s3
dependency-version: 2.42.22
dependency-type: direct:production
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:dynamodb
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:lambda
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:kinesis
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudwatch
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:xray
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:sqs
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-minor
- dependency-name: software.amazon.awssdk:cloudformation
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-patch
- dependency-name: software.amazon.awssdk:sts
dependency-version: 2.42.22
dependency-type: direct:development
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 9501d2922..5cd6213f3 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.17
+ 2.42.22
1.9.20.1
diff --git a/pom.xml b/pom.xml
index d3aa5c7ee..472f1cfe4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.3
2.0.17
2.21.1
- 2.42.17
+ 2.42.22
2.20.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 37391b269..5b056a407 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.17
+ 2.42.22
1.9.20.1
true
From 89f4423d3f6e4887fb6629f0fc2ce65d19558e68 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 27 Mar 2026 14:39:27 +0100
Subject: [PATCH 051/116] chore: bump
org.sonatype.central:central-publishing-maven-plugin (#2436)
Bumps [org.sonatype.central:central-publishing-maven-plugin](https://github.com/sonatype/central-publishing-maven-plugin) from 0.9.0 to 0.10.0.
- [Commits](https://github.com/sonatype/central-publishing-maven-plugin/commits)
---
updated-dependencies:
- dependency-name: org.sonatype.central:central-publishing-maven-plugin
dependency-version: 0.10.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 472f1cfe4..4c00bbecf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -564,7 +564,7 @@
org.sonatype.central
central-publishing-maven-plugin
- 0.9.0
+ 0.10.0
true
central
From becec931fea85a783129aa7bb6d7fd81517a82ab Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 27 Mar 2026 14:39:39 +0100
Subject: [PATCH 052/116] chore: bump software.constructs:constructs from
10.4.3 to 10.6.0 (#2439)
Bumps [software.constructs:constructs](https://github.com/aws/constructs) from 10.4.3 to 10.6.0.
- [Release notes](https://github.com/aws/constructs/releases)
- [Commits](https://github.com/aws/constructs/compare/v10.4.3...v10.6.0)
---
updated-dependencies:
- dependency-name: software.constructs:constructs
dependency-version: 10.6.0
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-e2e-tests/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 2bd16e7b2..1af7ce57d 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -30,7 +30,7 @@
11
11
- 10.4.3
+ 10.6.0
2.243.0
From 5753d70c9680fcb54bdc11a80b3ef1766d75a9ed Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 27 Mar 2026 14:40:19 +0100
Subject: [PATCH 053/116] chore: bump sam/build-java25 (#2438)
Bumps sam/build-java25 from `fc5fca4` to `badfeb1`.
---
updated-dependencies:
- dependency-name: sam/build-java25
dependency-version: badfeb1beb0ae397f9b170a5139c49bff9bd0912c8debdb8c4c17a53e70b6195
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index d81bc9409..ca209af17 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:fc5fca4b79c4d97e46d7bd1d501ee1c68be6b75600375827a085c415239ea355
+FROM public.ecr.aws/sam/build-java25@sha256:badfeb1beb0ae397f9b170a5139c49bff9bd0912c8debdb8c4c17a53e70b6195
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From 060f9b84ab16cf74fde7094558bd938cf4f30af3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 30 Mar 2026 15:27:47 +0200
Subject: [PATCH 054/116] chore: bump github/codeql-action from 4.34.1 to
4.35.1 (#2444)
Merged by Claude Code. @phipag approved this action.
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index c2a3ced2a..7e535fe7b 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@38697555549f1db7851b81482ff19f1fa5c4fedc # v3.29.5
+ uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v3.29.5
with:
sarif_file: results.sarif
From 4f9200c92d638fef0e235d668b0ae896372e23df Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 30 Mar 2026 15:27:53 +0200
Subject: [PATCH 055/116] chore: bump
org.apache.maven.plugins:maven-source-plugin (#2443)
Merged by Claude Code. @phipag approved this action.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 4c00bbecf..68bb38515 100644
--- a/pom.xml
+++ b/pom.xml
@@ -99,7 +99,7 @@
0.8.11
1.6.13
3.12.0
- 3.3.1
+ 3.4.0
3.2.1
1.14.1
3.5.4
From 416c6ff4d2e6bb73c1873b25fd7ea7635136d52c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 30 Mar 2026 15:27:58 +0200
Subject: [PATCH 056/116] chore: bump aws.sdk.version from 2.42.22 to 2.42.23
(#2442)
Merged by Claude Code. @phipag approved this action.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 5cd6213f3..04edf29ef 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.22
+ 2.42.23
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 68bb38515..15e18981c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.3
2.0.17
2.21.1
- 2.42.22
+ 2.42.23
2.20.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 5b056a407..74bf1e9ae 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.22
+ 2.42.23
1.9.20.1
true
From edb28eaddb8e782df8a175b1c8d25cced2790609 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 30 Mar 2026 15:28:01 +0200
Subject: [PATCH 057/116] chore: bump com.github.spotbugs:spotbugs-maven-plugin
(#2441)
Merged by Claude Code. @phipag approved this action.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 15e18981c..6cfd64e80 100644
--- a/pom.xml
+++ b/pom.xml
@@ -638,7 +638,7 @@
com.github.spotbugs
spotbugs-maven-plugin
- 4.9.8.1
+ 4.9.8.3
test
From 60e73ffb25468ad4abc0b2cfda9b1d0ea648d26e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 15:09:09 +0200
Subject: [PATCH 058/116] chore: bump log4j.version from 2.25.3 to 2.25.4
(#2446)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bump log4j 2.25.3 → 2.25.4. Bug fixes, no breaking changes. Reviewed and authorized by user, merge performed by Claude.
---
examples/powertools-examples-core-utilities/cdk/app/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
pom.xml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/app/pom.xml b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
index ec1f1364b..135e7ed91 100644
--- a/examples/powertools-examples-core-utilities/cdk/app/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
@@ -11,7 +11,7 @@
jar
- 2.25.3
+ 2.25.4
11
11
1.9.20.1
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index af06dcc76..0dfd0a1ea 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -9,7 +9,7 @@
jar
- 2.25.3
+ 2.25.4
11
11
1.9.20.1
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index a510b8759..4a14e41d1 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -8,7 +8,7 @@
Powertools for AWS Lambda (Java) - Examples - Parameters GraalVM
- 2.25.3
+ 2.25.4
11
11
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 6cfd64e80..732df6fd6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
11
11
3.1.2
- 2.25.3
+ 2.25.4
2.0.17
2.21.1
2.42.23
From 9f228fa78de55faf5529439c3fb34781988b0542 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 15:09:18 +0200
Subject: [PATCH 059/116] chore: bump aws.sdk.version from 2.42.23 to 2.42.24
(#2445)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bump AWS SDK 2.42.23 → 2.42.24. Perf improvements, no breaking changes. Reviewed and authorized by user, merge performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 04edf29ef..8ce045d66 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.23
+ 2.42.24
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 732df6fd6..7cdd7f77c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.1
- 2.42.23
+ 2.42.24
2.20.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 74bf1e9ae..beca67a35 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.23
+ 2.42.24
1.9.20.1
true
From 57a15496dced711cf31111517efa463e6e7567f7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 31 Mar 2026 15:21:51 +0200
Subject: [PATCH 060/116] chore: bump graalvm/setup-graalvm from 1.5.0 to 1.5.1
(#2448)
chore: bump graalvm/setup-graalvm from 1.5.0 to 1.5.1
Patch version bump with no breaking changes. SHAs verified.
Authorized by @pagejep, reviewed and merged by Claude.
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 76f6f1a67..46ad9cf6d 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -107,7 +107,7 @@ jobs:
powertools-*/**
pom.xml
- name: Setup GraalVM
- uses: graalvm/setup-graalvm@f744c72a42b1995d7b0cbc314bde4bace7ac1fe1 # v1.5.0
+ uses: graalvm/setup-graalvm@2149f395d36ce12ad4ee5d7f334b26bf081fa555 # v1.5.1
with:
# Pinned to 21.0.8 due to unsafeAllocated enforcement in 21.0.10+. See #2416
java-version: "21.0.8"
From 278743b7c102b2e8b588eb06cc3fef9996a67e41 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 2 Apr 2026 16:10:24 +0200
Subject: [PATCH 061/116] chore: bump graalvm/setup-graalvm from 1.5.1 to 1.5.2
(#2451)
Bump graalvm/setup-graalvm from 1.5.1 to 1.5.2. Patch release with internal dev dependency updates. SHA verified. Reviewed and approved by @phipag, review performed by Claude.
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index 46ad9cf6d..eac133b63 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -107,7 +107,7 @@ jobs:
powertools-*/**
pom.xml
- name: Setup GraalVM
- uses: graalvm/setup-graalvm@2149f395d36ce12ad4ee5d7f334b26bf081fa555 # v1.5.1
+ uses: graalvm/setup-graalvm@60c26726de13f8b90771df4bc1641a52a3159994 # v1.5.2
with:
# Pinned to 21.0.8 due to unsafeAllocated enforcement in 21.0.10+. See #2416
java-version: "21.0.8"
From 572b1e937aee19d5893d266d36fa4d707e7c0491 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 2 Apr 2026 16:10:44 +0200
Subject: [PATCH 062/116] chore: bump aws.xray.recorder.version from 2.20.0 to
2.21.0 (#2449)
Bump aws.xray.recorder.version from 2.20.0 to 2.21.0. Security-focused release fixing CVEs in transitive dependencies (Jackson, Spring, AWS SDK v2). Reviewed and approved by @phipag, review performed by Claude.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 7cdd7f77c..dc5df3d30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -87,7 +87,7 @@
2.0.17
2.21.1
2.42.24
- 2.20.0
+ 2.21.0
2.2.0
UTF-8
1.4.0
From 3433b7ed23dcb62d436a74032e7fa1c24bf5c46d Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 2 Apr 2026 16:59:11 +0200
Subject: [PATCH 063/116] chore: bump
com.amazonaws:aws-lambda-java-serialization (#2450)
Bump com.amazonaws:aws-lambda-java-serialization from 1.1.6 to 1.3.1. Internal Jackson databind upgrade and deprecated naming strategy modernization. No breaking changes. Reviewed and approved by @phipag, review performed by Claude.
---
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
powertools-kafka/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/pom.xml b/pom.xml
index dc5df3d30..f297e1315 100644
--- a/pom.xml
+++ b/pom.xml
@@ -92,7 +92,7 @@
UTF-8
1.4.0
3.16.1
- 1.1.6
+ 1.3.1
3.14.1
1.9.7
1.13.1
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index beca67a35..4037ddb55 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -14,7 +14,7 @@
11
11
1.4.0
- 1.1.6
+ 1.3.1
3.16.1
3.6.1
1.14.1
diff --git a/powertools-kafka/pom.xml b/powertools-kafka/pom.xml
index 5803b4006..92e472936 100644
--- a/powertools-kafka/pom.xml
+++ b/powertools-kafka/pom.xml
@@ -37,7 +37,7 @@
4.1.1
1.12.1
4.33.4
- 1.1.6
+ 1.3.1
From 7a570023528760441775c1818554bce528af4e38 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 7 Apr 2026 11:24:41 +0200
Subject: [PATCH 064/116] chore: bump aws.sdk.version from 2.42.24 to 2.42.27
(#2453)
chore: bump aws.sdk.version from 2.42.24 to 2.42.27
Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 8ce045d66..003b49002 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.24
+ 2.42.27
1.9.20.1
diff --git a/pom.xml b/pom.xml
index f297e1315..ad6f487aa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.1
- 2.42.24
+ 2.42.27
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 4037ddb55..fdd3d39f2 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.24
+ 2.42.27
1.9.20.1
true
From bddf6d923d05d30fa3ddf3e5ab495dcc6b237d18 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 7 Apr 2026 11:25:01 +0200
Subject: [PATCH 065/116] chore: bump org.apache.kafka:kafka-clients from 4.1.1
to 4.2.0 (#2452)
chore: bump org.apache.kafka:kafka-clients from 4.1.1 to 4.2.0
Reviewed and approved by @phipag. Failing verify check manually verified as acceptable (license). Review performed by Claude.
---
examples/powertools-examples-kafka/pom.xml | 2 +-
powertools-kafka/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-kafka/pom.xml b/examples/powertools-examples-kafka/pom.xml
index aa76d208d..31acf89e2 100644
--- a/examples/powertools-examples-kafka/pom.xml
+++ b/examples/powertools-examples-kafka/pom.xml
@@ -24,7 +24,7 @@
org.apache.kafka
kafka-clients
- 4.1.1
+ 4.2.0
org.apache.avro
diff --git a/powertools-kafka/pom.xml b/powertools-kafka/pom.xml
index 92e472936..aa47bce51 100644
--- a/powertools-kafka/pom.xml
+++ b/powertools-kafka/pom.xml
@@ -34,7 +34,7 @@
- 4.1.1
+ 4.2.0
1.12.1
4.33.4
1.3.1
From b45503620a8d4d0614c8b803daf4e8b0792b1037 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 7 Apr 2026 18:49:30 +0200
Subject: [PATCH 066/116] chore: bump aws-actions/configure-aws-credentials
from 6.0.0 to 6.1.0 (#2456)
Bump aws-actions/configure-aws-credentials from 6.0.0 to 6.1.0. Reviewed and approved by @phipag. Review performed by Claude.
---
.github/workflows/build-docs.yml | 2 +-
.github/workflows/check-e2e.yml | 4 ++--
.github/workflows/release.yml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index 6a33820c7..de30c582b 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -43,7 +43,7 @@ jobs:
docker build -t squidfunk/mkdocs-material ./docs/
docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
+ uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_DOCS_ROLE_ARN }}
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index 4cf7234c9..ad0012da9 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -116,7 +116,7 @@ jobs:
- name: Build all modules
run: mvn -B -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
- uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
+ uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
@@ -154,7 +154,7 @@ jobs:
- name: Build all modules
run: mvn -B -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
- uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7 # v6.0.0
+ uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index eab539ee1..b8b016433 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -286,7 +286,7 @@ jobs:
docker build -t squidfunk/mkdocs-material ./docs/
docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@8df5847569e6427dd6c4fb1cf565c83acfa8afa7
+ uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_DOCS_ROLE_ARN }}
From 8264d6f01a395b1a4f1c749559efb0c8dd51d794 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 7 Apr 2026 18:49:48 +0200
Subject: [PATCH 067/116] chore: bump aws.sdk.version from 2.42.27 to 2.42.29
(#2455)
Bump aws.sdk.version from 2.42.27 to 2.42.29. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 003b49002..e8b0a5857 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.27
+ 2.42.29
1.9.20.1
diff --git a/pom.xml b/pom.xml
index ad6f487aa..25d108aee 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.1
- 2.42.27
+ 2.42.29
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index fdd3d39f2..72471d2c6 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.1
1.14.1
3.14.1
- 2.42.27
+ 2.42.29
1.9.20.1
true
From 55cf3c5bef10c1bf98e1b9c8029748769632b128 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 7 Apr 2026 18:50:06 +0200
Subject: [PATCH 068/116] chore: bump com.google.protobuf:protobuf-java from
4.33.4 to 4.34.1 (#2454)
Bump com.google.protobuf:protobuf-java from 4.33.4 to 4.34.1. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-kafka/pom.xml | 2 +-
powertools-kafka/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-kafka/pom.xml b/examples/powertools-examples-kafka/pom.xml
index 31acf89e2..ba29bcfb7 100644
--- a/examples/powertools-examples-kafka/pom.xml
+++ b/examples/powertools-examples-kafka/pom.xml
@@ -12,7 +12,7 @@
11
1.9.20.1
1.12.1
- 4.33.4
+ 4.34.1
diff --git a/powertools-kafka/pom.xml b/powertools-kafka/pom.xml
index aa47bce51..2ff6a8e72 100644
--- a/powertools-kafka/pom.xml
+++ b/powertools-kafka/pom.xml
@@ -36,7 +36,7 @@
4.2.0
1.12.1
- 4.33.4
+ 4.34.1
1.3.1
From 0ea4f06a0ec456df0f70c2ca729020da311b2f4b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 8 Apr 2026 16:41:31 +0200
Subject: [PATCH 069/116] chore: bump software.amazon.awscdk:aws-cdk-lib from
2.243.0 to 2.248.0 (#2459)
Bump software.amazon.awscdk:aws-cdk-lib from 2.243.0 to 2.248.0. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
powertools-e2e-tests/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index eb4dae3d2..a3543464d 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -7,7 +7,7 @@
2.10.0
UTF-8
- 2.243.0
+ 2.248.0
[10.0.0,11.0.0)
5.14.1
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 1af7ce57d..92f49c4e7 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -31,7 +31,7 @@
11
11
10.6.0
- 2.243.0
+ 2.248.0
From ad28033f4733380364d7cf80a84674fb3857eaab Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 8 Apr 2026 16:41:50 +0200
Subject: [PATCH 070/116] chore: bump org.mockito:mockito-junit-jupiter from
5.21.0 to 5.23.0 (#2458)
Bump org.mockito:mockito-junit-jupiter from 5.21.0 to 5.23.0. Aligns with mockito-core at 5.23.0. Reviewed and approved by @phipag. Review performed by Claude.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 25d108aee..1bf75bb8d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,7 +115,7 @@
2.21.0
1.7.0
5.23.0
- 5.21.0
+ 5.23.0
2.3.0
1.5.0
0.11.5
From 8326efc61165fcd4d2c9fb520ca745f79284ca24 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 9 Apr 2026 17:35:09 +0200
Subject: [PATCH 071/116] chore: bump
com.amazonaws:aws-lambda-java-runtime-interface-client (#2462)
Bump com.amazonaws:aws-lambda-java-runtime-interface-client from 2.9.0 to 2.10.1. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-idempotency/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-serialization/sam-graalvm/pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
6 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index e8b0a5857..7fe9749a3 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -77,7 +77,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.9.0
+ 2.10.1
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index 0dfd0a1ea..65bb86f01 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -49,7 +49,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.9.0
+ 2.10.1
org.apache.logging.log4j
diff --git a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
index 327a11450..1c07de40b 100644
--- a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
@@ -43,7 +43,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.9.0
+ 2.10.1
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index 4a14e41d1..4f4d9493b 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -49,7 +49,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.9.0
+ 2.10.1
org.apache.logging.log4j
diff --git a/examples/powertools-examples-serialization/sam-graalvm/pom.xml b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
index 8683f08ef..e2744223b 100644
--- a/examples/powertools-examples-serialization/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-serialization/sam-graalvm/pom.xml
@@ -36,7 +36,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.9.0
+ 2.10.1
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 72471d2c6..1272d4c18 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -137,7 +137,7 @@
com.amazonaws
aws-lambda-java-runtime-interface-client
- 2.9.0
+ 2.10.1
From 8c09de20b7bb4dc8b245c251a4241879111b6ac3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 9 Apr 2026 17:35:27 +0200
Subject: [PATCH 072/116] chore: bump
org.apache.maven.plugins:maven-shade-plugin (#2461)
Bump org.apache.maven.plugins:maven-shade-plugin from 3.6.1 to 3.6.2. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-batch/pom.xml | 2 +-
examples/powertools-examples-cloudformation/pom.xml | 2 +-
examples/powertools-examples-core-utilities/cdk/app/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam/pom.xml | 2 +-
examples/powertools-examples-core-utilities/serverless/pom.xml | 2 +-
examples/powertools-examples-core-utilities/terraform/pom.xml | 2 +-
examples/powertools-examples-idempotency/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-idempotency/sam/pom.xml | 2 +-
examples/powertools-examples-kafka/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
12 files changed, 12 insertions(+), 12 deletions(-)
diff --git a/examples/powertools-examples-batch/pom.xml b/examples/powertools-examples-batch/pom.xml
index a82dbedae..d6acd6c4d 100644
--- a/examples/powertools-examples-batch/pom.xml
+++ b/examples/powertools-examples-batch/pom.xml
@@ -120,7 +120,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 7fe9749a3..7598528bd 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -116,7 +116,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-core-utilities/cdk/app/pom.xml b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
index 135e7ed91..93286d3f2 100644
--- a/examples/powertools-examples-core-utilities/cdk/app/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
@@ -104,7 +104,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index 65bb86f01..d707a821a 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -116,7 +116,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-core-utilities/sam/pom.xml b/examples/powertools-examples-core-utilities/sam/pom.xml
index 7b5d1d87d..917215c21 100644
--- a/examples/powertools-examples-core-utilities/sam/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam/pom.xml
@@ -90,7 +90,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-core-utilities/serverless/pom.xml b/examples/powertools-examples-core-utilities/serverless/pom.xml
index 81aebb078..8e5ff0c9c 100644
--- a/examples/powertools-examples-core-utilities/serverless/pom.xml
+++ b/examples/powertools-examples-core-utilities/serverless/pom.xml
@@ -91,7 +91,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-core-utilities/terraform/pom.xml b/examples/powertools-examples-core-utilities/terraform/pom.xml
index 92e6b709e..461737a7a 100644
--- a/examples/powertools-examples-core-utilities/terraform/pom.xml
+++ b/examples/powertools-examples-core-utilities/terraform/pom.xml
@@ -91,7 +91,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
index 1c07de40b..eeb32cae0 100644
--- a/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-idempotency/sam-graalvm/pom.xml
@@ -96,7 +96,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-idempotency/sam/pom.xml b/examples/powertools-examples-idempotency/sam/pom.xml
index a206b6885..faf502deb 100644
--- a/examples/powertools-examples-idempotency/sam/pom.xml
+++ b/examples/powertools-examples-idempotency/sam/pom.xml
@@ -107,7 +107,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-kafka/pom.xml b/examples/powertools-examples-kafka/pom.xml
index ba29bcfb7..0571c9dfe 100644
--- a/examples/powertools-examples-kafka/pom.xml
+++ b/examples/powertools-examples-kafka/pom.xml
@@ -64,7 +64,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index 4f4d9493b..bfd4f6191 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -132,7 +132,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.6.1
+ 3.6.2
package
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 1272d4c18..0a3a76031 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -16,7 +16,7 @@
1.4.0
1.3.1
3.16.1
- 3.6.1
+ 3.6.2
1.14.1
3.14.1
2.42.29
From bc845f69e648ce851faca012fca9a9917f1d8bde Mon Sep 17 00:00:00 2001
From: Philipp Page
Date: Thu, 9 Apr 2026 17:38:08 +0200
Subject: [PATCH 073/116] chore(e2e): widen CloudWatch query window in
MetricsE2ET to fix flaky test (#2460)
* fix: widen CloudWatch query window in MetricsE2ET to fix flaky test
Pad the CloudWatch query time window by -1min/+2min for standard
resolution metric queries to account for CloudWatch eventual consistency.
Metric timestamps can shift by up to a minute during batch processing,
causing MetricDataNotFoundException when using a tight 1-minute window.
Closes #2440
Co-Authored-By: Claude Opus 4.6
* fix: also pad high-resolution metric query window
The high-res metric query (period=1s) also fails with the original
1-minute window due to CloudWatch eventual consistency. Apply the same
padded window and sum all returned data points, since only the
high-resolution metric appears at 1-second granularity.
Co-Authored-By: Claude Opus 4.6
* fix: assert high-res metric value is present instead of summing
With the padded window, both standard (4) and high-res (8) product
metrics appear as separate 1-second buckets, so the sum is 12 not 8.
Instead, assert that the high-res value (8.0) is contained in the
returned data points.
Co-Authored-By: Claude Opus 4.6
---------
Co-authored-by: Claude Opus 4.6
---
.../amazon/lambda/powertools/MetricsE2ET.java | 31 ++++++++++---------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/MetricsE2ET.java b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/MetricsE2ET.java
index 35f8b5ba3..ceb4b8c57 100644
--- a/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/MetricsE2ET.java
+++ b/powertools-e2e-tests/src/test/java/software/amazon/lambda/powertools/MetricsE2ET.java
@@ -18,7 +18,6 @@
import static software.amazon.lambda.powertools.testutils.Infrastructure.FUNCTION_NAME_OUTPUT;
import static software.amazon.lambda.powertools.testutils.lambda.LambdaInvoker.invokeFunction;
-import java.time.Clock;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
import java.util.Collections;
@@ -74,7 +73,6 @@ static void tearDown() {
void test_recordMetrics() {
// GIVEN
- Instant currentTimeTruncatedToMinutes = Instant.now(Clock.systemUTC()).truncatedTo(ChronoUnit.MINUTES);
String event1 = "{ \"metrics\": {\"orders\": 1, \"products\": 4}, \"dimensions\": { \"Environment\": \"test\"}, \"highResolution\": \"false\"}";
String event2 = "{ \"metrics\": {\"orders\": 1, \"products\": 8}, \"dimensions\": { \"Environment\": \"test\"}, \"highResolution\": \"true\"}";
@@ -84,15 +82,20 @@ void test_recordMetrics() {
invokeFunction(functionName, event2);
// THEN
+ // Pad the query window to address CloudWatch eventual consistency:
+ // metric timestamps can shift by up to a minute during batch processing.
+ Instant paddedStart = invocationResult.getStart().minus(1, ChronoUnit.MINUTES);
+ Instant paddedEnd = invocationResult.getEnd().plus(2, ChronoUnit.MINUTES);
+
MetricsFetcher metricsFetcher = new MetricsFetcher();
- List coldStart = metricsFetcher.fetchMetrics(invocationResult.getStart(), invocationResult.getEnd(), 60,
+ List coldStart = metricsFetcher.fetchMetrics(paddedStart, paddedEnd, 60,
NAMESPACE,
"ColdStart", Stream.of(new String[][] {
{ "FunctionName", functionName },
{ "Service", SERVICE } }).collect(Collectors.toMap(data -> data[0], data -> data[1])));
assertThat(coldStart.get(0)).isEqualTo(1);
List orderMetrics = RetryUtils.withRetry(() -> {
- List metrics = metricsFetcher.fetchMetrics(invocationResult.getStart(), invocationResult.getEnd(),
+ List metrics = metricsFetcher.fetchMetrics(paddedStart, paddedEnd,
60, NAMESPACE, "orders", Collections.singletonMap("Environment", "test"));
if (metrics.get(0) != 2.0) {
throw new DataNotReadyException("Expected 2.0 orders but got " + metrics.get(0));
@@ -100,30 +103,28 @@ void test_recordMetrics() {
return metrics;
}, "orderMetricsRetry", DataNotReadyException.class).get();
assertThat(orderMetrics.get(0)).isEqualTo(2);
- List productMetrics = metricsFetcher.fetchMetrics(invocationResult.getStart(),
- invocationResult.getEnd(), 60, NAMESPACE,
+ List productMetrics = metricsFetcher.fetchMetrics(paddedStart,
+ paddedEnd, 60, NAMESPACE,
"products", Collections.singletonMap("Environment", "test"));
// When searching across a 1 minute time period with a period of 60 we find both metrics and the sum is 12
assertThat(productMetrics.get(0)).isEqualTo(12);
- orderMetrics = metricsFetcher.fetchMetrics(invocationResult.getStart(), invocationResult.getEnd(), 60,
+ orderMetrics = metricsFetcher.fetchMetrics(paddedStart, paddedEnd, 60,
NAMESPACE,
"orders", Collections.singletonMap("Service", SERVICE));
assertThat(orderMetrics.get(0)).isEqualTo(2);
- productMetrics = metricsFetcher.fetchMetrics(invocationResult.getStart(), invocationResult.getEnd(), 60,
+ productMetrics = metricsFetcher.fetchMetrics(paddedStart, paddedEnd, 60,
NAMESPACE,
"products", Collections.singletonMap("Service", SERVICE));
assertThat(productMetrics.get(0)).isEqualTo(12);
- Instant searchStartTime = currentTimeTruncatedToMinutes.plusSeconds(15);
- Instant searchEndTime = currentTimeTruncatedToMinutes.plusSeconds(45);
-
- List productMetricDataResult = metricsFetcher.fetchMetrics(searchStartTime, searchEndTime, 1, NAMESPACE,
+ List productMetricDataResult = metricsFetcher.fetchMetrics(paddedStart,
+ paddedEnd, 1, NAMESPACE,
"products", Collections.singletonMap("Environment", "test"));
- // We are searching across the time period the metric was created but with a period of 1 second. Only the high
- // resolution metric will be available at this point
- assertThat(productMetricDataResult.get(0)).isEqualTo(8);
+ // With a period of 1 second and a padded window, both standard (4) and high resolution (8)
+ // metrics may appear as separate 1-second buckets. Verify the high resolution value is present.
+ assertThat(productMetricDataResult).contains(8.0);
}
}
From 2db380f2ec75e435aec15d4a292048dea777167b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Apr 2026 17:23:34 +0200
Subject: [PATCH 074/116] chore: bump actions/upload-artifact from 7.0.0 to
7.0.1 (#2467)
Bump actions/upload-artifact from 7.0.0 to 7.0.1. Reviewed and approved by @phipag. Review performed by Claude.
---
.github/workflows/release.yml | 2 +-
.github/workflows/security-scorecard.yml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b8b016433..ba7d018d0 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -113,7 +113,7 @@ jobs:
snapshot: ${{ inputs.snapshot}}
- id: upload_source
name: Upload artifacts
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
if-no-files-found: error
name: source
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 7e535fe7b..5492a9339 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -47,7 +47,7 @@ jobs:
publish_results: true
repo_token: ${{ secrets.SCORECARD_TOKEN }}
- name: Upload Results
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: SARIF file
path: results.sarif
From b689f125af10a99fd7758290b65f255a0a1c90e7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Apr 2026 17:23:51 +0200
Subject: [PATCH 075/116] chore: bump release-drafter/release-drafter from
7.1.1 to 7.2.0 (#2466)
Bump release-drafter/release-drafter from 7.1.1 to 7.2.0. Reviewed and approved by @phipag. Review performed by Claude.
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index b492f2d86..f0104f177 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -23,6 +23,6 @@ jobs:
contents: write # required for creating draft releases
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@139054aeaa9adc52ab36ddf67437541f039b88e2
+ uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From 2d157fc03e29f1ca6c19df41e0076b95126640d7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Apr 2026 17:24:08 +0200
Subject: [PATCH 076/116] chore: bump sam/build-java25 (#2465)
Bump sam/build-java25 Docker digest in e2e tests. Reviewed and approved by @phipag. Review performed by Claude.
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index ca209af17..d7cc856bc 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:badfeb1beb0ae397f9b170a5139c49bff9bd0912c8debdb8c4c17a53e70b6195
+FROM public.ecr.aws/sam/build-java25@sha256:9ddb7b5954969c5d734b2dcd74ffd68b93816adc56a12209f6b8620ac107c899
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From ab50f56028cc68bc8e6a2d59b4f46353b5309083 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Apr 2026 17:24:25 +0200
Subject: [PATCH 077/116] chore: bump org.codehaus.mojo:exec-maven-plugin from
3.6.2 to 3.6.3 (#2464)
Bump org.codehaus.mojo:exec-maven-plugin from 3.6.2 to 3.6.3. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index a3543464d..12faaeb91 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -25,7 +25,7 @@
org.codehaus.mojo
exec-maven-plugin
- 3.6.2
+ 3.6.3
cdk.CdkApp
diff --git a/pom.xml b/pom.xml
index 1bf75bb8d..00b5da84a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -450,7 +450,7 @@
org.codehaus.mojo
exec-maven-plugin
- 3.6.2
+ 3.6.3
org.graalvm.buildtools
From 5f4b010bc4b13d5f85c02b8aabecd528ad297cc4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 13 Apr 2026 17:24:43 +0200
Subject: [PATCH 078/116] chore: bump aws.sdk.version from 2.42.29 to 2.42.32
(#2463)
Bump aws.sdk.version from 2.42.29 to 2.42.32. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 7598528bd..81ee8d962 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.29
+ 2.42.32
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 00b5da84a..2fb224475 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.1
- 2.42.29
+ 2.42.32
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 0a3a76031..0d2f80902 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.14.1
- 2.42.29
+ 2.42.32
1.9.20.1
true
From 28802fdb85963f29a7303071f81e37519f7489b7 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 14 Apr 2026 17:57:43 +0200
Subject: [PATCH 079/116] chore: bump org.apache.kafka:kafka-clients (#2468)
Bump org.apache.kafka:kafka-clients from 4.0.0 to 4.0.2 in examples/powertools-examples-kafka/tools. Patch-level update with security fixes (4 CVEs) and bug fixes. No breaking changes. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-kafka/tools/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/powertools-examples-kafka/tools/pom.xml b/examples/powertools-examples-kafka/tools/pom.xml
index 7fb12f136..bcb3d84d5 100644
--- a/examples/powertools-examples-kafka/tools/pom.xml
+++ b/examples/powertools-examples-kafka/tools/pom.xml
@@ -13,7 +13,7 @@
11
1.12.1
4.31.0
- 4.0.0
+ 4.0.2
From f9596a54c4a459d2c1afe1c26b4c05cecc4c9cb0 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Apr 2026 13:32:26 +0200
Subject: [PATCH 080/116] chore: bump org.junit.jupiter:junit-jupiter from
5.14.1 to 5.14.3 (#2470)
Bump org.junit.jupiter:junit-jupiter from 5.14.1 to 5.14.3 in examples CDK pom. Patch-level update with 2 bug fixes, no breaking changes. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index 12faaeb91..2231d945a 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -9,7 +9,7 @@
UTF-8
2.248.0
[10.0.0,11.0.0)
- 5.14.1
+ 5.14.3
From 0d1c06459e23a3097c62edcd628f74355aee9b3b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 15 Apr 2026 13:32:45 +0200
Subject: [PATCH 081/116] chore: bump aws.sdk.version from 2.42.32 to 2.42.34
(#2469)
Bump aws.sdk.version from 2.42.32 to 2.42.34. Patch-level update with DynamoDB Enhanced Client bug fix and Netty connection hygiene improvement, no breaking changes. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 81ee8d962..9a4d3e9d8 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.32
+ 2.42.34
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 2fb224475..90c41bd36 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.1
- 2.42.32
+ 2.42.34
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 0d2f80902..b93fe597c 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.14.1
- 2.42.32
+ 2.42.34
1.9.20.1
true
From 83298c9fbdf0ce41a57d7ffb62dc575e247149cb Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Apr 2026 11:42:36 +0200
Subject: [PATCH 082/116] chore: bump github/codeql-action from 4.35.1 to
4.35.2 (#2474)
Bump github/codeql-action from 4.35.1 to 4.35.2. Reviewed and approved by @phipag. Review performed by Claude.
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 5492a9339..bf06629f4 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@c10b8064de6f491fea524254123dbe5e09572f13 # v3.29.5
+ uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v3.29.5
with:
sarif_file: results.sarif
From 888497df556fd97543b2b47c90763488cd0d2356 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Apr 2026 11:42:54 +0200
Subject: [PATCH 083/116] chore: bump aws.sdk.version from 2.41.11 to 2.42.34
(#2473)
Bump aws.sdk.version from 2.41.11 to 2.42.34 in batch example module. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-batch/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/powertools-examples-batch/pom.xml b/examples/powertools-examples-batch/pom.xml
index d6acd6c4d..d566ac351 100644
--- a/examples/powertools-examples-batch/pom.xml
+++ b/examples/powertools-examples-batch/pom.xml
@@ -14,7 +14,7 @@
11
11
1.9.20.1
- 2.41.11
+ 2.42.34
From 865ec5db68fb482f0779576de4f96ab45887153c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Apr 2026 11:43:11 +0200
Subject: [PATCH 084/116] chore: bump software.amazon.awscdk:aws-cdk-lib from
2.248.0 to 2.250.0 (#2472)
Bump software.amazon.awscdk:aws-cdk-lib from 2.248.0 to 2.250.0. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
powertools-e2e-tests/pom.xml | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index 2231d945a..9893c5fd6 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -7,7 +7,7 @@
2.10.0
UTF-8
- 2.248.0
+ 2.250.0
[10.0.0,11.0.0)
5.14.3
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 92f49c4e7..f8c2ffcc9 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -31,7 +31,7 @@
11
11
10.6.0
- 2.248.0
+ 2.250.0
From 503cd76c64d88f863527c3e8e1ed297dbf0c4f8e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Apr 2026 14:36:31 +0200
Subject: [PATCH 085/116] chore: bump
org.apache.maven.plugins:maven-surefire-plugin (#2476)
Bump maven-surefire-plugin from 3.5.4 to 3.5.5. Patch release with bug fixes and minor features, no breaking changes. Reviewed and approved by @phipag. Review performed by Claude.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 90c41bd36..31442af58 100644
--- a/pom.xml
+++ b/pom.xml
@@ -102,7 +102,7 @@
3.4.0
3.2.1
1.14.1
- 3.5.4
+ 3.5.5
0.8.14
1.7.0
3.12.0
From 60cde355470942c7a28ddd3f3ccc5413b2026dc5 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 17 Apr 2026 14:36:49 +0200
Subject: [PATCH 086/116] chore: bump aws.sdk.version from 2.42.34 to 2.42.35
(#2475)
Bump aws.sdk.version from 2.42.34 to 2.42.35. Patch release with bug fixes and new service features, no breaking changes. Reviewed and approved by @phipag. Review performed by Claude.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 9a4d3e9d8..4e45417d3 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.34
+ 2.42.35
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 31442af58..7d8fdc64c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.1
- 2.42.34
+ 2.42.35
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index b93fe597c..0b030ab24 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.14.1
- 2.42.34
+ 2.42.35
1.9.20.1
true
From 69723c642ce346ea031a5baf676cadb8d44186b2 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Apr 2026 11:43:48 +0200
Subject: [PATCH 087/116] chore: bump tj-actions/changed-files from 47.0.5 to
47.0.6 (#2479)
Reviewed and approved by @phipag. Review performed by Claude (Opus 4.7) via /dependabot-review. Patch bump; SHA verified; no functional changes.
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index eac133b63..ecc47feb6 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -101,7 +101,7 @@ jobs:
fetch-depth: 0
- name: Get changed files
id: changed-files
- uses: tj-actions/changed-files@22103cc46bda19c2b464ffe86db46df6922fd323 # v47.0.5
+ uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.6
with:
files: |
powertools-*/**
From 295e4dc952c61045fca61e5bc8fccb1b9d34e742 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Apr 2026 11:44:06 +0200
Subject: [PATCH 088/116] chore: bump
org.apache.maven.plugins:maven-compiler-plugin (#2478)
Reviewed and approved by @phipag. Review performed by Claude (Opus 4.7) via /dependabot-review. Minor bump; no breaking changes affect this repo.
---
examples/powertools-examples-core-utilities/cdk/infra/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
powertools-e2e-tests/pom.xml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
index 9893c5fd6..73180ab67 100644
--- a/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/infra/pom.xml
@@ -16,7 +16,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.14.1
+ 3.15.0
11
11
diff --git a/pom.xml b/pom.xml
index 7d8fdc64c..528339459 100644
--- a/pom.xml
+++ b/pom.xml
@@ -93,7 +93,7 @@
1.4.0
3.16.1
1.3.1
- 3.14.1
+ 3.15.0
1.9.7
1.13.1
0.8.11
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 0b030ab24..4a2acb298 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -18,7 +18,7 @@
3.16.1
3.6.2
1.14.1
- 3.14.1
+ 3.15.0
2.42.35
1.9.20.1
true
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index f8c2ffcc9..13e62c67e 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -197,7 +197,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.14.1
+ 3.15.0
${maven.compiler.source}
${maven.compiler.target}
From 8565ca4a0766a6b28dcf9dafe8ad5fd0a0e7dcf8 Mon Sep 17 00:00:00 2001
From: Pratap Chandra Deo <61131823+Pratapchandradeo@users.noreply.github.com>
Date: Tue, 21 Apr 2026 19:24:32 +0530
Subject: [PATCH 089/116] feat(logging): add automatic TenantId logging to
Logger default properties (#2471)
* feat: add automatic TenantId logging to Logger default properties
- Add TENANT_ID to PowertoolsLoggedFields enum with null-safety checks
- Create TENANT_ID_RESOLVER in Log4j2 PowertoolsResolver with isResolvable check
- Register TENANT_ID resolver in eventResolverMap for Log4j2 support
- Add TENANT_ID_ATTR_NAME constant to LambdaEcsEncoder (ECS format: tenant.id)
- Add conditional null-safe serialization of tenant_id in Logback ECS encoder
- Update LambdaJsonLayout.json to include tenant_id field for Log4j2 JSON
- Update LambdaEcsLayout.json to include tenant.id field for Log4j2 ECS
- Update LambdaJsonEncoder JavaDoc to include tenant_id in listed fields
- Add getTenantId() override in TestLambdaContext test stub
- Update test assertions in LambdaJsonEncoderTest to verify tenant_id in output
Fixes: #2348
References: #2358
This implementation follows AWS Lambda Tenant Isolation feature requirements
and applies null-safety patterns consistent with correlation_id handling.
* chnges done as for the comment
* feat: add null-safe tenant_id logging for Lambda Tenant Isolation
* fix: update tests for default tenant_id logging
- Update LambdaLoggingAspectTest expected MDC size and tenant_id assertions
- Update LambdaEcsEncoderTest expected ECS output to include tenant.id
- Make ECS exception stack assertion OS-safe for Windows line endings
* Updated the failing tests to match the new tenant field behavior.
- Log4j JSON/ECS tests now check the important fields separately instead of relying on one long exact substring.
- Fixed the KeyBuffer warning assertion to be less brittle across environments.
I also ran the logging modules locally and they pass:
`mvn clean test -pl powertools-logging,powertools-logging-log4j,powertools-logging-logback -am`
---
.../common/stubs/TestLambdaContext.java | 5 +++
.../json/resolver/PowertoolsResolver.java | 19 ++++++++
.../src/main/resources/LambdaEcsLayout.json | 6 ++-
.../src/main/resources/LambdaJsonLayout.json | 6 ++-
.../PowerToolsResolverFactoryTest.java | 8 +++-
.../logging/logback/LambdaEcsEncoder.java | 8 ++++
.../logging/logback/LambdaJsonEncoder.java | 5 ++-
.../internal/LambdaEcsEncoderTest.java | 9 ++--
.../internal/LambdaJsonEncoderTest.java | 43 ++++++++++++++++---
.../internal/PowertoolsLoggedFields.java | 7 ++-
.../logging/internal/KeyBufferTest.java | 6 +--
.../internal/LambdaLoggingAspectTest.java | 5 ++-
12 files changed, 109 insertions(+), 18 deletions(-)
diff --git a/powertools-common/src/test/java/software/amazon/lambda/powertools/common/stubs/TestLambdaContext.java b/powertools-common/src/test/java/software/amazon/lambda/powertools/common/stubs/TestLambdaContext.java
index 6b66b66b7..f54db723b 100644
--- a/powertools-common/src/test/java/software/amazon/lambda/powertools/common/stubs/TestLambdaContext.java
+++ b/powertools-common/src/test/java/software/amazon/lambda/powertools/common/stubs/TestLambdaContext.java
@@ -74,4 +74,9 @@ public int getMemoryLimitInMB() {
public LambdaLogger getLogger() {
return null;
}
+
+ @Override
+ public String getTenantId() {
+ return "test-tenant";
+ }
}
diff --git a/powertools-logging/powertools-logging-log4j/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/PowertoolsResolver.java b/powertools-logging/powertools-logging-log4j/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/PowertoolsResolver.java
index cef5b86ee..a3283e38a 100644
--- a/powertools-logging/powertools-logging-log4j/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/PowertoolsResolver.java
+++ b/powertools-logging/powertools-logging-log4j/src/main/java/org/apache/logging/log4j/layout/template/json/resolver/PowertoolsResolver.java
@@ -25,6 +25,7 @@
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_VERSION;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.SAMPLING_RATE;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.SERVICE;
+import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.TENANT_ID;
import java.io.IOException;
import java.util.Collections;
@@ -186,6 +187,23 @@ public void resolve(LogEvent logEvent, JsonWriter jsonWriter) {
}
};
+ private static final EventResolver TENANT_ID_RESOLVER = new EventResolver() {
+ @Override
+ public boolean isResolvable(LogEvent logEvent) {
+ final String tenantId =
+ logEvent.getContextData().getValue(PowertoolsLoggedFields.TENANT_ID.getName());
+ return null != tenantId && !tenantId.isEmpty();
+ }
+
+ @Override
+ public void resolve(LogEvent logEvent, JsonWriter jsonWriter) {
+ final String tenantId =
+ logEvent.getContextData().getValue(PowertoolsLoggedFields.TENANT_ID.getName());
+ jsonWriter.writeString(tenantId);
+ }
+ };
+
+
@SuppressWarnings("java:S106")
private static final EventResolver NON_POWERTOOLS_FIELD_RESOLVER =
(LogEvent logEvent, JsonWriter jsonWriter) -> {
@@ -233,6 +251,7 @@ public void resolve(LogEvent logEvent, JsonWriter jsonWriter) {
{ FUNCTION_TRACE_ID.getName(), XRAY_TRACE_RESOLVER },
{ CORRELATION_ID.getName(), CORRELATION_ID_RESOLVER },
{ SAMPLING_RATE.getName(), SAMPLING_RATE_RESOLVER },
+ { TENANT_ID.getName(), TENANT_ID_RESOLVER },
{ "region", REGION_RESOLVER },
{ "account_id", ACCOUNT_ID_RESOLVER }
}).collect(Collectors.toMap(data -> (String) data[0], data -> (EventResolver) data[1])));
diff --git a/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaEcsLayout.json b/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaEcsLayout.json
index 58b30f60e..24dbaa0ba 100644
--- a/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaEcsLayout.json
+++ b/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaEcsLayout.json
@@ -87,7 +87,11 @@
"$resolver": "powertools",
"field": "correlation_id"
},
+ "tenant.id": {
+ "$resolver": "powertools",
+ "field": "tenant_id"
+ },
"": {
"$resolver": "powertools"
}
-}
+}
\ No newline at end of file
diff --git a/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaJsonLayout.json b/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaJsonLayout.json
index 793006502..1e9b5f4db 100644
--- a/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaJsonLayout.json
+++ b/powertools-logging/powertools-logging-log4j/src/main/resources/LambdaJsonLayout.json
@@ -69,7 +69,11 @@
"$resolver": "powertools",
"field": "correlation_id"
},
+ "tenant_id": {
+ "$resolver": "powertools",
+ "field": "tenant_id"
+ },
"": {
"$resolver": "powertools"
}
-}
+}
\ No newline at end of file
diff --git a/powertools-logging/powertools-logging-log4j/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/PowerToolsResolverFactoryTest.java b/powertools-logging/powertools-logging-log4j/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/PowerToolsResolverFactoryTest.java
index 46b5b65d4..7ff7abaaa 100644
--- a/powertools-logging/powertools-logging-log4j/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/PowerToolsResolverFactoryTest.java
+++ b/powertools-logging/powertools-logging-log4j/src/test/java/org/apache/logging/log4j/layout/template/json/resolver/PowerToolsResolverFactoryTest.java
@@ -79,7 +79,9 @@ void shouldLogInJsonFormat() {
File logFile = new File("target/logfile.json");
assertThat(contentOf(logFile)).contains(
"{\"level\":\"DEBUG\",\"message\":\"Test debug event\",\"cold_start\":true,\"function_arn\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"function_memory_size\":128,\"function_name\":\"test-function\",\"function_request_id\":\"test-request-id\",\"function_version\":\"1\",\"service\":\"testLog4j\",\"timestamp\":")
- .contains("\"xray_trace_id\":\"1-63441c4a-abcdef012345678912345678\",\"myKey\":\"myValue\"}\n");
+ .contains("\"xray_trace_id\":\"1-63441c4a-abcdef012345678912345678\"")
+ .contains("\"tenant_id\":\"test-tenant\"")
+ .contains("\"myKey\":\"myValue\"");
}
@Test
@@ -89,7 +91,9 @@ void shouldLogInEcsFormat() {
File logFile = new File("target/ecslogfile.json");
assertThat(contentOf(logFile)).contains(
- "\"ecs.version\":\"1.2.0\",\"log.level\":\"DEBUG\",\"message\":\"Test debug event\",\"service.name\":\"testLog4j\",\"service.version\":\"1\",\"log.logger\":\"software.amazon.lambda.powertools.logging.internal.handler.PowertoolsLogEnabled\",\"process.thread.name\":\"main\",\"cloud.provider\":\"aws\",\"cloud.service.name\":\"lambda\",\"cloud.region\":\"eu-central-1\",\"cloud.account.id\":\"123456789012\",\"faas.id\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"faas.name\":\"test-function\",\"faas.version\":\"1\",\"faas.memory\":128,\"faas.execution\":\"test-request-id\",\"faas.coldstart\":true,\"trace.id\":\"1-63441c4a-abcdef012345678912345678\",\"myKey\":\"myValue\"}\n");
+ "\"ecs.version\":\"1.2.0\",\"log.level\":\"DEBUG\",\"message\":\"Test debug event\",\"service.name\":\"testLog4j\",\"service.version\":\"1\",\"log.logger\":\"software.amazon.lambda.powertools.logging.internal.handler.PowertoolsLogEnabled\",\"process.thread.name\":\"main\",\"cloud.provider\":\"aws\",\"cloud.service.name\":\"lambda\",\"cloud.region\":\"eu-central-1\",\"cloud.account.id\":\"123456789012\",\"faas.id\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"faas.name\":\"test-function\",\"faas.version\":\"1\",\"faas.memory\":128,\"faas.execution\":\"test-request-id\",\"faas.coldstart\":true,\"trace.id\":\"1-63441c4a-abcdef012345678912345678\"")
+ .contains("\"tenant.id\":\"test-tenant\"")
+ .contains("\"myKey\":\"myValue\"");
}
}
diff --git a/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java b/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java
index b934f378d..629224011 100644
--- a/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java
+++ b/powertools-logging/powertools-logging-logback/src/main/java/software/amazon/lambda/powertools/logging/logback/LambdaEcsEncoder.java
@@ -24,6 +24,7 @@
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_TRACE_ID;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_VERSION;
import static software.amazon.lambda.powertools.logging.logback.JsonUtils.*;
+import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.TENANT_ID;
import ch.qos.logback.classic.pattern.ThrowableHandlingConverter;
import ch.qos.logback.classic.pattern.ThrowableProxyConverter;
@@ -72,6 +73,7 @@ public class LambdaEcsEncoder extends EncoderBase {
protected static final String FUNCTION_MEMORY_ATTR_NAME = "faas.memory";
protected static final String FUNCTION_TRACE_ID_ATTR_NAME = "trace.id";
protected static final String CORRELATION_ID_ATTR_NAME = "correlation.id";
+ protected static final String TENANT_ID_ATTR_NAME = "tenant.id";
protected static final String ECS_VERSION = "1.2.0";
protected static final String CLOUD_PROVIDER = "aws";
@@ -169,6 +171,12 @@ private void serializeFunctionInfo(JsonSerializer serializer, String arn, Map sortedMap, JsonSerializ
if (includePowertoolsInfo) {
for (Map.Entry entry : sortedMap.entrySet()) {
if (PowertoolsLoggedFields.stringValues().contains(entry.getKey())
- && !(entry.getKey().equals(PowertoolsLoggedFields.SAMPLING_RATE.getName()) && entry.getValue().equals("0.0"))) {
+ && !(entry.getKey().equals(PowertoolsLoggedFields.SAMPLING_RATE.getName()) && "0.0".equals(entry.getValue()))
+ && !(entry.getKey().equals(PowertoolsLoggedFields.TENANT_ID.getName())
+ && (entry.getValue() == null || entry.getValue().isEmpty()))) {
serializeMDCEntry(entry, serializer);
}
}
@@ -236,6 +238,7 @@ public void setIncludeThreadInfo(boolean includeThreadInfo) {
* xray_trace_id
* sampling_rate
* service
+ * tenant_id
*
*
* We strongly recommend to keep these information.
diff --git a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java
index 2d5cb0a00..12887d608 100644
--- a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java
+++ b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaEcsEncoderTest.java
@@ -88,7 +88,7 @@ void shouldLogInEcsFormat() {
File logFile = new File("target/ecslogfile.json");
assertThat(contentOf(logFile)).contains(
- "\"ecs.version\":\"1.2.0\",\"log.level\":\"DEBUG\",\"message\":\"Test debug event\",\"service.name\":\"testLogback\",\"service.version\":\"1\",\"log.logger\":\"software.amazon.lambda.powertools.logging.internal.handler.PowertoolsLogEnabled\",\"process.thread.name\":\"main\",\"cloud.provider\":\"aws\",\"cloud.service.name\":\"lambda\",\"cloud.region\":\"us-east-1\",\"cloud.account.id\":\"123456789012\",\"faas.id\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"faas.name\":\"test-function\",\"faas.version\":\"1\",\"faas.memory\":\"128\",\"faas.execution\":\"test-request-id\",\"faas.coldstart\":\"true\",\"trace.id\":\"1-63441c4a-abcdef012345678912345678\",\"myKey\":\"myValue\"}\n");
+ "\"ecs.version\":\"1.2.0\",\"log.level\":\"DEBUG\",\"message\":\"Test debug event\",\"service.name\":\"testLogback\",\"service.version\":\"1\",\"log.logger\":\"software.amazon.lambda.powertools.logging.internal.handler.PowertoolsLogEnabled\",\"process.thread.name\":\"main\",\"cloud.provider\":\"aws\",\"cloud.service.name\":\"lambda\",\"cloud.region\":\"us-east-1\",\"cloud.account.id\":\"123456789012\",\"faas.id\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"faas.name\":\"test-function\",\"faas.version\":\"1\",\"faas.memory\":\"128\",\"faas.execution\":\"test-request-id\",\"faas.coldstart\":\"true\",\"trace.id\":\"1-63441c4a-abcdef012345678912345678\",\"tenant.id\":\"test-tenant\",\"myKey\":\"myValue\"}\n");
}
private final LoggingEvent loggingEvent = new LoggingEvent("fqcn", logger, Level.INFO, "message", null, null);
@@ -165,8 +165,11 @@ void shouldLogException() {
result = new String(encoded, StandardCharsets.UTF_8);
// THEN (stack is logged with root cause first)
- assertThat(result).contains(
- "\"message\":\"Error\",\"error.message\":\"Unexpected value\",\"error.type\":\"java.lang.IllegalStateException\",\"error.stack_trace\":\"java.lang.IllegalStateException: Unexpected value\\n");
+ assertThat(result)
+ .contains("\"message\":\"Error\",\"error.message\":\"Unexpected value\",\"error.type\":\"java.lang.IllegalStateException\"")
+ .containsAnyOf(
+ "\"error.stack_trace\":\"java.lang.IllegalStateException: Unexpected value\\n",
+ "\"error.stack_trace\":\"java.lang.IllegalStateException: Unexpected value\\r\\n");
}
private void setMDC() {
diff --git a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java
index ca256ad5d..75ef79369 100644
--- a/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java
+++ b/powertools-logging/powertools-logging-logback/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaJsonEncoderTest.java
@@ -111,8 +111,8 @@ void shouldLogInJsonFormat() {
// THEN
File logFile = new File("target/logfile.json");
assertThat(contentOf(logFile)).contains(
- "{\"level\":\"DEBUG\",\"message\":\"Test debug event\",\"cold_start\":true,\"function_arn\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"function_memory_size\":128,\"function_name\":\"test-function\",\"function_request_id\":\"test-request-id\",\"function_version\":1,\"service\":\"testLogback\",\"xray_trace_id\":\"1-63441c4a-abcdef012345678912345678\",\"myKey\":\"myValue\",\"timestamp\":");
- }
+ "{\"level\":\"DEBUG\",\"message\":\"Test debug event\",\"cold_start\":true,\"function_arn\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"function_memory_size\":128,\"function_name\":\"test-function\",\"function_request_id\":\"test-request-id\",\"function_version\":1,\"service\":\"testLogback\",\"tenant_id\":\"test-tenant\",\"xray_trace_id\":\"1-63441c4a-abcdef012345678912345678\",\"myKey\":\"myValue\",\"timestamp\":\"");
+ }
@Test
void shouldLogArgumentsAsJsonWhenUsingRawJson() {
@@ -196,6 +196,7 @@ void shouldNotLogPowertoolsInfo() {
MDC.put(PowertoolsLoggedFields.FUNCTION_COLD_START.getName(), "false");
MDC.put(PowertoolsLoggedFields.SAMPLING_RATE.getName(), "0.2");
MDC.put(PowertoolsLoggedFields.SERVICE.getName(), "Service");
+ MDC.put(PowertoolsLoggedFields.TENANT_ID.getName(), "test-tenant");
// WHEN
byte[] encoded = encoder.encode(loggingEvent);
@@ -203,7 +204,8 @@ void shouldNotLogPowertoolsInfo() {
// THEN
assertThat(result).contains(
- "{\"level\":\"INFO\",\"message\":\"message\",\"cold_start\":false,\"function_arn\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"function_memory_size\":128,\"function_name\":\"test-function\",\"function_request_id\":\"test-request-id\",\"function_version\":1,\"sampling_rate\":0.2,\"service\":\"Service\",\"timestamp\":");
+ "{\"level\":\"INFO\",\"message\":\"message\",\"cold_start\":false,\"function_arn\":\"arn:aws:lambda:us-east-1:123456789012:function:test\",\"function_memory_size\":128,\"function_name\":\"test-function\",\"function_request_id\":\"test-request-id\",\"function_version\":1,\"sampling_rate\":0.2,\"service\":\"Service\",\"tenant_id\":\"test-tenant\",\"timestamp\":\""
+ );
// WHEN (powertoolsInfo = false)
encoder.setIncludePowertoolsInfo(false);
@@ -212,7 +214,7 @@ void shouldNotLogPowertoolsInfo() {
// THEN (no powertools info in logs)
assertThat(result).doesNotContain("cold_start", "function_arn", "function_memory_size", "function_name",
- "function_request_id", "function_version", "sampling_rate", "service");
+ "function_request_id", "function_version", "sampling_rate", "service", "tenant_id");
}
@Test
@@ -441,7 +443,9 @@ void shouldLogException() {
// THEN (stack is logged with root cause first)
assertThat(result).contains("\"message\":\"Unexpected value\"")
.contains("\"name\":\"java.lang.IllegalStateException\"")
- .contains("\"stack\":\"java.lang.IllegalStateException: Unexpected value\\n");
+ .containsAnyOf(
+ "\"stack\":\"java.lang.IllegalStateException: Unexpected value\\n",
+ "\"stack\":\"java.lang.IllegalStateException: Unexpected value\\r\\n");
}
@Test
@@ -481,4 +485,33 @@ void shouldLogKeyValuePairs() {
;
}
+ @Test
+ void shouldNotLogTenantIdWhenNull() {
+ // GIVEN
+ LambdaJsonEncoder encoder = new LambdaJsonEncoder();
+ MDC.put(PowertoolsLoggedFields.TENANT_ID.getName(), null);
+
+ // WHEN
+ byte[] encoded = encoder.encode(loggingEvent);
+ String result = new String(encoded, StandardCharsets.UTF_8);
+
+ // THEN
+ assertThat(result).doesNotContain("tenant_id");
+ }
+
+ @Test
+ void shouldNotLogTenantIdWhenEmpty() {
+ // GIVEN
+ LambdaJsonEncoder encoder = new LambdaJsonEncoder();
+ MDC.put(PowertoolsLoggedFields.TENANT_ID.getName(), "");
+
+ // WHEN
+ byte[] encoded = encoder.encode(loggingEvent);
+ String result = new String(encoded, StandardCharsets.UTF_8);
+
+ // THEN
+ assertThat(result).doesNotContain("tenant_id");
+ }
+
+
}
diff --git a/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsLoggedFields.java b/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsLoggedFields.java
index 2545396d2..ad47608a8 100644
--- a/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsLoggedFields.java
+++ b/powertools-logging/src/main/java/software/amazon/lambda/powertools/logging/internal/PowertoolsLoggedFields.java
@@ -35,7 +35,8 @@ public enum PowertoolsLoggedFields {
FUNCTION_TRACE_ID("xray_trace_id"),
SAMPLING_RATE("sampling_rate"),
CORRELATION_ID("correlation_id"),
- SERVICE("service");
+ SERVICE("service"),
+ TENANT_ID("tenant_id");
private final String name;
@@ -55,6 +56,10 @@ public static Map setValuesFromLambdaContext(Context context) {
hashMap.put(FUNCTION_ARN.name, context.getInvokedFunctionArn());
hashMap.put(FUNCTION_MEMORY_SIZE.name, String.valueOf(context.getMemoryLimitInMB()));
hashMap.put(FUNCTION_REQUEST_ID.name, String.valueOf(context.getAwsRequestId()));
+ String tenantId = context.getTenantId();
+ if (tenantId != null && !tenantId.isEmpty()) {
+ hashMap.put(TENANT_ID.name, tenantId);
+ }
return hashMap;
}
diff --git a/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/KeyBufferTest.java b/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/KeyBufferTest.java
index fac85e230..9656c58d2 100644
--- a/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/KeyBufferTest.java
+++ b/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/KeyBufferTest.java
@@ -351,9 +351,9 @@ void shouldUseDefaultWarningLoggerWhenNotProvided() {
defaultBuffer.removeAll("key1");
// Assert System.err received the warning
- assertThat(errCapture)
- .hasToString(
- "WARN [KeyBuffer] - Some logs are not displayed because they were evicted from the buffer. Increase buffer size to store more logs in the buffer.\n");
+ assertThat(errCapture.toString())
+ .contains(
+ "WARN [KeyBuffer] - Some logs are not displayed because they were evicted from the buffer. Increase buffer size to store more logs in the buffer.");
} finally {
System.setErr(originalErr);
}
diff --git a/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspectTest.java b/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspectTest.java
index ca47f9097..158bffb94 100644
--- a/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspectTest.java
+++ b/powertools-logging/src/test/java/software/amazon/lambda/powertools/logging/internal/LambdaLoggingAspectTest.java
@@ -26,6 +26,7 @@
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_TRACE_ID;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.FUNCTION_VERSION;
import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.SERVICE;
+import static software.amazon.lambda.powertools.logging.internal.PowertoolsLoggedFields.TENANT_ID;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -88,7 +89,7 @@
class LambdaLoggingAspectTest {
- private static final int EXPECTED_CONTEXT_SIZE = 8;
+ private static final int EXPECTED_CONTEXT_SIZE = 9;
private RequestStreamHandler requestStreamHandler;
private RequestHandler requestHandler;
@@ -148,6 +149,7 @@ void shouldSetLambdaContextWhenEnabled() {
.containsEntry(FUNCTION_VERSION.getName(), "1")
.containsEntry(FUNCTION_NAME.getName(), "test-function")
.containsEntry(FUNCTION_REQUEST_ID.getName(), "test-request-id")
+ .containsEntry(TENANT_ID.getName(), "test-tenant")
.containsKey(FUNCTION_COLD_START.getName())
.containsKey(SERVICE.getName());
}
@@ -166,6 +168,7 @@ void shouldSetLambdaContextForStreamHandlerWhenEnabled() throws IOException {
.containsEntry(FUNCTION_VERSION.getName(), "1")
.containsEntry(FUNCTION_NAME.getName(), "test-function")
.containsEntry(FUNCTION_REQUEST_ID.getName(), "test-request-id")
+ .containsEntry(TENANT_ID.getName(), "test-tenant")
.containsKey(FUNCTION_COLD_START.getName())
.containsKey(SERVICE.getName());
}
From 92fa19e8a5acf957d5eba81cac2277ede04780ff Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 21 Apr 2026 17:52:33 +0200
Subject: [PATCH 090/116] chore: bump com.fasterxml.jackson:jackson-bom from
2.21.1 to 2.21.2 (#2480)
chore: bump com.fasterxml.jackson:jackson-bom from 2.21.1 to 2.21.2
Reviewed and approved by @phipag. Review performed by Claude (Opus 4.7).
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 528339459..b93d41cc5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -85,7 +85,7 @@
3.1.2
2.25.4
2.0.17
- 2.21.1
+ 2.21.2
2.42.35
2.21.0
2.2.0
From cd22a08943585e150a80479eb2a7654db5b49582 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Apr 2026 18:55:43 +0200
Subject: [PATCH 091/116] chore: bump
org.apache.maven.plugins:maven-source-plugin (#2482)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bump maven-source-plugin 3.3.1 → 3.4.0.
Reviewed and approved by @phipag. Review performed by Claude (dependabot-review skill).
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index b93d41cc5..ca54df4ce 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,7 +106,7 @@
0.8.14
1.7.0
3.12.0
- 3.3.1
+ 3.4.0
3.2.8
5.14.0
4.1.2
From a5492eda3993f0fdd6421151b056e26a44f4ae66 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 22 Apr 2026 18:56:04 +0200
Subject: [PATCH 092/116] chore: bump aws.sdk.version from 2.42.35 to 2.42.38
(#2481)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bump aws.sdk.version 2.42.35 → 2.42.38.
Reviewed and approved by @phipag. Review performed by Claude (dependabot-review skill).
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 4e45417d3..6ac23f83a 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.35
+ 2.42.38
1.9.20.1
diff --git a/pom.xml b/pom.xml
index ca54df4ce..26413ac98 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.2
- 2.42.35
+ 2.42.38
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 4a2acb298..5d5f6dac6 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.42.35
+ 2.42.38
1.9.20.1
true
From dd3bb6d8ce9a999ed3f7d204f817787a55f95f05 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 26 Apr 2026 14:01:12 +0200
Subject: [PATCH 093/116] chore: bump gitpython from 3.1.44 to 3.1.47 in /docs
(#2486)
Reviewed and approved by @phipag. Review performed by Claude (Opus 4.7) via the dependabot-review workflow.
---
docs/requirements.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/requirements.txt b/docs/requirements.txt
index ab4b1d48f..769be81da 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -22,9 +22,9 @@ gitdb==4.0.12 \
--hash=sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571 \
--hash=sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf
# via gitpython
-gitpython==3.1.44 \
- --hash=sha256:9e0e10cda9bed1ee64bc9a6de50e7e38a9c9943241cd7f585f6df3ed28011110 \
- --hash=sha256:c87e30b26253bf5418b01b0660f818967f3c503193838337fe5e573331249269
+gitpython==3.1.47 \
+ --hash=sha256:489f590edfd6d20571b2c0e72c6a6ac6915ee8b8cd04572330e3842207a78905 \
+ --hash=sha256:dba27f922bd2b42cb54c87a8ab3cb6beb6bf07f3d564e21ac848913a05a8a3cd
# via mkdocs-git-revision-date-plugin
hjson==3.1.0 \
--hash=sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75 \
From 5052b66afcbe1598a35eb9c9921e7e7fcf620f7b Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sun, 26 Apr 2026 14:01:30 +0200
Subject: [PATCH 094/116] chore: bump aws.sdk.version from 2.42.38 to 2.42.40
(#2483)
Reviewed and approved by @phipag. Review performed by Claude (Opus 4.7) via the dependabot-review workflow.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 6ac23f83a..a38b79e5a 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.38
+ 2.42.40
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 26413ac98..cc30342e4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.2
- 2.42.38
+ 2.42.40
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 5d5f6dac6..65b4d8964 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.42.38
+ 2.42.40
1.9.20.1
true
From d02373d61073a8c8aca939508b4614b5faa351c4 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 28 Apr 2026 15:30:20 +0200
Subject: [PATCH 095/116] chore: bump aws.sdk.version from 2.42.40 to 2.43.0
(#2487)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reviewed and approved by @phipag. Review performed by Claude (claude-opus-4-7) via the dependabot-review skill. AWS SDK v2 2.42.40 → 2.43.0 — routine minor bump with service-only feature additions; no breaking changes.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index a38b79e5a..29b4a45f3 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.42.40
+ 2.43.0
1.9.20.1
diff --git a/pom.xml b/pom.xml
index cc30342e4..1e819c52f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.2
- 2.42.40
+ 2.43.0
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 65b4d8964..eef2880b0 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.42.40
+ 2.43.0
1.9.20.1
true
From 7bf79dd6e3ad3307035b3ca6be4641a016972aad Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Apr 2026 08:59:04 +0200
Subject: [PATCH 096/116] chore: bump commons-io:commons-io from 2.21.0 to
2.22.0 (#2490)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reviewed and approved by @phipag. Dependabot review performed by Claude (Opus 4.7). commons-io 2.21.0 → 2.22.0, patch bump limited to powertools-e2e-tests.
---
powertools-e2e-tests/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/pom.xml b/powertools-e2e-tests/pom.xml
index 13e62c67e..ac864ad9c 100644
--- a/powertools-e2e-tests/pom.xml
+++ b/powertools-e2e-tests/pom.xml
@@ -95,7 +95,7 @@
commons-io
commons-io
- 2.21.0
+ 2.22.0
org.junit.jupiter
From f68b182fea2bf6f43086be09761ef7c41108a19e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Apr 2026 15:19:27 +0200
Subject: [PATCH 097/116] chore: bump release-drafter/release-drafter from
7.2.0 to 7.2.1 (#2492)
Patch bump of release-drafter/release-drafter from 7.2.0 to 7.2.1. Reviewed and approved by @phipag. Review performed by Claude.
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index f0104f177..e3bfaced7 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -23,6 +23,6 @@ jobs:
contents: write # required for creating draft releases
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@5de93583980a40bd78603b6dfdcda5b4df377b32
+ uses: release-drafter/release-drafter@563bf132657a13ded0b01fcb723c5a58cdd824e2
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From 299218742bdd9b166d8f7933dfe79237e40b4198 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 30 Apr 2026 15:32:31 +0200
Subject: [PATCH 098/116] chore: bump aws.sdk.version from 2.43.0 to 2.43.1
(#2491)
Reviewed and approved by @phipag. Review performed by Claude. Routine AWS SDK patch bump (2.43.0 to 2.43.1) with no breaking changes.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 29b4a45f3..70d9ec178 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.43.0
+ 2.43.1
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 1e819c52f..c0f737cdf 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.2
- 2.43.0
+ 2.43.1
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index eef2880b0..511212840 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.43.0
+ 2.43.1
1.9.20.1
true
From a404db86792635c722d817e34594dd0daca07b51 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 9 May 2026 15:18:49 +0200
Subject: [PATCH 099/116] chore: bump gitpython from 3.1.47 to 3.1.50 in /docs
(#2499)
Reviewed and approved by @phipag. Review performed by Claude. Docs-only gitpython patch bumps including security fixes.
---
docs/requirements.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 769be81da..32300d31c 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -22,9 +22,9 @@ gitdb==4.0.12 \
--hash=sha256:5ef71f855d191a3326fcfbc0d5da835f26b13fbcba60c32c21091c349ffdb571 \
--hash=sha256:67073e15955400952c6565cc3e707c554a4eea2e428946f7a4c162fab9bd9bcf
# via gitpython
-gitpython==3.1.47 \
- --hash=sha256:489f590edfd6d20571b2c0e72c6a6ac6915ee8b8cd04572330e3842207a78905 \
- --hash=sha256:dba27f922bd2b42cb54c87a8ab3cb6beb6bf07f3d564e21ac848913a05a8a3cd
+gitpython==3.1.50 \
+ --hash=sha256:80da2d12504d52e1f998772dc5baf6e553f8d2fcfe1fcc226c9d9a2ee3372dcc \
+ --hash=sha256:d352abe2908d07355014abdd21ddf798c2a961469239afec4962e9da884858f9
# via mkdocs-git-revision-date-plugin
hjson==3.1.0 \
--hash=sha256:55af475a27cf83a7969c808399d7bccdec8fb836a07ddbd574587593b9cdcf75 \
From a6fdaa7fcb9407f08448a41cea8ea56778da8c76 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 9 May 2026 15:19:05 +0200
Subject: [PATCH 100/116] chore: bump release-drafter/release-drafter from
7.2.1 to 7.3.0 (#2498)
Reviewed and approved by @phipag. Review performed by Claude. release-drafter minor bump with bug fixes.
---
.github/workflows/release-drafter.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
index e3bfaced7..1e024ddee 100644
--- a/.github/workflows/release-drafter.yml
+++ b/.github/workflows/release-drafter.yml
@@ -23,6 +23,6 @@ jobs:
contents: write # required for creating draft releases
steps:
- name: Relase Drafter
- uses: release-drafter/release-drafter@563bf132657a13ded0b01fcb723c5a58cdd824e2
+ uses: release-drafter/release-drafter@c2e2804cc59f45f57076a99af580d0fedb697927
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
From 43e87f6d4107832dd69bac71743a9a016fef26e6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 9 May 2026 15:19:22 +0200
Subject: [PATCH 101/116] chore: bump github/codeql-action from 4.35.2 to
4.35.4 (#2497)
Reviewed and approved by @phipag. Review performed by Claude. codeql-action patch bump with CodeQL bundle updates.
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index bf06629f4..2e156daf5 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v3.29.5
+ uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v3.29.5
with:
sarif_file: results.sarif
From 08c2ff77c0cb76d832a41a49c19b2098096d364c Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 9 May 2026 15:19:37 +0200
Subject: [PATCH 102/116] chore: bump graalvm/setup-graalvm from 1.5.2 to 1.5.3
(#2496)
Reviewed and approved by @phipag. Review performed by Claude. setup-graalvm patch bump, pure maintenance release.
---
.github/workflows/check-build.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml
index ecc47feb6..052153a04 100644
--- a/.github/workflows/check-build.yml
+++ b/.github/workflows/check-build.yml
@@ -107,7 +107,7 @@ jobs:
powertools-*/**
pom.xml
- name: Setup GraalVM
- uses: graalvm/setup-graalvm@60c26726de13f8b90771df4bc1641a52a3159994 # v1.5.2
+ uses: graalvm/setup-graalvm@bef4b0e916c7dd079bf60fb95d49139f67e32c5f # v1.5.3
with:
# Pinned to 21.0.8 due to unsafeAllocated enforcement in 21.0.10+. See #2416
java-version: "21.0.8"
From edc4196c92440f3e5b9f0ef4ff19d1255762d72f Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 9 May 2026 15:19:53 +0200
Subject: [PATCH 103/116] chore: bump aws-actions/configure-aws-credentials
from 6.1.0 to 6.1.1 (#2495)
Reviewed and approved by @phipag. Review performed by Claude. configure-aws-credentials patch bump, maintenance release.
---
.github/workflows/build-docs.yml | 2 +-
.github/workflows/check-e2e.yml | 4 ++--
.github/workflows/release.yml | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index de30c582b..fc5f6811b 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -43,7 +43,7 @@ jobs:
docker build -t squidfunk/mkdocs-material ./docs/
docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37
+ uses: aws-actions/configure-aws-credentials@d979d5b3a71173a29b74b5b88418bfda9437d885
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_DOCS_ROLE_ARN }}
diff --git a/.github/workflows/check-e2e.yml b/.github/workflows/check-e2e.yml
index ad0012da9..49d79a734 100644
--- a/.github/workflows/check-e2e.yml
+++ b/.github/workflows/check-e2e.yml
@@ -116,7 +116,7 @@ jobs:
- name: Build all modules
run: mvn -B -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
- uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
+ uses: aws-actions/configure-aws-credentials@d979d5b3a71173a29b74b5b88418bfda9437d885 # v6.1.1
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
@@ -154,7 +154,7 @@ jobs:
- name: Build all modules
run: mvn -B -DskipTests -ntp install --file pom.xml
- name: Setup AWS credentials
- uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37 # v6.1.0
+ uses: aws-actions/configure-aws-credentials@d979d5b3a71173a29b74b5b88418bfda9437d885 # v6.1.1
with:
role-to-assume: ${{ secrets.AWS_IAM_ROLE }}
aws-region: us-east-1
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index ba7d018d0..e5e8db091 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -286,7 +286,7 @@ jobs:
docker build -t squidfunk/mkdocs-material ./docs/
docker run --rm -t -v ${PWD}:/docs squidfunk/mkdocs-material build
- name: Configure AWS credentials
- uses: aws-actions/configure-aws-credentials@ec61189d14ec14c8efccab744f656cffd0e33f37
+ uses: aws-actions/configure-aws-credentials@d979d5b3a71173a29b74b5b88418bfda9437d885
with:
aws-region: us-east-1
role-to-assume: ${{ secrets.AWS_DOCS_ROLE_ARN }}
From 931a1b026a709de3aa32b7f4aa546c4e8afad9b3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Sat, 9 May 2026 15:20:09 +0200
Subject: [PATCH 104/116] chore: bump aws.sdk.version from 2.43.1 to 2.43.2
(#2493)
Reviewed and approved by @phipag. Review performed by Claude. Routine AWS SDK patch bump.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 70d9ec178..46ed94e3a 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.43.1
+ 2.43.2
1.9.20.1
diff --git a/pom.xml b/pom.xml
index c0f737cdf..f4e9f2c0c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.2
- 2.43.1
+ 2.43.2
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 511212840..75f520443 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.43.1
+ 2.43.2
1.9.20.1
true
From 34fcdfd1d849753af6e1f94dab4e3b37cdc0f435 Mon Sep 17 00:00:00 2001
From: Pratap Chandra Deo <61131823+Pratapchandradeo@users.noreply.github.com>
Date: Tue, 12 May 2026 18:14:06 +0530
Subject: [PATCH 105/116] tech(idempotency): Replace DynamoDB Local with
Mockito mocks in unit tests (#1932) (#2489)
* tech(idempotency): Replace DynamoDB Local with Mockito mocks in unit tests (#1932)
Replaced external DynamoDB Local dependency with self-contained Mockito mocks
in powertools-idempotency-dynamodb module unit tests.
Changes:
- Rewrote DynamoDBPersistenceStoreTest with 12 Mockito-based tests
- Removed DynamoDB Local dependency and Maven plugins from pom.xml
- Deleted DynamoDBConfig test harness (no longer needed)
- Deleted IdempotencyTest and IdempotencyFunction (redundant with e2e tests)
- Added Mockito dependencies to pom.xml
All tests pass (13/13). No production code changes. E2E tests remain unchanged.
Related to #1932
* Fix SonarCloud restricted identifier warnings
- Rename variable 'record' to 'dataRecord' (9 occurrences)
- Resolves Java keyword conflict in test file
* Use mockito-subclass for GraalVM native tests
- Add mockito-subclass dependency in native profile
- Remove skipNativeTests flag
- Follows pattern from powertools-metrics module
- All 61 tests pass in idempotency parent module
* Strengthen test assertions for condition expression and returnValuesOnConditionCheckFailure
- Add full condition expression validation in putRecord_shouldSendCorrectPutItemRequest
- Add returnValuesOnConditionCheckFailure='ALL_OLD' assertion
- Protects bugfix from #1285 and behavior from #1821
- Per code review feedback from @phipag
---
.../powertools-idempotency-dynamodb/pom.xml | 85 +--
.../persistence/dynamodb/DynamoDBConfig.java | 65 ---
.../DynamoDBPersistenceStoreTest.java | 551 +++++++++---------
.../persistence/dynamodb/IdempotencyTest.java | 52 --
.../handlers/IdempotencyFunction.java | 66 ---
5 files changed, 278 insertions(+), 541 deletions(-)
delete mode 100644 powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBConfig.java
delete mode 100644 powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/IdempotencyTest.java
delete mode 100644 powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/handlers/IdempotencyFunction.java
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
index 28f3a6bf6..cfcedec56 100644
--- a/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
+++ b/powertools-idempotency/powertools-idempotency-dynamodb/pom.xml
@@ -77,6 +77,16 @@
junit-jupiter-engine
test
+
+ org.mockito
+ mockito-core
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ test
+
org.slf4j
slf4j-simple
@@ -89,15 +99,6 @@
test-jar
test
-
-
- com.amazonaws
- DynamoDBLocal
-
-
- 2.2.0
- test
-
software.amazon.awssdk
s3
@@ -118,6 +119,11 @@
aws-xray-recorder-sdk-aws-sdk-v2-instrumentor
test
+
+ org.mockito
+ mockito-subclass
+ test
+
@@ -149,57 +155,6 @@
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy-dynamodb-local
- generate-test-resources
-
- copy-dependencies
-
-
- test
- false
-
- software.amazon.lambda
- ${project.build.directory}/dynamodb-local
-
-
-
-
-
-
- org.codehaus.mojo
- exec-maven-plugin
-
-
- start-dynamodb-local
- process-test-classes
-
- exec
-
-
- java
- ${project.build.directory}/dynamodb-local
-
- -Djava.library.path=${project.build.directory}/dynamodb-local
- -cp
- ${project.build.directory}/dynamodb-local/*
- com.amazonaws.services.dynamodbv2.local.main.ServerRunner
- -inMemory
- -port
- 8000
-
- true
- true
-
-
-
-
org.apache.maven.plugins
maven-jar-plugin
@@ -212,16 +167,6 @@
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
- http://localhost:8000
-
-
-
dev.aspectj
aspectj-maven-plugin
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBConfig.java b/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBConfig.java
deleted file mode 100644
index 9f6875689..000000000
--- a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBConfig.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 2023 Amazon.com, Inc. or its affiliates.
- * Licensed 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.
- *
- */
-
-package software.amazon.lambda.powertools.idempotency.persistence.dynamodb;
-
-import java.net.URI;
-
-import org.junit.jupiter.api.BeforeAll;
-
-import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
-import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider;
-import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient;
-import software.amazon.awssdk.regions.Region;
-import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
-import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition;
-import software.amazon.awssdk.services.dynamodb.model.BillingMode;
-import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest;
-import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement;
-import software.amazon.awssdk.services.dynamodb.model.KeyType;
-import software.amazon.awssdk.services.dynamodb.model.ResourceInUseException;
-import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType;
-
-class DynamoDBConfig {
- protected static final String TABLE_NAME = "idempotency_table";
- protected static DynamoDbClient client;
-
- @BeforeAll
- static void setupDynamo() {
- String endpoint = System.getProperty("dynamodb.endpoint", "http://localhost:8000");
-
- client = DynamoDbClient.builder()
- .httpClient(UrlConnectionHttpClient.builder().build())
- .region(Region.EU_WEST_1)
- .endpointOverride(URI.create(endpoint))
- .credentialsProvider(StaticCredentialsProvider.create(
- AwsBasicCredentials.create("FAKE", "FAKE")))
- .build();
-
- try {
- client.createTable(CreateTableRequest.builder()
- .tableName(TABLE_NAME)
- .keySchema(KeySchemaElement.builder().keyType(KeyType.HASH).attributeName("id").build())
- .attributeDefinitions(
- AttributeDefinition.builder().attributeName("id").attributeType(ScalarAttributeType.S)
- .build())
- .billingMode(BillingMode.PAY_PER_REQUEST)
- .build());
- } catch (ResourceInUseException e) {
- // Table already exists, ignore
- } catch (Exception e) {
- throw new RuntimeException("Failed to create DynamoDB table", e);
- }
- }
-}
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBPersistenceStoreTest.java b/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBPersistenceStoreTest.java
index b5c816286..de8b629fb 100644
--- a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBPersistenceStoreTest.java
+++ b/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/DynamoDBPersistenceStoreTest.java
@@ -16,30 +16,30 @@
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
-import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import java.util.OptionalLong;
-import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junitpioneer.jupiter.SetEnvironmentVariable;
+import org.mockito.ArgumentCaptor;
-import software.amazon.awssdk.services.dynamodb.model.AttributeDefinition;
+import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
-import software.amazon.awssdk.services.dynamodb.model.BillingMode;
-import software.amazon.awssdk.services.dynamodb.model.CreateTableRequest;
+import software.amazon.awssdk.services.dynamodb.model.ConditionalCheckFailedException;
import software.amazon.awssdk.services.dynamodb.model.DeleteItemRequest;
-import software.amazon.awssdk.services.dynamodb.model.DeleteTableRequest;
import software.amazon.awssdk.services.dynamodb.model.GetItemRequest;
-import software.amazon.awssdk.services.dynamodb.model.KeySchemaElement;
-import software.amazon.awssdk.services.dynamodb.model.KeyType;
+import software.amazon.awssdk.services.dynamodb.model.GetItemResponse;
import software.amazon.awssdk.services.dynamodb.model.PutItemRequest;
-import software.amazon.awssdk.services.dynamodb.model.ScalarAttributeType;
-import software.amazon.awssdk.services.dynamodb.model.ScanRequest;
+import software.amazon.awssdk.services.dynamodb.model.UpdateItemRequest;
import software.amazon.lambda.powertools.idempotency.Constants;
import software.amazon.lambda.powertools.idempotency.IdempotencyConfig;
import software.amazon.lambda.powertools.idempotency.exceptions.IdempotencyItemAlreadyExistsException;
@@ -47,342 +47,317 @@
import software.amazon.lambda.powertools.idempotency.persistence.DataRecord;
/**
- * These test are using DynamoDBLocal and sqlite, see https://nickolasfisher.com/blog/Configuring-an-In-Memory-DynamoDB-instance-with-Java-for-Integration-Testing
- * NOTE: on a Mac with Apple Chipset, you need to use the Oracle JDK x86 64-bit
+ * Unit tests for DynamoDBPersistenceStore using mocked DynamoDbClient.
*/
-class DynamoDBPersistenceStoreTest extends DynamoDBConfig {
- protected static final String TABLE_NAME_CUSTOM = "idempotency_table_custom";
- private Map key;
- private DynamoDBPersistenceStore dynamoDBPersistenceStore;
+class DynamoDBPersistenceStoreTest {
+ private static final String TABLE_NAME = "idempotency_table";
+ private DynamoDbClient mockClient;
+ private DynamoDBPersistenceStore persistenceStore;
+
+ @BeforeEach
+ void setup() {
+ mockClient = mock(DynamoDbClient.class);
+ persistenceStore = DynamoDBPersistenceStore.builder()
+ .withTableName(TABLE_NAME)
+ .withDynamoDbClient(mockClient)
+ .build();
+ }
@Test
- void putRecord_shouldCreateRecordInDynamoDB() throws IdempotencyItemAlreadyExistsException {
+ void putRecord_shouldSendCorrectPutItemRequest() throws IdempotencyItemAlreadyExistsException {
+ // GIVEN
Instant now = Instant.now();
long expiry = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
- dynamoDBPersistenceStore.putRecord(new DataRecord("key", DataRecord.Status.COMPLETED, expiry, null, null), now);
-
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
- Map item = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME).key(key).build()).item();
- assertThat(item).isNotNull();
- assertThat(item.get("status").s()).isEqualTo("COMPLETED");
- assertThat(item.get("expiration").n()).isEqualTo(String.valueOf(expiry));
- }
+ DataRecord dataRecord = new DataRecord("key", DataRecord.Status.COMPLETED, expiry, null, null);
- @Test
- void putRecord_shouldCreateRecordInDynamoDB_IfPreviousExpired() {
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
+ // WHEN
+ persistenceStore.putRecord(dataRecord, now);
- // GIVEN: Insert a fake item with same id and expired
- Map item = new HashMap<>(key);
- Instant now = Instant.now();
- long expiry = now.minus(30, ChronoUnit.SECONDS).getEpochSecond();
- item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
- item.put("status", AttributeValue.builder().s(DataRecord.Status.COMPLETED.toString()).build());
- item.put("data", AttributeValue.builder().s("Fake Data").build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
-
- // WHEN: call putRecord
- long expiry2 = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
- dynamoDBPersistenceStore.putRecord(
- new DataRecord("key",
- DataRecord.Status.INPROGRESS,
- expiry2,
- null,
- null),
- now);
-
- // THEN: an item is inserted
- Map itemInDb = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME).key(key).build()).item();
- assertThat(itemInDb).isNotNull();
- assertThat(itemInDb.get("status").s()).isEqualTo("INPROGRESS");
- assertThat(itemInDb.get("expiration").n()).isEqualTo(String.valueOf(expiry2));
+ // THEN
+ ArgumentCaptor captor = ArgumentCaptor.forClass(PutItemRequest.class);
+ verify(mockClient).putItem(captor.capture());
+
+ PutItemRequest request = captor.getValue();
+ assertThat(request.tableName()).isEqualTo(TABLE_NAME);
+ assertThat(request.item()).containsEntry("id", AttributeValue.builder().s("key").build());
+ assertThat(request.item().get("status").s()).isEqualTo("COMPLETED");
+ assertThat(request.item().get("expiration").n()).isEqualTo(String.valueOf(expiry));
+
+ // Assert full condition expression (protects bugfix from #1285)
+ assertThat(request.conditionExpression()).isEqualTo(
+ "attribute_not_exists(#id) OR #expiry < :now OR " +
+ "(attribute_exists(#in_progress_expiry) AND #in_progress_expiry < :now_milliseconds AND #status = :inprogress)");
+
+ // Assert expression attribute names
+ assertThat(request.expressionAttributeNames())
+ .containsEntry("#id", "id")
+ .containsEntry("#expiry", "expiration")
+ .containsEntry("#in_progress_expiry", "in_progress_expiration")
+ .containsEntry("#status", "status");
+
+ // Assert expression attribute values
+ assertThat(request.expressionAttributeValues().get(":now").n())
+ .isEqualTo(String.valueOf(now.getEpochSecond()));
+ assertThat(request.expressionAttributeValues().get(":now_milliseconds").n())
+ .isEqualTo(String.valueOf(now.toEpochMilli()));
+ assertThat(request.expressionAttributeValues().get(":inprogress").s())
+ .isEqualTo("INPROGRESS");
}
@Test
- void putRecord_shouldCreateRecordInDynamoDB_IfLambdaWasInProgressAndTimedOut() {
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
-
- // GIVEN: Insert a fake item with same id and progress expired (Lambda timed out before and we allow a new
- // execution)
- Map item = new HashMap<>(key);
+ void putRecord_shouldIncludeInProgressExpiry_whenProvided() throws IdempotencyItemAlreadyExistsException {
+ // GIVEN
Instant now = Instant.now();
- long expiry = now.plus(30, ChronoUnit.SECONDS).getEpochSecond();
- long progressExpiry = now.minus(30, ChronoUnit.SECONDS).toEpochMilli();
- item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
- item.put("status", AttributeValue.builder().s(DataRecord.Status.INPROGRESS.toString()).build());
- item.put("data", AttributeValue.builder().s("Fake Data").build());
- item.put("in_progress_expiration", AttributeValue.builder().n(String.valueOf(progressExpiry)).build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
-
- // WHEN: call putRecord
- long expiry2 = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
- dynamoDBPersistenceStore.putRecord(
- new DataRecord("key",
- DataRecord.Status.INPROGRESS,
- expiry2,
- null,
- null),
- now);
-
- // THEN: an item is inserted
- Map itemInDb = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME).key(key).build()).item();
- assertThat(itemInDb).isNotNull();
- assertThat(itemInDb.get("status").s()).isEqualTo("INPROGRESS");
- assertThat(itemInDb.get("expiration").n()).isEqualTo(String.valueOf(expiry2));
+ long expiry = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ long inProgressExpiry = now.plus(300, ChronoUnit.SECONDS).toEpochMilli();
+ DataRecord dataRecord = new DataRecord("key", DataRecord.Status.INPROGRESS, expiry, null, null, OptionalLong.of(inProgressExpiry));
+
+ // WHEN
+ persistenceStore.putRecord(dataRecord, now);
+
+ // THEN
+ ArgumentCaptor captor = ArgumentCaptor.forClass(PutItemRequest.class);
+ verify(mockClient).putItem(captor.capture());
+
+ PutItemRequest request = captor.getValue();
+ assertThat(request.item().get("in_progress_expiration").n()).isEqualTo(String.valueOf(inProgressExpiry));
}
@Test
- void putRecord_shouldThrowIdempotencyItemAlreadyExistsException_IfRecordAlreadyExist() {
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
-
- // GIVEN: Insert a fake item with same id
- Map item = new HashMap<>(key);
+ void putRecord_shouldThrowIdempotencyItemAlreadyExistsException_whenConditionFails() {
+ // GIVEN
Instant now = Instant.now();
- long expiry = now.plus(30, ChronoUnit.SECONDS).getEpochSecond();
- item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build()); // not expired
- item.put("status", AttributeValue.builder().s(DataRecord.Status.COMPLETED.toString()).build());
- item.put("data", AttributeValue.builder().s("Fake Data").build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
-
- // WHEN: call putRecord
- long expiry2 = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
- DataRecord recordToInsert = new DataRecord("key",
- DataRecord.Status.INPROGRESS,
- expiry2,
- null,
- null);
- assertThatThrownBy(() -> dynamoDBPersistenceStore.putRecord(recordToInsert, now))
+ long expiry = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ DataRecord dataRecord = new DataRecord("key", DataRecord.Status.INPROGRESS, expiry, null, null);
+
+ Map existingItem = new HashMap<>();
+ existingItem.put("id", AttributeValue.builder().s("key").build());
+ existingItem.put("status", AttributeValue.builder().s("COMPLETED").build());
+ existingItem.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
+ existingItem.put("data", AttributeValue.builder().s("Existing Data").build());
+
+ ConditionalCheckFailedException exception = ConditionalCheckFailedException.builder()
+ .item(existingItem)
+ .build();
+ when(mockClient.putItem(any(PutItemRequest.class))).thenThrow(exception);
+
+ // WHEN / THEN
+ assertThatThrownBy(() -> persistenceStore.putRecord(dataRecord, now))
.isInstanceOf(IdempotencyItemAlreadyExistsException.class)
- // DataRecord should be present due to returnValuesOnConditionCheckFailure("ALL_OLD")
- .matches(e -> ((IdempotencyItemAlreadyExistsException) e).getDataRecord().isPresent());
-
- // THEN: item was not updated, retrieve the initial one
- Map itemInDb = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME).key(key).build()).item();
- assertThat(itemInDb).isNotNull();
- assertThat(itemInDb.get("status").s()).isEqualTo("COMPLETED");
- assertThat(itemInDb.get("expiration").n()).isEqualTo(String.valueOf(expiry));
- assertThat(itemInDb.get("data").s()).isEqualTo("Fake Data");
+ .matches(e -> ((IdempotencyItemAlreadyExistsException) e).getDataRecord().isPresent())
+ .satisfies(e -> {
+ IdempotencyItemAlreadyExistsException ex = (IdempotencyItemAlreadyExistsException) e;
+ DataRecord existingRecord = ex.getDataRecord().get();
+ assertThat(existingRecord.getIdempotencyKey()).isEqualTo("key");
+ assertThat(existingRecord.getStatus()).isEqualTo(DataRecord.Status.COMPLETED);
+ assertThat(existingRecord.getResponseData()).isEqualTo("Existing Data");
+ });
+
+ // Assert returnValuesOnConditionCheckFailure is ALL_OLD (protects behavior from #1821)
+ ArgumentCaptor captor = ArgumentCaptor.forClass(PutItemRequest.class);
+ verify(mockClient).putItem(captor.capture());
+ PutItemRequest request = captor.getValue();
+ assertThat(request.returnValuesOnConditionCheckFailureAsString()).isEqualTo("ALL_OLD");
}
@Test
- void putRecord_shouldBlockUpdate_IfRecordAlreadyExistAndProgressNotExpiredAfterLambdaTimedOut() {
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
-
- // GIVEN: Insert a fake item with same id
- Map item = new HashMap<>(key);
+ void putRecord_shouldThrowWithoutDataRecord_whenConditionalCheckHasNoItem() {
+ // GIVEN
Instant now = Instant.now();
- long expiry = now.plus(30, ChronoUnit.SECONDS).getEpochSecond(); // not expired
- long progressExpiry = now.plus(30, ChronoUnit.SECONDS).toEpochMilli(); // not expired
- item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
- item.put("status", AttributeValue.builder().s(DataRecord.Status.INPROGRESS.toString()).build());
- item.put("data", AttributeValue.builder().s("Fake Data").build());
- item.put("in_progress_expiration", AttributeValue.builder().n(String.valueOf(progressExpiry)).build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
-
- // WHEN: call putRecord
- long expiry2 = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
- DataRecord recordToInsert = new DataRecord("key",
- DataRecord.Status.INPROGRESS,
- expiry2,
- "Fake Data 2",
- null);
- assertThatThrownBy(() -> dynamoDBPersistenceStore.putRecord(recordToInsert, now))
+ long expiry = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ DataRecord dataRecord = new DataRecord("key", DataRecord.Status.INPROGRESS, expiry, null, null);
+
+ ConditionalCheckFailedException exception = ConditionalCheckFailedException.builder().build();
+ when(mockClient.putItem(any(PutItemRequest.class))).thenThrow(exception);
+
+ // WHEN / THEN
+ assertThatThrownBy(() -> persistenceStore.putRecord(dataRecord, now))
.isInstanceOf(IdempotencyItemAlreadyExistsException.class)
- // DataRecord should be present due to returnValuesOnConditionCheckFailure("ALL_OLD")
- .matches(e -> ((IdempotencyItemAlreadyExistsException) e).getDataRecord().isPresent());
-
- // THEN: item was not updated, retrieve the initial one
- Map itemInDb = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME).key(key).build()).item();
- assertThat(itemInDb).isNotNull();
- assertThat(itemInDb.get("status").s()).isEqualTo("INPROGRESS");
- assertThat(itemInDb.get("expiration").n()).isEqualTo(String.valueOf(expiry));
- assertThat(itemInDb.get("data").s()).isEqualTo("Fake Data");
+ .matches(e -> !((IdempotencyItemAlreadyExistsException) e).getDataRecord().isPresent());
}
@Test
- void getRecord_shouldReturnExistingRecord() throws IdempotencyItemNotFoundException {
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
-
- // GIVEN: Insert a fake item with same id
- Map item = new HashMap<>(key);
- Instant now = Instant.now();
- long expiry = now.plus(30, ChronoUnit.SECONDS).getEpochSecond();
+ void getRecord_shouldReturnDataRecord_whenItemExists() throws IdempotencyItemNotFoundException {
+ // GIVEN
+ long expiry = Instant.now().plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ Map item = new HashMap<>();
+ item.put("id", AttributeValue.builder().s("key").build());
+ item.put("status", AttributeValue.builder().s("COMPLETED").build());
item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
- item.put("status", AttributeValue.builder().s(DataRecord.Status.COMPLETED.toString()).build());
- item.put("data", AttributeValue.builder().s("Fake Data").build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
+ item.put("data", AttributeValue.builder().s("Response Data").build());
+
+ GetItemResponse response = GetItemResponse.builder()
+ .item(item)
+ .build();
+ when(mockClient.getItem(any(GetItemRequest.class))).thenReturn(response);
// WHEN
- DataRecord dr = dynamoDBPersistenceStore.getRecord("key");
+ DataRecord dataRecord = persistenceStore.getRecord("key");
// THEN
- assertThat(dr.getIdempotencyKey()).isEqualTo("key");
- assertThat(dr.getStatus()).isEqualTo(DataRecord.Status.COMPLETED);
- assertThat(dr.getResponseData()).isEqualTo("Fake Data");
- assertThat(dr.getExpiryTimestamp()).isEqualTo(expiry);
+ ArgumentCaptor captor = ArgumentCaptor.forClass(GetItemRequest.class);
+ verify(mockClient).getItem(captor.capture());
+
+ GetItemRequest request = captor.getValue();
+ assertThat(request.tableName()).isEqualTo(TABLE_NAME);
+ assertThat(request.consistentRead()).isTrue();
+ assertThat(request.key()).containsEntry("id", AttributeValue.builder().s("key").build());
+
+ assertThat(dataRecord.getIdempotencyKey()).isEqualTo("key");
+ assertThat(dataRecord.getStatus()).isEqualTo(DataRecord.Status.COMPLETED);
+ assertThat(dataRecord.getExpiryTimestamp()).isEqualTo(expiry);
+ assertThat(dataRecord.getResponseData()).isEqualTo("Response Data");
}
@Test
- void getRecord_shouldThrowException_whenRecordIsAbsent() {
- assertThatThrownBy(() -> dynamoDBPersistenceStore.getRecord("key"))
+ void getRecord_shouldThrowException_whenItemDoesNotExist() {
+ // GIVEN
+ GetItemResponse response = GetItemResponse.builder().build();
+ when(mockClient.getItem(any(GetItemRequest.class))).thenReturn(response);
+
+ // WHEN / THEN
+ assertThatThrownBy(() -> persistenceStore.getRecord("key"))
.isInstanceOf(IdempotencyItemNotFoundException.class);
}
@Test
- void updateRecord_shouldUpdateRecord() {
- // GIVEN: Insert a fake item with same id
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
- Map item = new HashMap<>(key);
- Instant now = Instant.now();
- long expiry = now.plus(360, ChronoUnit.SECONDS).getEpochSecond();
- item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
- item.put("status", AttributeValue.builder().s(DataRecord.Status.INPROGRESS.toString()).build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
- // enable payload validation
- dynamoDBPersistenceStore.configure(IdempotencyConfig.builder().withPayloadValidationJMESPath("path").build(),
- null);
+ void updateRecord_shouldSendCorrectUpdateItemRequest() {
+ // GIVEN
+ long expiry = Instant.now().plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ DataRecord dataRecord = new DataRecord("key", DataRecord.Status.COMPLETED, expiry, "Response", null);
// WHEN
- expiry = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
- DataRecord dr = new DataRecord("key", DataRecord.Status.COMPLETED, expiry, "Fake result", "hash");
- dynamoDBPersistenceStore.updateRecord(dr);
+ persistenceStore.updateRecord(dataRecord);
// THEN
- Map itemInDb = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME).key(key).build()).item();
- assertThat(itemInDb.get("status").s()).isEqualTo("COMPLETED");
- assertThat(itemInDb.get("expiration").n()).isEqualTo(String.valueOf(expiry));
- assertThat(itemInDb.get("data").s()).isEqualTo("Fake result");
- assertThat(itemInDb.get("validation").s()).isEqualTo("hash");
+ ArgumentCaptor captor = ArgumentCaptor.forClass(UpdateItemRequest.class);
+ verify(mockClient).updateItem(captor.capture());
+
+ UpdateItemRequest request = captor.getValue();
+ assertThat(request.tableName()).isEqualTo(TABLE_NAME);
+ assertThat(request.key()).containsEntry("id", AttributeValue.builder().s("key").build());
+ assertThat(request.updateExpression()).contains("SET #response_data = :response_data");
+ assertThat(request.updateExpression()).contains("#expiry = :expiry");
+ assertThat(request.updateExpression()).contains("#status = :status");
+ assertThat(request.expressionAttributeValues().get(":response_data").s()).isEqualTo("Response");
+ assertThat(request.expressionAttributeValues().get(":status").s()).isEqualTo("COMPLETED");
}
@Test
- void deleteRecord_shouldDeleteRecord() {
- // GIVEN: Insert a fake item with same id
- key = Collections.singletonMap("id", AttributeValue.builder().s("key").build());
- Map item = new HashMap<>(key);
+ void updateRecord_shouldIncludeValidation_whenPayloadValidationEnabled() {
+ // GIVEN
+ persistenceStore.configure(IdempotencyConfig.builder().withPayloadValidationJMESPath("body").build(), null);
+ long expiry = Instant.now().plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ DataRecord dataRecord = new DataRecord("key", DataRecord.Status.COMPLETED, expiry, "Response", "hash123");
+
+ // WHEN
+ persistenceStore.updateRecord(dataRecord);
+
+ // THEN
+ ArgumentCaptor captor = ArgumentCaptor.forClass(UpdateItemRequest.class);
+ verify(mockClient).updateItem(captor.capture());
+
+ UpdateItemRequest request = captor.getValue();
+ assertThat(request.updateExpression()).contains("#validation_key = :validation_key");
+ assertThat(request.expressionAttributeValues().get(":validation_key").s()).isEqualTo("hash123");
+ }
+
+ @Test
+ void deleteRecord_shouldSendCorrectDeleteItemRequest() {
+ // WHEN
+ persistenceStore.deleteRecord("key");
+
+ // THEN
+ ArgumentCaptor captor = ArgumentCaptor.forClass(DeleteItemRequest.class);
+ verify(mockClient).deleteItem(captor.capture());
+
+ DeleteItemRequest request = captor.getValue();
+ assertThat(request.tableName()).isEqualTo(TABLE_NAME);
+ assertThat(request.key()).containsEntry("id", AttributeValue.builder().s("key").build());
+ }
+
+ @Test
+ void customAttributeNames_shouldUseCorrectAttributes() throws IdempotencyItemAlreadyExistsException {
+ // GIVEN
+ DynamoDBPersistenceStore customStore = DynamoDBPersistenceStore.builder()
+ .withTableName("custom_table")
+ .withDynamoDbClient(mockClient)
+ .withKeyAttr("pk")
+ .withSortKeyAttr("sk")
+ .withStaticPkValue("IDEMPOTENCY")
+ .withExpiryAttr("ttl")
+ .withStatusAttr("state")
+ .withDataAttr("result")
+ .withValidationAttr("hash")
+ .build();
+
Instant now = Instant.now();
- long expiry = now.plus(360, ChronoUnit.SECONDS).getEpochSecond();
- item.put("expiration", AttributeValue.builder().n(String.valueOf(expiry)).build());
- item.put("status", AttributeValue.builder().s(DataRecord.Status.INPROGRESS.toString()).build());
- client.putItem(PutItemRequest.builder().tableName(TABLE_NAME).item(item).build());
- assertThat(client.scan(ScanRequest.builder().tableName(TABLE_NAME).build()).count()).isEqualTo(1);
+ long expiry = now.plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ DataRecord dataRecord = new DataRecord("mykey", DataRecord.Status.INPROGRESS, expiry, null, null);
// WHEN
- dynamoDBPersistenceStore.deleteRecord("key");
+ customStore.putRecord(dataRecord, now);
// THEN
- assertThat(client.scan(ScanRequest.builder().tableName(TABLE_NAME).build()).count()).isZero();
+ ArgumentCaptor captor = ArgumentCaptor.forClass(PutItemRequest.class);
+ verify(mockClient).putItem(captor.capture());
+
+ PutItemRequest request = captor.getValue();
+ assertThat(request.tableName()).isEqualTo("custom_table");
+ assertThat(request.item()).containsEntry("pk", AttributeValue.builder().s("IDEMPOTENCY").build());
+ assertThat(request.item()).containsEntry("sk", AttributeValue.builder().s("mykey").build());
+ assertThat(request.item().get("state").s()).isEqualTo("INPROGRESS");
+ assertThat(request.item().get("ttl").n()).isEqualTo(String.valueOf(expiry));
}
@Test
- void endToEndWithCustomAttrNamesAndSortKey() throws IdempotencyItemNotFoundException {
- try {
- client.createTable(CreateTableRequest.builder()
- .tableName(TABLE_NAME_CUSTOM)
- .keySchema(
- KeySchemaElement.builder().keyType(KeyType.HASH).attributeName("key").build(),
- KeySchemaElement.builder().keyType(KeyType.RANGE).attributeName("sortkey").build())
- .attributeDefinitions(
- AttributeDefinition.builder().attributeName("key").attributeType(ScalarAttributeType.S)
- .build(),
- AttributeDefinition.builder().attributeName("sortkey").attributeType(ScalarAttributeType.S)
- .build())
- .billingMode(BillingMode.PAY_PER_REQUEST)
- .build());
-
- DynamoDBPersistenceStore persistenceStore = DynamoDBPersistenceStore.builder()
- .withTableName(TABLE_NAME_CUSTOM)
- .withDynamoDbClient(client)
- .withDataAttr("result")
- .withExpiryAttr("expiry")
- .withKeyAttr("key")
- .withSortKeyAttr("sortkey")
- .withStaticPkValue("pk")
- .withStatusAttr("state")
- .withValidationAttr("valid")
- .build();
-
- Instant now = Instant.now();
- DataRecord dr = new DataRecord(
- "mykey",
- DataRecord.Status.INPROGRESS,
- now.plus(400, ChronoUnit.SECONDS).getEpochSecond(),
- null,
- null);
- // PUT
- persistenceStore.putRecord(dr, now);
-
- Map customKey = new HashMap<>();
- customKey.put("key", AttributeValue.builder().s("pk").build());
- customKey.put("sortkey", AttributeValue.builder().s("mykey").build());
-
- Map itemInDb = client
- .getItem(GetItemRequest.builder().tableName(TABLE_NAME_CUSTOM).key(customKey).build()).item();
-
- // GET
- DataRecord recordInDb = persistenceStore.getRecord("mykey");
-
- assertThat(itemInDb).isNotNull();
- assertThat(itemInDb.get("key").s()).isEqualTo("pk");
- assertThat(itemInDb.get("sortkey").s()).isEqualTo(recordInDb.getIdempotencyKey());
- assertThat(itemInDb.get("state").s()).isEqualTo(recordInDb.getStatus().toString());
- assertThat(itemInDb.get("expiry").n()).isEqualTo(String.valueOf(recordInDb.getExpiryTimestamp()));
-
- // UPDATE
- DataRecord updatedRecord = new DataRecord(
- "mykey",
- DataRecord.Status.COMPLETED,
- now.plus(500, ChronoUnit.SECONDS).getEpochSecond(),
- "response",
- null);
- persistenceStore.updateRecord(updatedRecord);
- recordInDb = persistenceStore.getRecord("mykey");
- assertThat(recordInDb).isEqualTo(updatedRecord);
-
- // DELETE
- persistenceStore.deleteRecord("mykey");
- assertThat(client.scan(ScanRequest.builder().tableName(TABLE_NAME_CUSTOM).build()).count()).isEqualTo(0);
-
- } finally {
- try {
- client.deleteTable(DeleteTableRequest.builder().tableName(TABLE_NAME_CUSTOM).build());
- } catch (Exception e) {
- // OK
- }
- }
+ void customAttributeNames_shouldUseCorrectKey_forGet() throws IdempotencyItemNotFoundException {
+ // GIVEN
+ DynamoDBPersistenceStore customStore = DynamoDBPersistenceStore.builder()
+ .withTableName("custom_table")
+ .withDynamoDbClient(mockClient)
+ .withKeyAttr("pk")
+ .withSortKeyAttr("sk")
+ .withStaticPkValue("IDEMPOTENCY")
+ .withExpiryAttr("ttl")
+ .withStatusAttr("state")
+ .build();
+
+ long expiry = Instant.now().plus(3600, ChronoUnit.SECONDS).getEpochSecond();
+ Map item = new HashMap<>();
+ item.put("pk", AttributeValue.builder().s("IDEMPOTENCY").build());
+ item.put("sk", AttributeValue.builder().s("mykey").build());
+ item.put("state", AttributeValue.builder().s("COMPLETED").build());
+ item.put("ttl", AttributeValue.builder().n(String.valueOf(expiry)).build());
+
+ GetItemResponse response = GetItemResponse.builder().item(item).build();
+ when(mockClient.getItem(any(GetItemRequest.class))).thenReturn(response);
+
+ // WHEN
+ DataRecord dataRecord = customStore.getRecord("mykey");
+
+ // THEN
+ ArgumentCaptor captor = ArgumentCaptor.forClass(GetItemRequest.class);
+ verify(mockClient).getItem(captor.capture());
+
+ GetItemRequest request = captor.getValue();
+ assertThat(request.key()).containsEntry("pk", AttributeValue.builder().s("IDEMPOTENCY").build());
+ assertThat(request.key()).containsEntry("sk", AttributeValue.builder().s("mykey").build());
+
+ assertThat(dataRecord.getIdempotencyKey()).isEqualTo("mykey");
+ assertThat(dataRecord.getStatus()).isEqualTo(DataRecord.Status.COMPLETED);
}
@Test
@SetEnvironmentVariable(key = Constants.IDEMPOTENCY_DISABLED_ENV, value = "true")
void idempotencyDisabled_noClientShouldBeCreated() {
- DynamoDBPersistenceStore store = DynamoDBPersistenceStore.builder().withTableName(TABLE_NAME).build();
- assertThatThrownBy(() -> store.getRecord("fake"))
- .isInstanceOf(NullPointerException.class);
- }
-
- @BeforeEach
- void setup() {
- dynamoDBPersistenceStore = DynamoDBPersistenceStore.builder()
+ // GIVEN / WHEN
+ DynamoDBPersistenceStore store = DynamoDBPersistenceStore.builder()
.withTableName(TABLE_NAME)
- .withDynamoDbClient(client)
.build();
- }
- @AfterEach
- void emptyDB() {
- // Clear all items from the table
- client.scan(ScanRequest.builder().tableName(TABLE_NAME).build())
- .items()
- .forEach(item -> {
- Map itemKey = Collections.singletonMap("id", item.get("id"));
- client.deleteItem(DeleteItemRequest.builder().tableName(TABLE_NAME).key(itemKey).build());
- });
- key = null;
+ // THEN
+ assertThatThrownBy(() -> store.getRecord("fake"))
+ .isInstanceOf(NullPointerException.class);
}
}
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/IdempotencyTest.java b/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/IdempotencyTest.java
deleted file mode 100644
index e85614580..000000000
--- a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/IdempotencyTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2023 Amazon.com, Inc. or its affiliates.
- * Licensed 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.
- *
- */
-
-package software.amazon.lambda.powertools.idempotency.persistence.dynamodb;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.junit.jupiter.api.Test;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
-import com.amazonaws.services.lambda.runtime.tests.EventLoader;
-
-import software.amazon.awssdk.services.dynamodb.model.ScanRequest;
-import software.amazon.lambda.powertools.common.stubs.TestLambdaContext;
-import software.amazon.lambda.powertools.idempotency.persistence.dynamodb.handlers.IdempotencyFunction;
-
-class IdempotencyTest extends DynamoDBConfig {
-
- private Context context = new TestLambdaContext();
-
- @Test
- void endToEndTest() {
- IdempotencyFunction function = new IdempotencyFunction(client);
-
- APIGatewayProxyResponseEvent response = function
- .handleRequest(EventLoader.loadApiGatewayRestEvent("apigw_event2.json"), context);
- assertThat(function.handlerExecuted).isTrue();
-
- function.handlerExecuted = false;
-
- APIGatewayProxyResponseEvent response2 = function
- .handleRequest(EventLoader.loadApiGatewayRestEvent("apigw_event2.json"), context);
- assertThat(function.handlerExecuted).isFalse();
-
- assertThat(response).isEqualTo(response2);
- assertThat(response2.getBody()).contains("hello world");
-
- assertThat(client.scan(ScanRequest.builder().tableName(TABLE_NAME).build()).count()).isEqualTo(1);
- }
-}
diff --git a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/handlers/IdempotencyFunction.java b/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/handlers/IdempotencyFunction.java
deleted file mode 100644
index d816af801..000000000
--- a/powertools-idempotency/powertools-idempotency-dynamodb/src/test/java/software/amazon/lambda/powertools/idempotency/persistence/dynamodb/handlers/IdempotencyFunction.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright 2023 Amazon.com, Inc. or its affiliates.
- * Licensed 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.
- *
- */
-
-package software.amazon.lambda.powertools.idempotency.persistence.dynamodb.handlers;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import com.amazonaws.services.lambda.runtime.Context;
-import com.amazonaws.services.lambda.runtime.RequestHandler;
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyRequestEvent;
-import com.amazonaws.services.lambda.runtime.events.APIGatewayProxyResponseEvent;
-
-import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
-import software.amazon.lambda.powertools.idempotency.Idempotency;
-import software.amazon.lambda.powertools.idempotency.IdempotencyConfig;
-import software.amazon.lambda.powertools.idempotency.Idempotent;
-import software.amazon.lambda.powertools.idempotency.persistence.dynamodb.DynamoDBPersistenceStore;
-
-public class IdempotencyFunction implements RequestHandler {
- public boolean handlerExecuted = false;
-
- public IdempotencyFunction(DynamoDbClient client) {
- // we need to initialize idempotency configuration before the handleRequest method is called
- Idempotency.config().withConfig(
- IdempotencyConfig.builder()
- .withEventKeyJMESPath("powertools_json(body).address")
- .build())
- .withPersistenceStore(
- DynamoDBPersistenceStore.builder()
- .withTableName("idempotency_table")
- .withDynamoDbClient(client)
- .build())
- .configure();
- }
-
- @Idempotent
- public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent input, final Context context) {
- handlerExecuted = true;
- Map headers = new HashMap<>();
-
- headers.put("Content-Type", "application/json");
- headers.put("Access-Control-Allow-Origin", "*");
- headers.put("Access-Control-Allow-Methods", "GET, OPTIONS");
- headers.put("Access-Control-Allow-Headers", "*");
-
- APIGatewayProxyResponseEvent response = new APIGatewayProxyResponseEvent()
- .withHeaders(headers);
-
- return response
- .withStatusCode(200)
- .withBody("{ \"message\": \"hello world\"}");
-
- }
-}
From 2177870b0a11b34835b6cba5b5be0b54c512ffea Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 12 May 2026 14:49:56 +0200
Subject: [PATCH 106/116] chore: bump actions/dependency-review-action from
4.9.0 to 5.0.0 (#2502)
Reviewed and approved by @phipag. Review performed by Claude. Node runtime refresh, no API breaking changes.
---
.github/workflows/security-dependencies-check.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-dependencies-check.yml b/.github/workflows/security-dependencies-check.yml
index b2b5c7f8b..30172aedc 100644
--- a/.github/workflows/security-dependencies-check.yml
+++ b/.github/workflows/security-dependencies-check.yml
@@ -25,6 +25,6 @@ jobs:
- name: Checkout Repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Verify Contents
- uses: actions/dependency-review-action@2031cfc080254a8a887f58cffee85186f0e49e48 # v4.9.0
+ uses: actions/dependency-review-action@a1d282b36b6f3519aa1f3fc636f609c47dddb294 # v5.0.0
with:
config-file: './.github/dependency-review-config.yml'
From 04b0c10a65373670f2ce8297f636078b253f5d41 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 12 May 2026 14:50:13 +0200
Subject: [PATCH 107/116] chore: bump aws.sdk.version from 2.43.2 to 2.44.4
(#2500)
Reviewed and approved by @phipag. Review performed by Claude. Routine minor SDK bump.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index 46ed94e3a..d158d9166 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.43.2
+ 2.44.4
1.9.20.1
diff --git a/pom.xml b/pom.xml
index f4e9f2c0c..5d9386062 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.25.4
2.0.17
2.21.2
- 2.43.2
+ 2.44.4
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 75f520443..a3c4195e0 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.43.2
+ 2.44.4
1.9.20.1
true
From a84ae48a38b7ba5285af514858e30e507a523b9e Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 15 May 2026 10:48:22 +0200
Subject: [PATCH 108/116] chore: bump log4j.version from 2.25.4 to 2.26.0
(#2503)
Reviewed and approved by @phipag. Review performed by Claude. Safe minor version bump of Apache Log4j 2.25.4 to 2.26.0.
---
examples/powertools-examples-core-utilities/cdk/app/pom.xml | 2 +-
examples/powertools-examples-core-utilities/sam-graalvm/pom.xml | 2 +-
examples/powertools-examples-parameters/sam-graalvm/pom.xml | 2 +-
pom.xml | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/examples/powertools-examples-core-utilities/cdk/app/pom.xml b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
index 93286d3f2..12206f52b 100644
--- a/examples/powertools-examples-core-utilities/cdk/app/pom.xml
+++ b/examples/powertools-examples-core-utilities/cdk/app/pom.xml
@@ -11,7 +11,7 @@
jar
- 2.25.4
+ 2.26.0
11
11
1.9.20.1
diff --git a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
index d707a821a..6204dc906 100644
--- a/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-core-utilities/sam-graalvm/pom.xml
@@ -9,7 +9,7 @@
jar
- 2.25.4
+ 2.26.0
11
11
1.9.20.1
diff --git a/examples/powertools-examples-parameters/sam-graalvm/pom.xml b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
index bfd4f6191..572375100 100644
--- a/examples/powertools-examples-parameters/sam-graalvm/pom.xml
+++ b/examples/powertools-examples-parameters/sam-graalvm/pom.xml
@@ -8,7 +8,7 @@
Powertools for AWS Lambda (Java) - Examples - Parameters GraalVM
- 2.25.4
+ 2.26.0
11
11
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 5d9386062..103de62e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@
11
11
3.1.2
- 2.25.4
+ 2.26.0
2.0.17
2.21.2
2.44.4
From cbcb228e32cf0e4b437860807219341768bd28ce Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 15 May 2026 16:45:37 +0200
Subject: [PATCH 109/116] chore: bump co.elastic.logging:logback-ecs-encoder
from 1.7.0 to 1.8.0 (#2504)
Reviewed and approved by @phipag. Review performed by Claude. Safe minor version bump of logback-ecs-encoder 1.7.0 to 1.8.0.
---
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/pom.xml b/pom.xml
index 103de62e9..d64c5d387 100644
--- a/pom.xml
+++ b/pom.xml
@@ -113,7 +113,7 @@
0.6.0
1.12.781
2.21.0
- 1.7.0
+ 1.8.0
5.23.0
5.23.0
2.3.0
From 9965a2877a5fa57c8e4a601e087c1ecc0e71292a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 May 2026 00:55:54 +0200
Subject: [PATCH 110/116] chore: bump github/codeql-action from 4.35.4 to
4.35.5 (#2507)
Reviewed and approved by @phipag. Review performed by Claude. Safe patch bump of github/codeql-action 4.35.4 to 4.35.5.
---
.github/workflows/security-scorecard.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/security-scorecard.yml b/.github/workflows/security-scorecard.yml
index 2e156daf5..b7e5d0f0e 100644
--- a/.github/workflows/security-scorecard.yml
+++ b/.github/workflows/security-scorecard.yml
@@ -53,6 +53,6 @@ jobs:
path: results.sarif
retention-days: 5
- name: Upload to Code-Scanning
- uses: github/codeql-action/upload-sarif@68bde559dea0fdcac2102bfdf6230c5f70eb485e # v3.29.5
+ uses: github/codeql-action/upload-sarif@9e0d7b8d25671d64c341c19c0152d693099fb5ba # v3.29.5
with:
sarif_file: results.sarif
From 5b93fa26404b1c4b9ea0982448c99e282fcd03c6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 May 2026 00:56:10 +0200
Subject: [PATCH 111/116] chore: bump sam/build-java25 (#2506)
Reviewed and approved by @phipag. Review performed by Claude. Safe SHA bump of sam/build-java25 image for e2e tests.
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index d7cc856bc..515884839 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:9ddb7b5954969c5d734b2dcd74ffd68b93816adc56a12209f6b8620ac107c899
+FROM public.ecr.aws/sam/build-java25@sha256:d8fa1bb0f2b1548d37755232a0c36fbf146aa30809236d072c850b724d2ca4f1
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From 3ae14fecadadcc44026cdfc80ff927ce24c06ccb Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 19 May 2026 00:56:25 +0200
Subject: [PATCH 112/116] chore: bump aws.sdk.version from 2.44.4 to 2.44.7
(#2505)
Reviewed and approved by @phipag. Review performed by Claude. Safe patch bump of aws.sdk.version 2.44.4 to 2.44.7.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index d158d9166..e009b7c74 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.44.4
+ 2.44.7
1.9.20.1
diff --git a/pom.xml b/pom.xml
index d64c5d387..55f9f95d6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.26.0
2.0.17
2.21.2
- 2.44.4
+ 2.44.7
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index a3c4195e0..6bbc76ef1 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.44.4
+ 2.44.7
1.9.20.1
true
From 3ef86ee2b69b6a66f83a02f65b8dca938401eca9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 00:56:48 +0200
Subject: [PATCH 113/116] chore: bump sam/build-java25 (#2509)
Reviewed and approved by @phipag. Review performed by Claude. Safe SHA bump of sam/build-java25 image for e2e tests.
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index 515884839..2e6d07f8d 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:d8fa1bb0f2b1548d37755232a0c36fbf146aa30809236d072c850b724d2ca4f1
+FROM public.ecr.aws/sam/build-java25@sha256:637e067f425d92165d0568d69dda45e906bc68801f078829b821871f5139fe88
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From 76eec0346695922eb0e1978fa88be2bdfb14a944 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 00:57:03 +0200
Subject: [PATCH 114/116] chore: bump aws.sdk.version from 2.42.34 to 2.44.9
(#2508)
Reviewed and approved by @phipag. Review performed by Claude. Safe bump of sdk.version in powertools-examples-batch from 2.42.34 to 2.44.9.
---
examples/powertools-examples-batch/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/examples/powertools-examples-batch/pom.xml b/examples/powertools-examples-batch/pom.xml
index d566ac351..cd71a6e7c 100644
--- a/examples/powertools-examples-batch/pom.xml
+++ b/examples/powertools-examples-batch/pom.xml
@@ -14,7 +14,7 @@
11
11
1.9.20.1
- 2.42.34
+ 2.44.9
From 296068153ca09c8a7328a9c1b434fc3986b74218 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 22:13:13 +0200
Subject: [PATCH 115/116] chore: bump sam/build-java25 (#2512)
Reviewed and approved by @phipag. Review performed by Claude. Safe SHA bump of sam/build-java25 image for e2e tests.
---
powertools-e2e-tests/src/test/resources/docker/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/powertools-e2e-tests/src/test/resources/docker/Dockerfile b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
index 2e6d07f8d..1dd51129b 100644
--- a/powertools-e2e-tests/src/test/resources/docker/Dockerfile
+++ b/powertools-e2e-tests/src/test/resources/docker/Dockerfile
@@ -1,5 +1,5 @@
# Use the official AWS SAM base image for Java 25
-FROM public.ecr.aws/sam/build-java25@sha256:637e067f425d92165d0568d69dda45e906bc68801f078829b821871f5139fe88
+FROM public.ecr.aws/sam/build-java25@sha256:7db61893a37ed07b454aaa66ef74ae9c2221d1200b7796ebead4b25da01f7233
# Install GraalVM dependencies
RUN curl -4 -L https://download.oracle.com/graalvm/25/latest/graalvm-jdk-25_linux-x64_bin.tar.gz | tar -xvz
From afdb541a5b64d2865ba9dd2aa3bb5a690a15d767 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 20 May 2026 22:13:30 +0200
Subject: [PATCH 116/116] chore: bump aws.sdk.version from 2.44.7 to 2.44.9
(#2511)
Reviewed and approved by @phipag. Review performed by Claude. Safe patch bump of aws.sdk.version 2.44.7 to 2.44.9.
---
examples/powertools-examples-cloudformation/pom.xml | 2 +-
pom.xml | 2 +-
powertools-e2e-tests/handlers/pom.xml | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/powertools-examples-cloudformation/pom.xml b/examples/powertools-examples-cloudformation/pom.xml
index e009b7c74..5b3ebd993 100644
--- a/examples/powertools-examples-cloudformation/pom.xml
+++ b/examples/powertools-examples-cloudformation/pom.xml
@@ -14,7 +14,7 @@
11
1.4.0
3.16.1
- 2.44.7
+ 2.44.9
1.9.20.1
diff --git a/pom.xml b/pom.xml
index 55f9f95d6..62ec31e9d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -86,7 +86,7 @@
2.26.0
2.0.17
2.21.2
- 2.44.7
+ 2.44.9
2.21.0
2.2.0
UTF-8
diff --git a/powertools-e2e-tests/handlers/pom.xml b/powertools-e2e-tests/handlers/pom.xml
index 6bbc76ef1..7d4b3a8a2 100644
--- a/powertools-e2e-tests/handlers/pom.xml
+++ b/powertools-e2e-tests/handlers/pom.xml
@@ -19,7 +19,7 @@
3.6.2
1.14.1
3.15.0
- 2.44.7
+ 2.44.9
1.9.20.1
true