From e734ff02be5ff2952e7d1c2281029ef26db5f8dd Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger Date: Tue, 5 Dec 2023 17:03:28 +0100 Subject: [PATCH 01/83] chore: remove the markdown linter --- .github/workflows/verify.yaml | 12 ------------ .markdownlint.yaml | 34 ---------------------------------- 2 files changed, 46 deletions(-) delete mode 100644 .markdownlint.yaml diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index ee77c7a88..fdb4f7b96 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -76,18 +76,6 @@ jobs: run: | ./gradlew checkstyleMain checkstyleTest - markdown-lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install mardkdownlint - run: npm install -g markdownlint-cli2 - - - name: Run markdownlint - run: | - markdownlint-cli2-config .markdownlint.yaml "**/*.md" "#.github" "#charts" - unit-tests: runs-on: ubuntu-latest needs: [ verify-formatting, verify-license-headers ] diff --git a/.markdownlint.yaml b/.markdownlint.yaml deleted file mode 100644 index 45ae81489..000000000 --- a/.markdownlint.yaml +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH -# Copyright (c) 2023 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://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. -# -# SPDX-License-Identifier: Apache-2.0 - - -"default": true -# Do not restrict line length: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#MD013 -"MD013": false -# Do not restrict inline HTML: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#MD033 -"MD033": false -# Allow same content on headlines on siblings: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#MD024 -"MD024": - "siblings_only": true -"MD032": false -# Allow lists without empty lines around them: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#MD032 -# Necessary for Helm docs -"MD004": false -# Allow for more unordered lists: https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#MD004 -# Necessary for Helm docs From c71bf4f593ed78de4cb13ce7088f6f46c4ea6b06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 09:04:13 +0100 Subject: [PATCH 02/83] chore(deps): bump actions/stale from 8 to 9 (#923) * chore(deps): bump actions/stale from 8 to 9 Bumps [actions/stale](https://github.com/actions/stale) from 8 to 9. - [Release notes](https://github.com/actions/stale/releases) - [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/stale/compare/v8...v9) --- updated-dependencies: - dependency-name: actions/stale dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- .github/workflows/stale-bot.yml | 8 ++++---- DEPENDENCIES | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml index 922483cef..38a9daecf 100644 --- a/.github/workflows/stale-bot.yml +++ b/.github/workflows/stale-bot.yml @@ -34,7 +34,7 @@ jobs: issues: write steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: operations-per-run: 1000 days-before-issue-stale: 32 # 4 weeks @@ -54,7 +54,7 @@ jobs: permissions: issues: write steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: operations-per-run: 1000 days-before-issue-stale: 32 @@ -74,7 +74,7 @@ jobs: permissions: issues: write steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: operations-per-run: 1000 days-before-issue-stale: 14 @@ -95,7 +95,7 @@ jobs: permissions: pull-requests: write steps: - - uses: actions/stale@v8 + - uses: actions/stale@v9 with: operations-per-run: 1000 days-before-issue-stale: -1 # ignore issues (overwrite default days-before-stale) diff --git a/DEPENDENCIES b/DEPENDENCIES index dc1939db5..20d5d6b86 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -8,7 +8,7 @@ maven/mavencentral/com.azure/azure-core-http-netty/1.13.7, MIT AND Apache-2.0, a maven/mavencentral/com.azure/azure-core-http-netty/1.13.9, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core/1.43.0, MIT AND Apache-2.0, approved, #10548 maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined -maven/mavencentral/com.azure/azure-core/1.45.0, , restricted, clearlydefined +maven/mavencentral/com.azure/azure-core/1.45.0, MIT AND Apache-2.0, approved, #11845 maven/mavencentral/com.azure/azure-identity/1.10.1, MIT AND Apache-2.0, approved, #10086 maven/mavencentral/com.azure/azure-identity/1.10.4, MIT AND Apache-2.0, approved, #10086 maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 @@ -430,7 +430,7 @@ maven/mavencentral/org.ow2.asm/asm/9.2, BSD-3-Clause, approved, CQ23635 maven/mavencentral/org.ow2.asm/asm/9.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 maven/mavencentral/org.postgresql/postgresql/42.6.0, BSD-2-Clause AND Apache-2.0, approved, #9159 -maven/mavencentral/org.postgresql/postgresql/42.7.0, BSD-2-Clause AND LicenseRef-scancode-free-unknown AND Apache-2.0, restricted, #11681 +maven/mavencentral/org.postgresql/postgresql/42.7.0, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined maven/mavencentral/org.rnorth.duct-tape/duct-tape/1.0.8, MIT, approved, clearlydefined From 22a9bf5efa2130e2bbfb026c8bd6132b2ba7d890 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 09:16:33 +0100 Subject: [PATCH 03/83] chore(deps): bump actions/setup-python from 4 to 5 (#924) Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4 to 5. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/setup-python 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/helm-lint.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/helm-lint.yaml b/.github/workflows/helm-lint.yaml index 663cb1a7a..49a746321 100644 --- a/.github/workflows/helm-lint.yaml +++ b/.github/workflows/helm-lint.yaml @@ -52,7 +52,7 @@ jobs: with: version: v3.8.1 - name: python (setup) - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: 3.7 - name: chart-testing (setup) From dc0cb4ddd5474de76177dbd15d06610e482a5ee0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 09:37:37 +0100 Subject: [PATCH 04/83] chore(deps): bump helm/kind-action from 1.5.0 to 1.8.0 (#926) Bumps [helm/kind-action](https://github.com/helm/kind-action) from 1.5.0 to 1.8.0. - [Release notes](https://github.com/helm/kind-action/releases) - [Commits](https://github.com/helm/kind-action/compare/v1.5.0...v1.8.0) --- updated-dependencies: - dependency-name: helm/kind-action 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/upgradeability-test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/upgradeability-test.yaml b/.github/workflows/upgradeability-test.yaml index 1d820970e..27362a33a 100644 --- a/.github/workflows/upgradeability-test.yaml +++ b/.github/workflows/upgradeability-test.yaml @@ -55,7 +55,7 @@ jobs: version: 'v1.28.2' - name: Create k8s Kind Cluster - uses: helm/kind-action@v1.5.0 + uses: helm/kind-action@v1.8.0 - name: "Update helm repo" run: | From c734d09e34dccde62032c821eee2f1940ceb6ece Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Tue, 12 Dec 2023 09:02:24 +0100 Subject: [PATCH 05/83] feat: increase EDR token validity (#928) --- charts/tractusx-connector-azure-vault/README.md | 1 + .../templates/deployment-controlplane.yaml | 2 ++ charts/tractusx-connector-azure-vault/values.yaml | 3 ++- charts/tractusx-connector-memory/README.md | 1 + .../templates/deployment-runtime.yaml | 2 ++ charts/tractusx-connector-memory/values.yaml | 3 ++- charts/tractusx-connector/README.md | 1 + .../tractusx-connector/templates/deployment-controlplane.yaml | 3 +++ charts/tractusx-connector/values.yaml | 3 ++- 9 files changed, 16 insertions(+), 3 deletions(-) diff --git a/charts/tractusx-connector-azure-vault/README.md b/charts/tractusx-connector-azure-vault/README.md index 1dd5a53fb..edcfb178d 100644 --- a/charts/tractusx-connector-azure-vault/README.md +++ b/charts/tractusx-connector-azure-vault/README.md @@ -78,6 +78,7 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.debug.enabled | bool | `false` | | | controlplane.debug.port | int | `1044` | | | controlplane.debug.suspendOnStart | bool | `false` | | +| controlplane.edr.transferProxyTokenValidity | string | `"2592000"` | | | controlplane.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"metrics":{"path":"/metrics","port":9090},"protocol":{"path":"/api/v1/dsp","port":8084}}` | endpoints of the control plane | | controlplane.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | controlplane.endpoints.control.path | string | `"/control"` | path for incoming api calls | diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml index 651e502a3..7e15f844a 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml @@ -298,6 +298,8 @@ spec: - name: "EDC_TRANSFER_PROXY_TOKEN_VERIFIER_PUBLICKEY_ALIAS" value: {{ .Values.vault.secretNames.transferProxyTokenSignerPublicKey | quote }} {{- end }} + - name: "EDC_TRANSFER_PROXY_TOKEN_VALIDITY_SECONDS" + value: {{ .Values.controlplane.edr.transferProxyTokenValidity | required ".Values.controlplane.edr.transferProxyTokenValidity is required" | quote }} # see extension https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver diff --git a/charts/tractusx-connector-azure-vault/values.yaml b/charts/tractusx-connector-azure-vault/values.yaml index 1673727e6..fe531cef9 100644 --- a/charts/tractusx-connector-azure-vault/values.yaml +++ b/charts/tractusx-connector-azure-vault/values.yaml @@ -117,7 +117,8 @@ controlplane: businessPartnerValidation: log: agreementValidation: true - + edr: + transferProxyTokenValidity: "2592000" # SSI configuration ssi: miw: diff --git a/charts/tractusx-connector-memory/README.md b/charts/tractusx-connector-memory/README.md index a6be12542..145340cb8 100644 --- a/charts/tractusx-connector-memory/README.md +++ b/charts/tractusx-connector-memory/README.md @@ -69,6 +69,7 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.6.0-r | runtime.debug.enabled | bool | `false` | | | runtime.debug.port | int | `1044` | | | runtime.debug.suspendOnStart | bool | `false` | | +| runtime.edr.transferProxyTokenValidity | string | `"2592000"` | | | runtime.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"protocol":{"path":"/api/v1/dsp","port":8084},"proxy":{"path":"/proxy","port":8186},"public":{"path":"/api/public","port":8086},"validation":{"path":"/validation","port":8082}}` | endpoints of the control plane | | runtime.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | runtime.endpoints.control.path | string | `"/control"` | path for incoming api calls | diff --git a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml index abb51e2bd..1929ba285 100644 --- a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml @@ -244,6 +244,8 @@ spec: - name: "EDC_TRANSFER_PROXY_TOKEN_VERIFIER_PUBLICKEY_ALIAS" value: {{ .Values.vault.secretNames.transferProxyTokenSignerPublicKey | quote }} {{- end }} + - name: "EDC_TRANSFER_PROXY_TOKEN_VALIDITY_SECONDS" + value: {{ .Values.runtime.edr.transferProxyTokenValidity | required ".Values.runtime.edr.transferProxyTokenValidity is required" | quote }} # see extension https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/http-receiver - name: "EDC_RECEIVER_HTTP_ENDPOINT" diff --git a/charts/tractusx-connector-memory/values.yaml b/charts/tractusx-connector-memory/values.yaml index 14192a7ea..8c1d7c02b 100644 --- a/charts/tractusx-connector-memory/values.yaml +++ b/charts/tractusx-connector-memory/values.yaml @@ -118,7 +118,8 @@ runtime: businessPartnerValidation: log: agreementValidation: true - + edr: + transferProxyTokenValidity: "2592000" # SSI configuration ssi: miw: diff --git a/charts/tractusx-connector/README.md b/charts/tractusx-connector/README.md index aafcd1832..16eac5cf5 100644 --- a/charts/tractusx-connector/README.md +++ b/charts/tractusx-connector/README.md @@ -72,6 +72,7 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.6.0-rc2 \ | controlplane.debug.enabled | bool | `false` | | | controlplane.debug.port | int | `1044` | | | controlplane.debug.suspendOnStart | bool | `false` | | +| controlplane.edr.transferProxyTokenValidity | string | `"2592000"` | | | controlplane.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"metrics":{"path":"/metrics","port":9090},"protocol":{"path":"/api/v1/dsp","port":8084}}` | endpoints of the control plane | | controlplane.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | controlplane.endpoints.control.path | string | `"/control"` | path for incoming api calls | diff --git a/charts/tractusx-connector/templates/deployment-controlplane.yaml b/charts/tractusx-connector/templates/deployment-controlplane.yaml index 22c54ba53..99a559208 100644 --- a/charts/tractusx-connector/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector/templates/deployment-controlplane.yaml @@ -298,6 +298,9 @@ spec: - name: "EDC_TRANSFER_PROXY_TOKEN_VERIFIER_PUBLICKEY_ALIAS" value: {{ .Values.vault.secretNames.transferProxyTokenSignerPublicKey | quote }} {{- end }} + - name: "EDC_TRANSFER_PROXY_TOKEN_VALIDITY_SECONDS" + value: {{ .Values.controlplane.edr.transferProxyTokenValidity | required ".Values.controlplane.edr.transferProxyTokenValidity is required" | quote }} + # see extension https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/transfer/transfer-pull-http-dynamic-receiver - name: "EDC_RECEIVER_HTTP_DYNAMIC_ENDPOINT" diff --git a/charts/tractusx-connector/values.yaml b/charts/tractusx-connector/values.yaml index 76b50711c..31ce6872c 100644 --- a/charts/tractusx-connector/values.yaml +++ b/charts/tractusx-connector/values.yaml @@ -117,7 +117,8 @@ controlplane: businessPartnerValidation: log: agreementValidation: true - + edr: + transferProxyTokenValidity: "2592000" # SSI configuration ssi: miw: From 361db5991d66b2c124fb038574aa6f95cf589d32 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:06:28 +0100 Subject: [PATCH 06/83] chore(deps): bump org.postgresql:postgresql from 42.7.0 to 42.7.1 (#920) * chore(deps): bump org.postgresql:postgresql from 42.7.0 to 42.7.1 Bumps [org.postgresql:postgresql](https://github.com/pgjdbc/pgjdbc) from 42.7.0 to 42.7.1. - [Release notes](https://github.com/pgjdbc/pgjdbc/releases) - [Changelog](https://github.com/pgjdbc/pgjdbc/blob/master/CHANGELOG.md) - [Commits](https://github.com/pgjdbc/pgjdbc/compare/REL42.7.0...REL42.7.1) --- updated-dependencies: - dependency-name: org.postgresql:postgresql dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 3 ++- gradle/libs.versions.toml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 20d5d6b86..446ce30c5 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -218,6 +218,7 @@ maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.76, MIT, approved, #9828 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined +maven/mavencentral/org.checkerframework/checker-qual/3.41.0, , restricted, clearlydefined maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 maven/mavencentral/org.eclipse.edc/api-core/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/api-observability/0.4.1, Apache-2.0, approved, technology.edc @@ -430,7 +431,7 @@ maven/mavencentral/org.ow2.asm/asm/9.2, BSD-3-Clause, approved, CQ23635 maven/mavencentral/org.ow2.asm/asm/9.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 maven/mavencentral/org.postgresql/postgresql/42.6.0, BSD-2-Clause AND Apache-2.0, approved, #9159 -maven/mavencentral/org.postgresql/postgresql/42.7.0, BSD-2-Clause AND Apache-2.0, approved, #11681 +maven/mavencentral/org.postgresql/postgresql/42.7.1, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined maven/mavencentral/org.rnorth.duct-tape/duct-tape/1.0.8, MIT, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8eb7d927d..ca7db16c0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ format.version = "1.1" [versions] edc = "0.4.1" -postgres = "42.7.0" +postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.2" azure-identity = "1.10.4" From 992770f20bc9e178e02e169898e3e3be131d3abd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:33:31 +0100 Subject: [PATCH 07/83] chore(deps): bump org.bouncycastle:bcpkix-jdk18on from 1.76 to 1.77 (#918) * chore(deps): bump org.bouncycastle:bcpkix-jdk18on from 1.76 to 1.77 Bumps [org.bouncycastle:bcpkix-jdk18on](https://github.com/bcgit/bc-java) from 1.76 to 1.77. - [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html) - [Commits](https://github.com/bcgit/bc-java/commits) --- updated-dependencies: - dependency-name: org.bouncycastle:bcpkix-jdk18on dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 3 +++ gradle/libs.versions.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 446ce30c5..2676fa8fa 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -213,8 +213,11 @@ maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.76, MIT, approved, #9825 +maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.76, MIT AND CC0-1.0, approved, #9827 +maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.77, MIT AND CC0-1.0, approved, #11595 maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.76, MIT, approved, #9828 +maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.77, MIT, approved, #11596 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ca7db16c0..c87d54494 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,7 +10,7 @@ azure-identity = "1.10.4" slf4j = "2.0.9" okhttp = "4.12.0" mockwebserver = "5.0.0-alpha.11" -bouncyCastle-jdk18on = "1.76" +bouncyCastle-jdk18on = "1.77" mockito = "5.2.0" restAssured = "5.3.2" apache-sshd = "2.11.0" From 5c3862bdd7b2ef5077686ce2c8d16647ae2e6b06 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Dec 2023 14:52:40 +0100 Subject: [PATCH 08/83] chore(deps): bump com.azure:azure-identity from 1.10.4 to 1.11.1 (#922) * chore(deps): bump com.azure:azure-identity from 1.10.4 to 1.11.1 Bumps [com.azure:azure-identity](https://github.com/Azure/azure-sdk-for-java) from 1.10.4 to 1.11.1. - [Release notes](https://github.com/Azure/azure-sdk-for-java/releases) - [Commits](https://github.com/Azure/azure-sdk-for-java/compare/azure-identity_1.10.4...azure-identity_1.11.1) --- updated-dependencies: - dependency-name: com.azure:azure-identity dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 27 ++++++++++++++++++++++++++- gradle/libs.versions.toml | 2 +- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 2676fa8fa..167904b02 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -4,13 +4,15 @@ maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.1, Apache-2.0, approved, #8912 maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.2, Apache-2.0, approved, #8912 maven/mavencentral/com.azure/azure-core-http-netty/1.13.10, MIT AND Apache-2.0, approved, #7948 +maven/mavencentral/com.azure/azure-core-http-netty/1.13.11, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.7, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.9, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core/1.43.0, MIT AND Apache-2.0, approved, #10548 maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-core/1.45.0, MIT AND Apache-2.0, approved, #11845 +maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 maven/mavencentral/com.azure/azure-identity/1.10.1, MIT AND Apache-2.0, approved, #10086 -maven/mavencentral/com.azure/azure-identity/1.10.4, MIT AND Apache-2.0, approved, #10086 +maven/mavencentral/com.azure/azure-identity/1.11.1, , restricted, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.0, MIT, approved, #10868 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.2, MIT, approved, #10868 @@ -69,6 +71,7 @@ maven/mavencentral/com.google.j2objc/j2objc-annotations/1.3, Apache-2.0, approve maven/mavencentral/com.google.protobuf/protobuf-java/3.19.6, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j-persistence-extension/1.2.0, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.13.9, MIT, approved, clearlydefined +maven/mavencentral/com.microsoft.azure/msal4j/1.14.0, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.4.0, MIT, approved, clearlydefined maven/mavencentral/com.nimbusds/content-type/2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefined @@ -103,56 +106,78 @@ maven/mavencentral/io.micrometer/micrometer-commons/1.12.0, Apache-2.0 AND (Apac maven/mavencentral/io.micrometer/micrometer-core/1.12.0, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 maven/mavencentral/io.micrometer/micrometer-observation/1.12.0, Apache-2.0, approved, #11680 maven/mavencentral/io.netty/netty-buffer/4.1.100.Final, Apache-2.0, approved, CQ21842 +maven/mavencentral/io.netty/netty-buffer/4.1.101.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-buffer/4.1.94.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-codec-dns/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-dns/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-dns/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-http/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-http2/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-socks/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec-socks/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-socks/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-codec/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-common/4.1.100.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 +maven/mavencentral/io.netty/netty-common/4.1.101.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-common/4.1.94.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-handler-proxy/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-handler-proxy/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler-proxy/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-handler/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.100.Final, Apache-2.0, approved, #6367 +maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.101.Final, Apache-2.0, approved, #6367 maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.94.Final, Apache-2.0, approved, #6367 maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.100.Final, Apache-2.0, approved, #7004 +maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.101.Final, Apache-2.0, approved, #7004 maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.94.Final, Apache-2.0, approved, #7004 maven/mavencentral/io.netty/netty-resolver-dns/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-resolver-dns/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver-dns/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-resolver/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.61.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.62.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 maven/mavencentral/io.netty/netty-tcnative-classes/2.0.61.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/io.netty/netty-tcnative-classes/2.0.62.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.100.Final, Apache-2.0, approved, #6366 +maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.101.Final, Apache-2.0, approved, #6366 maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.94.Final, Apache-2.0, approved, #6366 maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.100.Final, Apache-2.0, approved, #4107 +maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.101.Final, Apache-2.0, approved, #4107 maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.94.Final, Apache-2.0, approved, #4107 maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 +maven/mavencentral/io.netty/netty-transport/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.opentelemetry.instrumentation/opentelemetry-instrumentation-annotations/1.31.0, Apache-2.0, approved, #11085 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.31.0, Apache-2.0, approved, #11087 maven/mavencentral/io.opentelemetry/opentelemetry-context/1.31.0, Apache-2.0, approved, #11088 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.34, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.38, Apache-2.0, approved, #9687 +maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.39, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.34, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.38, Apache-2.0, approved, #11661 +maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.39, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor/reactor-core/3.4.31, Apache-2.0, approved, #7517 maven/mavencentral/io.projectreactor/reactor-core/3.4.33, Apache-2.0, approved, #7517 +maven/mavencentral/io.projectreactor/reactor-core/3.4.34, Apache-2.0, approved, #7517 maven/mavencentral/io.rest-assured/json-path/5.3.2, Apache-2.0, approved, #9261 maven/mavencentral/io.rest-assured/rest-assured-common/5.3.2, Apache-2.0, approved, #9264 maven/mavencentral/io.rest-assured/rest-assured/5.3.2, Apache-2.0, approved, #9262 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c87d54494..61b2c381b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ edc = "0.4.1" postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.2" -azure-identity = "1.10.4" +azure-identity = "1.11.1" slf4j = "2.0.9" okhttp = "4.12.0" mockwebserver = "5.0.0-alpha.11" From 79dfafd37890fcdddd2cfcaaa71cdebff9a46831 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Dec 2023 15:09:05 +0100 Subject: [PATCH 09/83] chore(deps): bump com.azure:azure-security-keyvault-secrets from 4.7.2 to 4.7.3 (#919) * chore(deps): bump com.azure:azure-security-keyvault-secrets Bumps [com.azure:azure-security-keyvault-secrets](https://github.com/Azure/azure-sdk-for-java) from 4.7.2 to 4.7.3. - [Release notes](https://github.com/Azure/azure-sdk-for-java/releases) - [Commits](https://github.com/Azure/azure-sdk-for-java/compare/azure-security-keyvault-keys_4.7.2...azure-security-keyvault-keys_4.7.3) --- updated-dependencies: - dependency-name: com.azure:azure-security-keyvault-secrets dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 4 +--- edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 167904b02..665363136 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -3,19 +3,17 @@ maven/mavencentral/com.apicatalog/iron-verifiable-credentials/0.8.1, Apache-2.0, maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.1, Apache-2.0, approved, #8912 maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.2, Apache-2.0, approved, #8912 -maven/mavencentral/com.azure/azure-core-http-netty/1.13.10, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.11, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.7, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.9, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core/1.43.0, MIT AND Apache-2.0, approved, #10548 maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined -maven/mavencentral/com.azure/azure-core/1.45.0, MIT AND Apache-2.0, approved, #11845 maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 maven/mavencentral/com.azure/azure-identity/1.10.1, MIT AND Apache-2.0, approved, #10086 maven/mavencentral/com.azure/azure-identity/1.11.1, , restricted, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.0, MIT, approved, #10868 -maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.2, MIT, approved, #10868 +maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.3, MIT, approved, #10868 maven/mavencentral/com.azure/azure-storage-blob/12.24.1, MIT, approved, #10568 maven/mavencentral/com.azure/azure-storage-common/12.23.1, MIT, approved, #10569 maven/mavencentral/com.azure/azure-storage-internal-avro/12.9.1, MIT, approved, #10560 diff --git a/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts index 6423aa950..c8ddb6a19 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts @@ -32,7 +32,7 @@ dependencies { } } implementation(libs.edc.azure.identity) - implementation("com.azure:azure-security-keyvault-secrets:4.7.2") + implementation("com.azure:azure-security-keyvault-secrets:4.7.3") runtimeOnly(project(":edc-extensions:edr:edr-cache-sql")) runtimeOnly(libs.edc.transaction.local) runtimeOnly(libs.edc.sql.pool) From e7d7f13ba84bec0fe036333b8ef10606fedb2ece Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger Date: Wed, 13 Dec 2023 12:38:56 +0100 Subject: [PATCH 10/83] feat(helm): allow for additional volume mounts --- DEPENDENCIES | 2 +- charts/tractusx-connector-azure-vault/README.md | 11 +++++------ .../templates/deployment-controlplane.yaml | 6 ++++++ .../templates/deployment-dataplane.yaml | 6 ++++++ charts/tractusx-connector-azure-vault/values.yaml | 10 +++++----- charts/tractusx-connector/README.md | 8 ++++---- .../templates/deployment-controlplane.yaml | 6 ++++++ .../templates/deployment-dataplane.yaml | 6 ++++++ charts/tractusx-connector/values.yaml | 8 ++++---- 9 files changed, 43 insertions(+), 20 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 665363136..a5e36c1e2 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -10,7 +10,7 @@ maven/mavencentral/com.azure/azure-core/1.43.0, MIT AND Apache-2.0, approved, #1 maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 maven/mavencentral/com.azure/azure-identity/1.10.1, MIT AND Apache-2.0, approved, #10086 -maven/mavencentral/com.azure/azure-identity/1.11.1, , restricted, clearlydefined +maven/mavencentral/com.azure/azure-identity/1.11.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.0, MIT, approved, #10868 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.3, MIT, approved, #10868 diff --git a/charts/tractusx-connector-azure-vault/README.md b/charts/tractusx-connector-azure-vault/README.md index edcfb178d..5188b7fd6 100644 --- a/charts/tractusx-connector-azure-vault/README.md +++ b/charts/tractusx-connector-azure-vault/README.md @@ -167,8 +167,8 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | controlplane.ssi.oauth.tokenurl | string | `""` | The URL (of KeyCloak), where access tokens can be obtained | | controlplane.tolerations | list | `[]` | | | controlplane.url.protocol | string | `""` | Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) | -| controlplane.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | -| controlplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | +| controlplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | +| controlplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | customCaCerts | object | `{}` | Add custom ca certificates to the truststore | | customLabels | object | `{}` | To add some custom labels | | dataplane.affinity | object | `{}` | | @@ -250,8 +250,8 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | dataplane.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | | dataplane.tolerations | list | `[]` | | | dataplane.url.public | string | `""` | Explicitly declared url for reaching the public api (e.g. if ingresses not used) | -| dataplane.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | -| dataplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | +| dataplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | +| dataplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | fullnameOverride | string | `""` | | | imagePullSecrets | list | `[]` | Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | | install.postgresql | bool | `true` | | @@ -260,9 +260,8 @@ helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0. | postgresql.auth.database | string | `"edc"` | | | postgresql.auth.password | string | `"password"` | | | postgresql.auth.username | string | `"user"` | | -| postgresql.enabled | bool | `false` | | | postgresql.jdbcUrl | string | `"jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/edc"` | | -| postgresql.primary.persistence | string | `nil` | | +| postgresql.primary.persistence.enabled | bool | `false` | | | postgresql.readReplicas.persistence.enabled | bool | `false` | | | serviceAccount.annotations | object | `{}` | | | serviceAccount.create | bool | `true` | | diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml index 7e15f844a..48c58f65a 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml @@ -377,6 +377,9 @@ spec: {{- end }} {{- end }} volumeMounts: + {{- if .Values.controlplane.volumeMounts }} + {{- toYaml .Values.controlplane.volumeMounts | nindent 12 }} + {{- end}} - name: "configuration" mountPath: "/app/opentelemetry.properties" subPath: "opentelemetry.properties" @@ -391,6 +394,9 @@ spec: - name: "tmp" mountPath: "/tmp" volumes: + {{- if .Values.controlplane.volumeMounts }} + {{- toYaml .Values.controlplane.volumes | nindent 8 }} + {{- end}} - name: "configuration" configMap: name: {{ include "txdc.fullname" . }}-controlplane diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml index 3d1243817..604b7e8a3 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml @@ -242,6 +242,9 @@ spec: {{- end }} {{- end }} volumeMounts: + {{- if .Values.dataplane.volumeMounts }} + {{- toYaml .Values.dataplane.volumeMounts | nindent 12 }} + {{- end}} - name: "configuration" mountPath: "/app/opentelemetry.properties" subPath: "opentelemetry.properties" @@ -256,6 +259,9 @@ spec: - name: "tmp" mountPath: "/tmp" volumes: + {{- if .Values.dataplane.volumes }} + {{- toYaml .Values.dataplane.volumes | nindent 8 }} + {{- end}} - name: "configuration" configMap: name: {{ include "txdc.fullname" . }}-dataplane diff --git a/charts/tractusx-connector-azure-vault/values.yaml b/charts/tractusx-connector-azure-vault/values.yaml index fe531cef9..81e9784b8 100644 --- a/charts/tractusx-connector-azure-vault/values.yaml +++ b/charts/tractusx-connector-azure-vault/values.yaml @@ -245,9 +245,9 @@ controlplane: # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container - volumeMounts: [] + volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories - volumes: [] + volumes: # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -445,9 +445,9 @@ dataplane: # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container - volumeMounts: [] + volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories - volumes: [] + volumes: # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -499,7 +499,7 @@ postgresql: jdbcUrl: "jdbc:postgresql://{{ .Release.Name }}-postgresql:5432/edc" primary: persistence: - enabled: false + enabled: false readReplicas: persistence: enabled: false diff --git a/charts/tractusx-connector/README.md b/charts/tractusx-connector/README.md index 16eac5cf5..ec42b585d 100644 --- a/charts/tractusx-connector/README.md +++ b/charts/tractusx-connector/README.md @@ -161,8 +161,8 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.6.0-rc2 \ | controlplane.ssi.oauth.tokenurl | string | `""` | The URL (of KeyCloak), where access tokens can be obtained | | controlplane.tolerations | list | `[]` | | | controlplane.url.protocol | string | `""` | Explicitly declared url for reaching the dsp api (e.g. if ingresses not used) | -| controlplane.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | -| controlplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | +| controlplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | +| controlplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | customCaCerts | object | `{}` | Add custom ca certificates to the truststore | | customLabels | object | `{}` | To add some custom labels | | dataplane.affinity | object | `{}` | | @@ -244,8 +244,8 @@ helm install my-release tractusx-edc/tractusx-connector --version 0.6.0-rc2 \ | dataplane.service.type | string | `"ClusterIP"` | [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. | | dataplane.tolerations | list | `[]` | | | dataplane.url.public | string | `""` | Explicitly declared url for reaching the public api (e.g. if ingresses not used) | -| dataplane.volumeMounts | list | `[]` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | -| dataplane.volumes | list | `[]` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | +| dataplane.volumeMounts | string | `nil` | declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container | +| dataplane.volumes | string | `nil` | [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories | | fullnameOverride | string | `""` | | | imagePullSecrets | list | `[]` | Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) | | install.postgresql | bool | `true` | | diff --git a/charts/tractusx-connector/templates/deployment-controlplane.yaml b/charts/tractusx-connector/templates/deployment-controlplane.yaml index 99a559208..d94abb9a4 100644 --- a/charts/tractusx-connector/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector/templates/deployment-controlplane.yaml @@ -376,6 +376,9 @@ spec: {{- end }} {{- end }} volumeMounts: + {{- if .Values.controlplane.volumeMounts }} + {{- toYaml .Values.controlplane.volumeMounts | nindent 12 }} + {{- end}} - name: "configuration" mountPath: "/app/opentelemetry.properties" subPath: "opentelemetry.properties" @@ -390,6 +393,9 @@ spec: - name: "tmp" mountPath: "/tmp" volumes: + {{- if .Values.controlplane.volumeMounts }} + {{- toYaml .Values.controlplane.volumes | nindent 8 }} + {{- end}} - name: "configuration" configMap: name: {{ include "txdc.fullname" . }}-controlplane diff --git a/charts/tractusx-connector/templates/deployment-dataplane.yaml b/charts/tractusx-connector/templates/deployment-dataplane.yaml index 0501562ea..2abd8ced4 100644 --- a/charts/tractusx-connector/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector/templates/deployment-dataplane.yaml @@ -241,6 +241,9 @@ spec: {{- end }} {{- end }} volumeMounts: + {{- if .Values.dataplane.volumeMounts }} + {{- toYaml .Values.dataplane.volumeMounts | nindent 12 }} + {{- end}} - name: "configuration" mountPath: "/app/opentelemetry.properties" subPath: "opentelemetry.properties" @@ -255,6 +258,9 @@ spec: - name: "tmp" mountPath: "/tmp" volumes: + {{- if .Values.dataplane.volumeMounts }} + {{- toYaml .Values.dataplane.volumes | nindent 8 }} + {{- end}} - name: "configuration" configMap: name: {{ include "txdc.fullname" . }}-dataplane diff --git a/charts/tractusx-connector/values.yaml b/charts/tractusx-connector/values.yaml index 31ce6872c..82acff63c 100644 --- a/charts/tractusx-connector/values.yaml +++ b/charts/tractusx-connector/values.yaml @@ -245,9 +245,9 @@ controlplane: # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container - volumeMounts: [] + volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories - volumes: [] + volumes: # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -443,9 +443,9 @@ dataplane: # -- If preset enables certificate generation via cert-manager cluster-wide issuer clusterIssuer: "" # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container - volumeMounts: [] + volumeMounts: # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories - volumes: [] + volumes: # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container resources: {} # We usually recommend not to specify default resources and to leave this as a conscious From 124160c9b7cf4c0fa09915b5fd4d5cd847a220fd Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Thu, 14 Dec 2023 09:34:42 +0100 Subject: [PATCH 11/83] refactor: cleanup DAPS references --- DEPENDENCIES | 4 +- docs/README.md | 62 ++- docs/development/README.md | 10 + .../data-plane-http-oauth2.md | 0 .../edr-api-overview.md | 6 +- docs/development/run-config.png | Bin 59867 -> 0 bytes docs/kit/Adoption View/00_adoption-view.md | 4 +- .../00_local_setup_controlplane.md | 6 - docs/samples/README.md | 15 - docs/samples/Transfer Data.md | 373 ------------------ docs/samples/diagrams/transfer_sequence_1.png | Bin 28233 -> 0 bytes .../samples/diagrams/transfer_sequence_1.puml | 34 -- docs/samples/diagrams/transfer_sequence_2.png | Bin 27684 -> 0 bytes .../samples/diagrams/transfer_sequence_2.puml | 28 -- docs/samples/diagrams/transfer_sequence_3.png | Bin 32718 -> 0 bytes .../samples/diagrams/transfer_sequence_3.puml | 33 -- docs/samples/diagrams/transfer_sequence_4.png | Bin 56765 -> 0 bytes .../samples/diagrams/transfer_sequence_4.puml | 44 --- docs/samples/diagrams/transfer_sequence_5.png | Bin 21142 -> 0 bytes .../samples/diagrams/transfer_sequence_5.puml | 27 -- docs/samples/example-dataspace/README.md | 136 ------- .../example-dataspace/plato-values.yaml | 77 ---- .../example-dataspace/sokrates-values.yaml | 76 ---- .../README.md | 10 - .../README.md | 10 - edc-controlplane/edc-runtime-memory/README.md | 10 - .../edc-dataplane-azure-vault/README.md | 1 - .../edc-dataplane-hashicorp-vault/README.md | 1 - edc-extensions/build.gradle.kts | 1 - edc-extensions/cx-oauth2/README.md | 47 --- edc-extensions/cx-oauth2/build.gradle.kts | 35 -- .../cx-oauth2/diagrams/sequence.png | Bin 37872 -> 0 bytes .../cx-oauth2/diagrams/sequence.puml | 24 -- .../edc/oauth2/CxOauth2Extension.java | 39 -- .../edc/oauth2/CxParticipantExtension.java | 75 ---- ...rg.eclipse.edc.spi.system.ServiceExtension | 22 -- .../oauth2/CxParticipantExtensionTest.java | 90 ----- .../tractusx-connector-azure-vault-test.yaml | 15 - .../helm/tractusx-connector-memory-test.yaml | 12 - .../edc/lifecycle/ParticipantRuntime.java | 4 +- .../edc/lifecycle/PgParticipantRuntime.java | 3 - ...rvice.java => MockBpnIdentityService.java} | 15 +- .../runtime-memory-ssi/build.gradle.kts | 3 - .../runtime/runtime-memory/build.gradle.kts | 6 - .../build.gradle.kts | 2 - .../runtime-postgresql/build.gradle.kts | 2 - gradle/libs.versions.toml | 2 - samples/multi-tenancy/build.gradle.kts | 2 +- settings.gradle.kts | 1 - 49 files changed, 53 insertions(+), 1314 deletions(-) create mode 100644 docs/development/README.md rename docs/{samples => development}/data-plane-http-oauth2.md (100%) rename docs/{samples/edr-api-overview => development}/edr-api-overview.md (97%) delete mode 100644 docs/development/run-config.png delete mode 100644 docs/samples/README.md delete mode 100644 docs/samples/Transfer Data.md delete mode 100644 docs/samples/diagrams/transfer_sequence_1.png delete mode 100644 docs/samples/diagrams/transfer_sequence_1.puml delete mode 100644 docs/samples/diagrams/transfer_sequence_2.png delete mode 100644 docs/samples/diagrams/transfer_sequence_2.puml delete mode 100644 docs/samples/diagrams/transfer_sequence_3.png delete mode 100644 docs/samples/diagrams/transfer_sequence_3.puml delete mode 100644 docs/samples/diagrams/transfer_sequence_4.png delete mode 100644 docs/samples/diagrams/transfer_sequence_4.puml delete mode 100644 docs/samples/diagrams/transfer_sequence_5.png delete mode 100644 docs/samples/diagrams/transfer_sequence_5.puml delete mode 100644 docs/samples/example-dataspace/README.md delete mode 100644 docs/samples/example-dataspace/plato-values.yaml delete mode 100644 docs/samples/example-dataspace/sokrates-values.yaml delete mode 100644 edc-extensions/cx-oauth2/README.md delete mode 100644 edc-extensions/cx-oauth2/build.gradle.kts delete mode 100644 edc-extensions/cx-oauth2/diagrams/sequence.png delete mode 100644 edc-extensions/cx-oauth2/diagrams/sequence.puml delete mode 100644 edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxOauth2Extension.java delete mode 100644 edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtension.java delete mode 100644 edc-extensions/cx-oauth2/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension delete mode 100644 edc-extensions/cx-oauth2/src/test/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtensionTest.java rename edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/{MockDapsService.java => MockBpnIdentityService.java} (71%) diff --git a/DEPENDENCIES b/DEPENDENCIES index 665363136..f76cf020a 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -10,7 +10,7 @@ maven/mavencentral/com.azure/azure-core/1.43.0, MIT AND Apache-2.0, approved, #1 maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 maven/mavencentral/com.azure/azure-identity/1.10.1, MIT AND Apache-2.0, approved, #10086 -maven/mavencentral/com.azure/azure-identity/1.11.1, , restricted, clearlydefined +maven/mavencentral/com.azure/azure-identity/1.11.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.0, MIT, approved, #10868 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.3, MIT, approved, #10868 @@ -244,7 +244,7 @@ maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.77, MIT, approved, #11596 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined -maven/mavencentral/org.checkerframework/checker-qual/3.41.0, , restricted, clearlydefined +maven/mavencentral/org.checkerframework/checker-qual/3.41.0, MIT, approved, #12032 maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 maven/mavencentral/org.eclipse.edc/api-core/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/api-observability/0.4.1, Apache-2.0, approved, technology.edc diff --git a/docs/README.md b/docs/README.md index 1ac9bcd7d..560e39e5f 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,10 +1,10 @@ # Tractus-X EDC -The Tractus-X EDC repository creates runnable applications out of EDC extensions from -the [Eclipse DataSpace Connector](https://github.com/eclipse-edc/Connector) repository. +The Tractus-X EDC repository creates runnable applications out of EDC extensions from the +[EDC Connector](https://github.com/eclipse-edc/Connector) platform. -When running a EDC connector from the Tractus-X EDC repository there are three setups to choose from. They only vary by -using different extensions for +When running an EDC connector from the Tractus-X EDC repository there are three different setups to choose from. They +only vary by using different extensions for - Resolving of Connector-Identities - Persistence of the Control-Plane-State @@ -15,43 +15,33 @@ using different extensions for The three supported setups are. - Setup 1: Pure in Memory **Not intended for production use!** - - [Control Plane](../edc-controlplane/edc-runtime-memory/README.md) - - [IDS DAPS Extensions](https://github.com/eclipse-edc/Connector/tree/main/extensions/common/iam/oauth2/daps) - - In Memory Persistence done by using no extension - - In Memory Keyvault with seedable secrets. - - [Data Plane](../edc-dataplane/edc-dataplane-azure-vault/README.md) - - [Azure Key Vault Extension](https://github.com/eclipse-edc/Connector/tree/main/extensions/common/vault/azure-vault) -- Setup 2: PostgreSQL & Azure Vault - - [Control Plane](../edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md) - - [IDS DAPS Extensions](https://github.com/eclipse-edc/Connector/tree/main/extensions/common/iam/oauth2/daps) - - [PostgreSQL Persistence Extensions](https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/store/sql) - - [Azure Key Vault Extension](https://github.com/eclipse-edc/Connector/tree/main/extensions/common/vault/azure-vault) - - [Data Plane](../edc-dataplane/edc-dataplane-azure-vault/README.md) - - [Azure Key Vault Extension](https://github.com/eclipse-edc/Connector/tree/main/extensions/common/vault/azure-vault) -- Setup 3: PostgreSQL & HashiCorp Vault - - [Control Plane](../edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md) - - [IDS DAPS Extensions](https://github.com/eclipse-edc/Connector/tree/main/extensions/common/iam/oauth2/daps) - - [PostgreSQL Persistence Extensions](https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/store/sql) - - [HashiCorp Vault Extension](../edc-extensions/hashicorp-vault/README.md) - - [Data Plane](../edc-dataplane/edc-dataplane-hashicorp-vault/README.md) - - [HashiCorp Vault Extension](../edc-extensions/hashicorp-vault/README.md) + - In Memory persistence + - In Memory KeyVault with seedable secrets. + - Planes: + - [Control Plane](../edc-controlplane/edc-runtime-memory/README.md) + - [Data Plane](../edc-dataplane/edc-dataplane-base/README.md) +- Setup 2: PostgreSQL & HashiCorp Vault + - PostgreSQL persistence + - HashiCorp Vault + - Planes: + - [Control Plane](../edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md) + - [Data Plane](../edc-dataplane/edc-dataplane-hashicorp-vault/README.md) +- Setup 3: PostgreSQL & Azure Vault + - PostgreSQL persistence + - Azure Key Vault + - Planes: + - [Control Plane](../edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md) + - [Data Plane](../edc-dataplane/edc-dataplane-azure-vault/README.md) ## Recommended Documentation -### This Repository - -- [Update EDC Version from 0.0.x - 0.1.x](migration/Version_0.0.x_0.1.x.md) +- [MXD: Minimum viable tractusX Dataspace](https://github.com/eclipse-tractusx/tutorial-resources/tree/main/mxd) +- [Migration guides](migration) +- [Development](development/README.md) - [Application: Control Plane](../edc-controlplane) - [Application: Data Plane](../edc-dataplane) -- [Extension: Business Partner Numbers](../edc-extensions/business-partner-validation/README.md) -- [Example: Local TXDC Setup](samples/Local%20TXDC%20Setup.md) -- [Example: Data Transfer](samples/Transfer%20Data.md) - -### Eclipse Dataspace Connector - -- [EDC Domain Model](https://github.com/eclipse-edc/Connector/blob/main/docs/developer/architecture/domain-model.md) -- [EDC Open API Spec](https://github.com/eclipse-edc/Connector/blob/main/resources/openapi/openapi.yaml) -- [HTTP Receiver Extension](https://github.com/eclipse-edc/Connector/tree/main/extensions/control-plane/http-receiver) +- [Extension: Business Partner Numbers validation](../edc-extensions/bpn-validation/README.md) +- [Eclipse Dataspace Components](https://eclipse-edc.github.io/docs/#/) ## NOTICE diff --git a/docs/development/README.md b/docs/development/README.md new file mode 100644 index 000000000..7887c3f44 --- /dev/null +++ b/docs/development/README.md @@ -0,0 +1,10 @@ +# Development Documentation + +- [Coding principles](coding-principles.md) +- [Decision Records](decision-records) +- [Release](Release.md) + +## Deep Dives +- [Data Plane Http OAuth2](data-plane-http-oauth2.md) +- [EDR Api Overview](edr-api-overview.md) + diff --git a/docs/samples/data-plane-http-oauth2.md b/docs/development/data-plane-http-oauth2.md similarity index 100% rename from docs/samples/data-plane-http-oauth2.md rename to docs/development/data-plane-http-oauth2.md diff --git a/docs/samples/edr-api-overview/edr-api-overview.md b/docs/development/edr-api-overview.md similarity index 97% rename from docs/samples/edr-api-overview/edr-api-overview.md rename to docs/development/edr-api-overview.md index b69e604c4..e86290517 100644 --- a/docs/samples/edr-api-overview/edr-api-overview.md +++ b/docs/development/edr-api-overview.md @@ -112,7 +112,7 @@ associated to it in the configured datasource for future querying. Since `tractusx-edc` [v0.5.1](https://github.com/eclipse-tractusx/tractusx-edc/releases/tag/0.5.1) the cached EDRs also come with a state machine that will manage the lifecycle of an EDR on the consumer side. That means that it will auto-renew it is nearing its expiration date by firing another transfer process request with the same parameters as the original one. Once renewed, the old EDR -will transition to the `EXPIRED` state, and it will be removed from the database and the vault according to the [configuration](../../../core/edr-core/README.md). +will transition to the `EXPIRED` state, and it will be removed from the database and the vault according to the [configuration](../../core/edr-core/README.md). ### EDR Management | Fetch cached EDRs @@ -219,7 +219,7 @@ curl --request GET \ #### Consumer data-plane (proxy) The Consumer data-plane proxy is an extension available in `tractusx-edc` that will use the EDR store to simplify -the data request on consumer side. The documentation is available [here](../../../edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/README.md). +the data request on consumer side. The documentation is available [here](../../edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/README.md). The only API is: @@ -228,7 +228,7 @@ The only API is: | `/aas/request` | POST | [OpenApi](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1#/Data%20Plane%20Proxy%20API/requestAsset) | which fetches the data according to the input body. The body should contain the `assetId` plus `providerId` or the `transferProcessId`, -which identifies the EDR to use for fetching data and an `endpointUrl` which is the [provider gateway](../../../edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/README.md) +which identifies the EDR to use for fetching data and an `endpointUrl` which is the [provider gateway](../../edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/README.md) on which the data is available. Example: diff --git a/docs/development/run-config.png b/docs/development/run-config.png deleted file mode 100644 index 4be2d85ad69f9646e1c3b67f06e2a74f2b492a6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59867 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 z 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 diff --git a/docs/kit/Adoption View/00_adoption-view.md b/docs/kit/Adoption View/00_adoption-view.md index 4ccb3494a..4e850b530 100644 --- a/docs/kit/Adoption View/00_adoption-view.md +++ b/docs/kit/Adoption View/00_adoption-view.md @@ -31,7 +31,7 @@ The main difference between the EDC and the previous connectors of the [IDSA][id The architecture of the EDC combines various services that are necessary for the above principles: -- An interface to the Identity Provider service, currently [IDSA][idsa-url]'s [Dynamic Attribute Provisioning System][daps-url]. This central service provides the identity and the corresponding authentication of the participants in the data exchange. (There is no authorization at this point). Decentralized solutions will also be supported in the future. +- An interface to the Identity Provider service, currently [IDSA][idsa-url]'s [Identity And Trust Protocol][iatp-url]. This central service provides the identity and the corresponding authentication of the participants in the data exchange. (There is no authorization at this point). Decentralized solutions will also be supported in the future. - The provision of possible offers (contract offering) which, on the one hand, stipulates the data offered and the associated terms of use (policies) in corresponding contracts. - An interface for manual selection of data and associated contract offers. - The actual data transfer via the data plane extension @@ -40,7 +40,7 @@ The architecture of the EDC combines various services that are necessary for the [edc-url]: https://github.com/eclipse-edc/Connector [gaiax-url]: https://www.data-infrastructure.eu/GAIAX/Navigation/EN/Home/home.html [idsa-url]: https://internationaldataspaces.org/ -[daps-url]: https://www.dataspaces.fraunhofer.de/en/software/identity_provider.html +[iatp-url]: https://github.com/eclipse-tractusx/ssi-docu ## NOTICE diff --git a/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md b/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md index d40432384..1ee5059a8 100644 --- a/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md +++ b/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md @@ -62,12 +62,6 @@ edc.hostname=localhost edc.api.auth.key=password -# OAuth / DAPS related configuration -edc.oauth.token.url=https://daps.example.net -edc.oauth.certificate.alias=key-to-daps-certificate-in-keyvault -edc.oauth.private.key.alias=key-to-private-key-in-keyvault -edc.oauth.client.id=daps-oauth-client-id - # HashiCorp vault related configuration edc.vault.hashicorp.url=http://vault edc.vault.hashicorp.token=55555555-6666-7777-8888-999999999999 diff --git a/docs/samples/README.md b/docs/samples/README.md deleted file mode 100644 index 4621e8a90..000000000 --- a/docs/samples/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# Samples - -In this folder are listed some documents that will help you setting up a connector execute some use cases. - -- [Local setup](./example-dataspace/README.md) -- [Transfer data](./Transfer%20Data.md) -- [Data Plane HTTP OAuth2](./data-plane-http-oauth2.md) - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/samples/Transfer Data.md b/docs/samples/Transfer Data.md deleted file mode 100644 index a9444557a..000000000 --- a/docs/samples/Transfer Data.md +++ /dev/null @@ -1,373 +0,0 @@ -# Transfer Data - -This document will showcase a data transfer between two connectors. - -For this transfer connector **Bob** will act as data provider, and connector **Alice** will act as data -consumer. But the roles could be inverse as well. - -> Please note: Before running the examples the corresponding environment variables must be set. -> How such an environment can be setup locally is documented in [chapter 1](#1-optional---local-setup). - -## Table of Content - -1. [Optional - Local Setup](#1-optional---local-setup) -2. [Setup Data Offer](#2-setup-data-offer) -3. [Request Contract Offers](#3-request-contract-offer-catalog) -4. [Negotiate Contract](#4-negotiate-contract) -5. [Transfer Data](#5-transfer-data) -6. [Verify Data Transfer](#6-verify-data-transfer) - -## 1. Optional - Local Setup - -To create a local setup with two connectors have a look at -the [Local TXDC Setup Documentation](Local%20TXDC%20Setup.md). -It creates two connectors (Plato & Sokrates) with exposed Node Ports. - -### See Node Ports using Minikube - -Run the following command. - -```shell -minkube service list -``` - -Minikube will then print out something like this: - -```plain -|-------------|-----------------------|-----------------|---------------------------| -| NAMESPACE | NAME | TARGET PORT | URL | -|-------------|-----------------------|-----------------|---------------------------| -| cx | backend | frontend/8080 | http://192.168.49.2:31918 | -| | | backend/8081 | http://192.168.49.2:30193 | < Transfer Backend API -| cx | ids-daps | No node port | -| cx | plato-controlplane | default/8080 | http://192.168.49.2:31016 | -| | | control/8083 | http://192.168.49.2:32510 | -| | | data/8081 | http://192.168.49.2:30423 | < Plato Data Management API -| | | validation/8082 | http://192.168.49.2:30997 | -| | | ids/8084 | http://192.168.49.2:32709 | < Plato IDS API -| | | metrics/8085 | http://192.168.49.2:31124 | -| cx | plato-dataplane | No node port | -| cx | sokrates-controlplane | default/8080 | http://192.168.49.2:32297 | -| | | control/8083 | http://192.168.49.2:32671 | -| | | data/8081 | http://192.168.49.2:31772 | < Sokrates Data Management API -| | | validation/8082 | http://192.168.49.2:30540 | -| | | ids/8084 | http://192.168.49.2:32543 | < Sokrates IDS API -| | | metrics/8085 | http://192.168.49.2:30247 | -| cx | sokrates-dataplane | No node port | -| cx | vault | No node port | -| cx | vault-internal | No node port | -| cx | vault-ui | No node port | -| default | kubernetes | No node port | -| kube-system | kube-dns | No node port | -|-------------|-----------------------|-----------------|---------------------------| -``` - -The most important APIs, used by this example, are highlighted. How they are used is described in subchapter ['Set -Environment Variables](#set-environment-variables-used-by-this-example), used by this example below. - -### See Node Ports using Kubernetes - -Using Kubernetes only the Node Ports of each Service must be checked separately. - -Run - -```shell -kubectl describe service -n cx plato-controlplane -``` - -or - -```shell -kubectl describe service -n cx sokrates-controlplane -``` - -Kubernetes will then print out something like this. - -```plain -Name: plato-controlplane -Namespace: cx -Labels: app.kubernetes.io/component=edc-controlplane - app.kubernetes.io/instance=plato-controlplane - app.kubernetes.io/managed-by=Helm - app.kubernetes.io/name=tractusx-connector-controlplane - app.kubernetes.io/part-of=edc - app.kubernetes.io/version=0.2.0 - helm.sh/chart=tractusx-connector-0.2.0 -Annotations: meta.helm.sh/release-name: plato - meta.helm.sh/release-namespace: cx -Selector: app.kubernetes.io/instance=plato-controlplane,app.kubernetes.io/name=tractusx-connector-controlplane -Type: NodePort -IP Family Policy: SingleStack -IP Families: IPv4 -IP: 10.110.180.57 -IPs: 10.110.180.57 -Port: default 8080/TCP -TargetPort: default/TCP -NodePort: default 31016/TCP -Endpoints: 172.17.0.6:8080 -Port: control 8083/TCP -TargetPort: control/TCP -NodePort: control 32510/TCP -Endpoints: 172.17.0.6:8083 -Port: data 8081/TCP -TargetPort: data/TCP -NodePort: data 30423/TCP < Plato Data Manamgent API -Endpoints: 172.17.0.6:8081 -Port: validation 8082/TCP -TargetPort: validation/TCP -NodePort: validation 30997/TCP -Endpoints: 172.17.0.6:8082 -Port: ids 8084/TCP -TargetPort: ids/TCP -NodePort: ids 32709/TCP < Plato IDS API -Endpoints: 172.17.0.6:8084 -Port: metrics 8085/TCP -TargetPort: metrics/TCP -NodePort: metrics 31124/TCP -Endpoints: 172.17.0.6:8085 -Session Affinity: None -External Traffic Policy: Cluster -Events: -``` - -The most important APIs, used by this example, are highlighted. How they are used is described in subchapter ['Set -Environment Variables](#set-environment-variables-used-by-this-example), used by this example below. -In comparison to the Minikube example this call shows only the ports. To call the ports the Kubernetes Node IP / URL is -required. Where to get the IP may vary depending on how Kubernetes is deployed. - -### Set Environment Variables, used by this example - -Environment Variables, containing a URL, used by this example are - -- BOB_DATAMGMT_URL -- ALICE_DATAMGMT_URL -- BOB_IDS_URL -- ALICE_BACKEND_URL - -Let's assume we will use Sokrates as Bob, and Plato as Alice. - -**BOB_DATAMGMT_URL** must be the Node URL. In this local setup it would be `http://192.168.49.2:31772` - -**ALICE_DATAMGMT_URL** must be the Node URL. In this local setup it would be `http://192.168.49.2:30423` - -**BOB_IDS_URL** must be internal Kubernetes URL. In this local setup `http://sokrates-controlplane:8084` - -**ALICE_BACKEND_URL** must the Node URL. In this local setup it would be `http://192.168.49.2:30193` - -## 2. Setup Data Offer - -Set up a data offer in **Bob**, so that **Alice** has something to consume. - -In case you are unfamiliar with the EDC terms `Asset`, `Policy` or `ContractDefinition` please have a look at the -official open source documentation ([link](https://github.com/eclipse-edc/Connector/blob/main/docs/developer/architecture/domain-model.md)). - -![Sequence 1](diagrams/transfer_sequence_1.png) - -The following commands will create an Asset, a Policy and a Contract Definition. -For simplicity `https://jsonplaceholder.typicode.com/todos/1` is used as data source of the asset, but could be any -other API, that is reachable from the Provider Data Plane. - -```bash -curl -X POST "${BOB_DATAMGMT_URL}/data/assets" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - --data '{ - "asset": { - "properties": { - "asset:prop:id": "1", - "asset:prop:description": "Tractus-X EDC Demo Asset" - } - }, - "dataAddress": { - "properties": { - "type": "HttpData", - "baseUrl": "https://jsonplaceholder.typicode.com/todos/1" - } - } - }' \ - -s -o /dev/null -w 'Response Code: %{http_code}\n' -``` - -```bash -curl -X POST "${BOB_DATAMGMT_URL}/data/policydefinitions" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - --data '{ - "id": "1", - "policy": { - "prohibitions": [], - "obligations": [], - "permissions": [ - { - "edctype": "dataspaceconnector:permission", - "action": { "type": "USE" }, - "constraints": [] - } - ] - } - }' \ - -s -o /dev/null -w 'Response Code: %{http_code}\n' -``` - -```bash -curl -X POST "${BOB_DATAMGMT_URL}/data/contractdefinitions" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - --data '{ - "id": "1", - "criteria": [ - { - "operandLeft": "asset:prop:id", - "operator": "=", - "operandRight": "1" - } - ], - "accessPolicyId": "1", - "contractPolicyId": "1" - }' \ - -s -o /dev/null -w 'Response Code: %{http_code}\n' -``` - -## 3. Request Contract Offer Catalog - -In this step Alice gets told to request contract offers from another connector (in this case Bob). Alice will -then request the catalog over IDS messaging. - -For IDS messaging connectors will identify each other using the configured IDS DAPS. Therefore, it is important that -connectors, that intent to send messages to each other, have the same DAPS instance configured. - -![Sequence 1](diagrams/transfer_sequence_2.png) - -Run: - -```bash -curl -G -X GET "${ALICE_DATAMGMT_URL}/data/catalog" \ - --data-urlencode "providerUrl=${BOB_IDS_URL}/api/v1/ids/data" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - -s | jq -``` - -## 4. Negotiate Contract - -Initiate a contract negotiation for the asset (from step 1). Part of the negotiation payload is the contract -offer (received in step 2). - -In the diagram the IDS contract negotiation is marked as simplified, because the EDC is exchanging multiple messages -during contract negotiation. But the inter-controlplane communication is not in the scope of this document. - -After the negotiation is initiated ensure that is has concluded. This is done by requesting the negotiation from the API -and checking whether the `contractAgreementId` is set. This might take a few seconds. - -![Sequence 1](diagrams/transfer_sequence_3.png) - -Run: - -```bash -export NEGOTIATION_ID=$( \ - curl -X POST "${ALICE_DATAMGMT_URL}/data/contractnegotiations" \ - --header "X-Api-Key: password" \ - --header "Content-Type: application/json" \ - --data "{ - \"connectorId\": \"foo\", - \"connectorAddress\": \"${BOB_IDS_URL}/api/v1/ids/data\", - \"offer\": { - \"offerId\": \"1:foo\", - \"assetId\": \"1\", - \"policy\": { - \"uid\": \"1\", - \"prohibitions\": [], - \"obligations\": [], - \"permissions\": [ - { - \"edctype\": \"dataspaceconnector:permission\", - \"action\": { \"type\": \"USE\" }, - \"target\": \"1\", - \"constraints\": [] - } - ] - } - } - }" \ - -s | jq -r '.id') -``` - -```bash -curl -X GET "${ALICE_DATAMGMT_URL}/data/contractnegotiations/${NEGOTIATION_ID}" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - -s | jq -``` - -## 5. Transfer Data - -Initiate a data transfer using the contract agreement from the negotiation (from step 3). Then wait until the state of -the transfer process is `COMPLETED`. - -![Sequence 1](diagrams/transfer_sequence_4.png) - -Run: - -```bash -export CONTRACT_AGREEMENT_ID=$( \ - curl -X GET "$ALICE_DATAMGMT_URL/data/contractnegotiations/$NEGOTIATION_ID" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - -s | jq -r '.contractAgreementId') -``` - -```bash -export TRANSFER_PROCESS_ID=$(tr -dc '[:alnum:]' < /dev/urandom | head -c20) -export TRANSFER_ID=$( \ - curl -X POST "${ALICE_DATAMGMT_URL}/data/transferprocess" \ - --header "X-Api-Key: password" \ - --header "Content-Type: application/json" \ - --data "{ - \"id\": \"${TRANSFER_PROCESS_ID}\", - \"connectorId\": \"foo\", - \"connectorAddress\": \"${BOB_IDS_URL}/api/v1/ids/data\", - \"contractId\": \"${CONTRACT_AGREEMENT_ID}\", - \"assetId\": \"1\", - \"managedResources\": \"false\", - \"dataDestination\": { \"type\": \"HttpProxy\" } - }" \ - -s | jq -r '.id') -``` - -```bash -curl -X GET "${ALICE_DATAMGMT_URL}/data/transferprocess/${TRANSFER_ID}" \ - --header 'X-Api-Key: password' \ - --header 'Content-Type: application/json' \ - -s | jq -``` - -## 6. Verify Data Transfer - -After the transfer is complete the Backend Application has downloaded the data. The Backend Application stores the data -locally. In this demo the transfer can be verified by executing a simple `cat` call in the Pod. - -![Sequence 1](diagrams/transfer_sequence_5.png) - -```bash -curl -X GET "${ALICE_BACKEND_URL}/${TRANSFER_PROCESS_ID}" \ - --header 'Accept: application/octet-stream' \ - -s | jq -``` - -## Delete All Data - -```bash -minikube kubectl -- delete pvc -n edc-all-in-one --all -``` - -```bash -minikube kubectl -- delete pv -n edc-all-in-one --all -``` - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/samples/diagrams/transfer_sequence_1.png b/docs/samples/diagrams/transfer_sequence_1.png deleted file mode 100644 index 22500abc3cf28c375dc580e0abedb524989ed12d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28233 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 diff --git a/docs/samples/diagrams/transfer_sequence_1.puml b/docs/samples/diagrams/transfer_sequence_1.puml deleted file mode 100644 index b49733a01..000000000 --- a/docs/samples/diagrams/transfer_sequence_1.puml +++ /dev/null @@ -1,34 +0,0 @@ -@startuml - -!define aliceColor 66CCFF -!define bobColor CCFF99 -!define dapsColor FFFF99 -!define noteColor 9999FF - -actor User as "User" - -box Alice - participant AliceControlPlane as "Control Plane" #aliceColor - participant AliceBackendService as "Backend Application" #aliceColor - participant AliceDataPlane as "Data Plane" #aliceColor -end box - -box Bob - participant BobControlPlane as "Control Plane" #bobColor - participant BobDataPlane as "Data Plane" #bobColor -end box - -participant JsonPlaceHolder as "JsonPlaceHolder" - - -User -> BobControlPlane ++ : Create Asset -return 204 - -User -> BobControlPlane ++ : Create Policy -return 204 - -User -> BobControlPlane ++ : Create Contract Definition -return 204 - - -@enduml diff --git a/docs/samples/diagrams/transfer_sequence_2.png b/docs/samples/diagrams/transfer_sequence_2.png deleted file mode 100644 index 95b6eeced3a681dc04de023023d69ba0e2adae49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27684 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 diff --git a/docs/samples/diagrams/transfer_sequence_2.puml b/docs/samples/diagrams/transfer_sequence_2.puml deleted file mode 100644 index 2d078607d..000000000 --- a/docs/samples/diagrams/transfer_sequence_2.puml +++ /dev/null @@ -1,28 +0,0 @@ -@startuml - -!define aliceColor 66CCFF -!define bobColor CCFF99 -!define dapsColor FFFF99 -!define noteColor 9999FF - -actor User as "User" - -box Alice - participant AliceControlPlane as "Control Plane" #aliceColor - participant AliceBackendService as "Backend Application" #aliceColor - participant AliceDataPlane as "Data Plane" #aliceColor -end box - -box Bob - participant BobControlPlane as "Control Plane" #bobColor - participant BobDataPlane as "Data Plane" #bobColor -end box - -participant JsonPlaceHolder as "JsonPlaceHolder" - -User -> AliceControlPlane ++ : Request Contract Offers from Bob - AliceControlPlane -> BobControlPlane ++ : IDS Description Request Message - return Description -return Contract Offers - -@enduml diff --git a/docs/samples/diagrams/transfer_sequence_3.png b/docs/samples/diagrams/transfer_sequence_3.png deleted file mode 100644 index 14a30c9a9155109ee92a4baa939cc8d2f9c3e8c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32718 zcmc$`1yt1A`UZ?3sHC)%v@|Fo(g@Ps2n;A45)wm$iilFuNK3~MGL$fcfJg~QGo&av z45@T|dpw?d&%OV1|FORHtub19%3f`%SUA6#O|5;8Vj7>4 zk>$hl+Z3u4VMXILQniL6hz-A})Zn@MAvR=}HAW3l+5S8IpZ$N-479hoIrn%i-3-g< zcysyH2O-kz3c>vBx&71C>c^qn)8eJRH|^G61f)q( z)8iXB`gK)uMp8X=IFxwwNtAv=)!`$pl<^X$UA$J!h4Mv3d-nB<6X=J77k|!qb+$dB zyi{}g?g6>FPYR9PJ#H$&-3MMW>&Qxl5zd ztE<+HQ11;@pYEfi+^_3UH#J{(O*vr{6N?i1eDectX3Ft#P=DvZw2)nYx^I7zq{Ryl zr7&R-gWwl$cnBO5+~5}s3yJ&dH%Yi~f?vPkC9tOc^&8`)^d1-0p8Ds{#o{?y6l{7D zihnHiNd%uY!byL90PFDXp3OdLbS+oub(T!<>gw=#x%sIA#iV(o&!JOA)7gyo92W_e z?NXHJ>@^%LtV5zx-Zm|^5BS@e7t^~7(AV#{-H{Foa6}QQcq}dsZ(nn8+G(>Et{Q z32FbFB1AcbwQ#Y^#U(_`$?z$9hocvM{Ppf+k&ac(#%fP*B9Ev=@Tu40_J?$)8Z5rd zz`grno~a^EH!6|~KjRV6N**r6_a^bhi()a+$wG;Av*mENTiMLa%;ee@ABy6x@lA^tKOLZ#Q&*XLS-?d^+TFdl}9=0N|! zv#wZHDgQk}Vq$*%B5fa^gNaJ3RU?~XQLKwGkdVvBz@-$sk7|sJjD9rK)Ews5r32p7 zhCF*VJw2_O%s*4-I`_Tvbp+(wu(;*NmxWnDsnU5r9|kOEcz@)NVUB^ES>K0psJ|&q zGAY}cJ3qT^^@-4i`onXknkR(CX7z%L9sL;+@hwAmT&2}K@<NF)> z1|=gN15(RtYid(JRV0JY0#LbHu&OGL_!}BUakUxg>C&e^^%k#uVEtqCq8VjW_-afR zCu=O25Mx-yxJAfX=QMe7r?FBb+$Lgz3Mp(L51k9#hYX^>zm}ouQ}$T3(9sg}TJFyX zBW5sZ^r@8hYmj>U?PG4$g{`aLp%$E=xRgAG)0I}2*2%I2EC({Be#S{hep_ttTGM3= zG(mW8YEFR{2A9O1`HVI7pF~0W|G{xk_uJFeL$)esSE<%J-#>4SthM zF%QLnX)-c0%v}rBQ&{#sef;>Pw?HH9Y*;`WvpSM&sGXqe{nH9 z=>Eoxn!sv1r+K(c?@KLM^-JYafwl|?!ylvk&4KXOi`{e@ zE?Otc+)si?+Ko%!b-aM@I9j4`|0XxLsyQ-Gg}fy4p{8zJ8vQwRc@C1`_c^!?GFB~$U};%5?F z0<0%EF^~^LUHrlB+z2wC%<>vAELd(>aDw+BG)SzeuVEMCVtu&K#s3u#3|$Q5!R0(E zEUZgRh$nPlS<6D7GXM34I7r+Vvj3M0So0&+#>&zjK7p=Ja=`?j`RQe1y}9t$TYyjC zr972DB;oyk`XK+W-{k-Q3rr|NH)orsDy@``jOuZWasN7s6SC0rv*XRj-#=xDdxf9n zJ1@FCxboMTv%*1U+_L&q@3Cwja@Jvq2g_0Bi#KwOxGr6Dwnf8<;T63@2IjZB|){<*-M(#%0>t@G=j>s-$rr{9Zy zib{JP*J<* zY6FlKLI#+(6aL*=w^p=WF=tzT(hTlqUuu<2S9Z0xHXH&y6|_UsRVZVgsyBkg%n=D` zIcs0+9fvd>5vVpN=oOatzqzF*%_R^cg&>1KW`JxLPBkw z{ID_#ZH|CyNFm(q1!{E0u!pgcHNHN&xH6KL1eu@ZV}8N<@Yly z_^f!EIb=_lt^@nw19K+CZGkTg{=c5O%jG&nmrD}9b+T`FF`Bl{m{pVTGq&~k5^jUl z0B%)QJ~py11pMeeMGFduCC>1cX?1zl;M^pLfuvEdL`zYB4gy~mB>_KbxbWV_1!ZW} zcArqjX5|I)3xEG$YI`=KQv(#eTUTs8n7z@5%A;h+x2GR?H5qn09;Z`CH;`*rZO1>( z9ofCjHP6?O5L{5#AT1gmaP&wbv39+Tu@E@`t@Ks*47ahaI}}S>+)r=QKYf%(s0cN!Z>GI;yn*9nma#?87IsZ9E z@pX?}Yg6yMR`PO%h}e=(<#&o)Y#SGH(Y2<5c~5e4T@%Go5G3c$Don^-vwhsCWa=7k zxHp8@UoSa*K)T6mCR}R%T)+LivEiN8js+?S71#8dtd2y@(8jw{OGttwf|$_1tz#6) z@c{;{dYQtwS~F06!cpK}$Q(7gs~DaXRTB>5dxl;>U%P6OqZIHXF!=MhLlzzT6r6`K zppqk8a`fFai~zxQUZXvu3xQLsyUh2*p=({|iVe#eP)GDsD8r8*kw`I4PU|mkA1)7^ zyBQeqco>gR@63n25`I$AEdJJ|lv6ynM+;fgeU8I>TG93)@>;?Sf0p?^C(XV5**6`| z$(ybSbXsc29IyWL_yfWIcPrK_(sR>#Mm-UR(gi1{_c~|?oF#{Y*6Xxh2X%ILL|udw z2D&7quS8#yOdN~wJ|4GUSX#|+;Ph0L?s4hZ!(q+zZ_RfbT)v%dxY_4eIsbFDaqW?= zyYw-`SXK_QV%9Y$BFwJ4t1$ElDj5x-0K=7Jy+6FBr-nyaC}{h5eDU~ua-fjoR+@9f zF_lP>B@GpW%<eC)!A!HHL&{N(HpCG} zayx2JJw4YVo+@61sLS*<@G}>DUN#-8P;?0u=BKxTW&7bR`h{>Ld(HaxsI#xlK7-7z z#KBvOhBU*~+e0&mJgd9O9Nf~Qj`NzuM2A%Q^Z4sW2ulBFem?MJ*te^P5cOw*{55$L zYP;4xXQOm0-mt{it8OihyZOnUvn*%%l$o+IWk}a^){N7xx4UoM zEn^-Yc724PBq%cuKGE$c&W|IXi6vuqFh>!leKPbv;2n4?NWrkVw`1s1!Qbvt+-T1h-%E)A}TccT; zxj{p8%x2D6cZf>DjM_mx6`y&{F;5`LNyaLFpA8``bvY%^E<$rQt^ZhqgE!m~hAiAc zr&@spr6Zt0DG+6mV5oK~v~(QCt_GjFc{^@o4>omWr-wnNPx9cwV78~|`fYfzcXtjh zB%Mc^ve9k%X0b-!r$v>v$=wPg^edJT`2i!-m-2c3;n+KTjw;U-b~9%~VWOO{xw53F z!TC{?jHDrjct!9kS@_|(1m++wP z$xx$o6K)U}hhK|J#cua^Be(O5*FUP2#lk|0M|IC553iR$>fH#Zq~kFtK`kvARu|dr zqIBj0Jia+LH0*Ake3CSWX}4A^4nMPnw!}#5&Ec< zFbXY2ef>IQJpfwdEa|{zPvrtQ%!7GHCqw33zEE>UN>VbMdOv7Bl+<|&8e?s=jHbXx zJ^ds*u8Y_UUTD9{-U~-OLc&2a!R=IqyDQ(s<@A*1CJRDp|3p)z?$cWp6eK6cTD#3j z{0FOQbz)}lV0VXsYIp)E*Sv_ImBAd&zC@{v%KfVD>L|?_vMGyn&ErG*HBg8mwvF3XAd$o_8KN0Cym*|b{Vv~5r^n9VZ0Jgu5Xl5ULk&1 zr;qX^q@d@jw)ZDE-tIS_lZ%MAmyh}L64lI3cspzgZLY(Pdn9!Py7?K@;wB{@_R6f+ zR48y@CrXgyKd4PVKlEVCWM|JOuCY!|Xz)qlt{y~XRM_JkqtEpwcioaQ(iz3~TQ4na zUvJKLBuYzJ<>y0=Hn?RNbIp3~%zDncia*q$Nc-HZ|18sGkz7ab5nT&sM$%5(db_0= zbpJ#;Il<{mp4|xI-s+jV-cUvgBN0oV-&w~C{__4fvRIPXjmFB7@u$ZG<5}sl{ld;x z!If%{h2l)asXb}y@+8FgGjv)^L*P@s#-3MXv=sbl33uxcPw4XE1{q3{%V>SRZU$3m z*i{F1*0Fe{HSOZk;uuhEyJt1bXFG7WbmyV_Wc$Q~Lw*U@1B*A=N zjtnsIQ)$1EJ>Y5d0=(Y*PR<)k5KF-=4xtJVcfn&vWd3UI9T?r3MS`Z9@BH4wTl@${ zdPXJ2nAJ4AB5xh!erLeYmjxd4f@F@<5b1)0DO^N>jKXN6&Ci0 z5AirRHFg_D$D>$Y6?u11*Zh4bk3T#u!839;%OWU+ch3LpgoG`WE#uo_B2Qg!BJ2xn z9BVs{u;TIeCEf3aWtIr&dj3k1q|c9~fe7k-m#NxzgLPaSF0MHVF|oky4pGarYEv?^ z;&h39`E0pRW%>Nnhwb0iMxEGd^9|bYpQBM0FNL|qaaWH^?-M9UF(?G_S{t2%?8808 z@AVY@4E^99Gz;=$D;LI&z*O|6fj}R_lHxDr!4LGwD>Y~;RqJAh_*HY5iL5$mO`wYc zyNJ=A&Tm=`32_8>#E0-Qa*nA*Db_*up)sov5xba@e?TajRi%L*qIE`$D&>(h-UCQ( z7wc$I-8)YN;hY?(SFRzjgTXB1{xvUVTt**G_PaUoLNp&{$-3X6ZP70d<})FETP4vo zrmxLqP^j<%KK1yAZ+P(dz!{IZ;vOxeMAO5;^+S6Hw}7(16faV3W^dvYc2-VkW3=2> zV>zm|TORK>{FnJJn>j?Zw>zR}!uQs+G>gU?@M)}{ zD&5VjT34u4bE<~Djy&an3u3otYLk48DYL0N=IIMRK4C?Ovl;==lHce?V6KSMR$o}A{VWeYr_P5gM2v)t@G&T#q28Q{ zIgb<}2Xm>*rTGyOQ1t6)7tPyT9oC0CyZYy=g$M@yNsYy-fxQ#Dmr55eB`5V8*YCt< z1=bpI3)%6z`LH35s9B=IU)<}1Zc6itI8D5J6$3e~ilAf|(m`P(agnVr(R^6<_dYH;cH$*aZ8a3usQp&lxho<~j?_Lev12i1wgkMDI9PF6_V9UJ0Vjn+SR zJqGJh6)(|ss&JSi`3QYpwfVG#A%oy{M&*6sVGsz3VfHs^X0Pi}o30W^_0`yKgNz^< zP%QQ6RxM%1YkrQryQYFmstgu!+`APDJlJwj3DuxN6okqK%O!pOb96NAPwk38UvHHDh4}C0Z_;}%c7)BS#;f| z{y`gZ1LkiCW-vNtrewxqwNT zk3XTV_v)iAh*?waK%nEbc7rugEj~Ur#ix2W=H9_=GQ$v>p7OEKwU4Oz`PVILd9y#~ zTumP8P@DDzwS)!hh^3z4);OHP-F1%m78L?N1^e|Dl0-a4<`2DHkM9T!=WKpk`(ueW zj=6GH_6RS|*!7F=N=xrG!Jpaks}_F#8=)_T_!ZPnUA(M~)+2WIfVvQo(*O#6j(O>q zu8~>gix2`zdg1!A20O3HY;?Jp_})DANP(0;XH{%(Nb#Jm`G_3_drMm)IWkezdO$G!G`aZ|``OVPVqbP!*8(bpHXQ0%SQw^wF6AHn@(8e&spj~|QIk(hC<|Yk^oA)I zO@77`wR0<&Yt{X%u4bf%3Vl%`X|evQ;K{3Sk)mHsjFg)N zn8m3_y)Id&!3|V=hM<~GMj!9kofpzlxp{sT4&L{Fzv1?*D$PG5d0D!JYY{2Zc}Cvy zw!cdZMZVjcvT=fle0X@~?(8=>G1-VHw6JZDMvENH?^l1~TRj*IouIsQCWLa<5r9Ou zd3%)uz~|}nYG?E#>m5g;6!Q;*DtrhHyP$hPds}r(_ig&9=W@KG4=l-dExt4(!lwwod*HwH|G~*qoYQJ4e`;ngT>d&>OCxcd>1i~lR zs`b-jM=@;(VjX2F{j}rcSyLzP#!=7?thbqFw=KbVb2(8$OM6l?o3lbk;q^U5s5J z4CqRFUFDi}NC16q5j1mBnZ)w9!aPGixdweTD|#1uq7iBqPMp{J-Z$}W65ld=iPngK zUBmaS%kFowUZ(DN4T-nkIF9slm~1b8%x^rwA=_~Aa4|-Xl6!-7revgnD&z9cqa*%9 zQJObO-ETp29jfT9-RlB6!7(GXbfjV=+~a#$sLaQ zbRnA^zv0d>);YPJ?_hF!N4e`p(~Q?Wax%SLp*GI|``$&-?giyn^w*{Q)R__DGq$GC zV%`HwdwYeJpVy9?4)12kg+ihx=n{2Yy>oCJZkn@87A-b@OdjFzo8Y|!=b4R<){OSV z7gTe6Sg^pDQqj|!jyovQIS52ywk9y z#weBKjLe7I_9=lTa(|bP=DNAd*-8G!#zq`^s95QBkQ689M`Znj?zo_xs+fZz9pN|M zI+`4?c#MLIycBnHJFEHcNtbvm2l<>GmMer)5M92Eo~~C?S2sQMfY$V9uECFyc3D7# zi!z()?S*NAMnb@%pyv|Fb@eQ1DPG>seSKw?9pP%p{E5-d)9<&xwuXHF_N}q0iB8y_ zX%xrfp&3+%FzL}+v=qf|g|H$tr3k|uyR#rT@ziQ<#-+i3>NGR_77!>uim4>}?v2fs zbInvBbdJD`Dhl%QN{uU@-7ac9*#6$_2~-@v?Qb1XbfR&WTqoY$rB{QSzI)Khu9h^7 z@P194>`kD4@fY8jtLGVMXqWs7AJDJ3@U%|(sa$@B900uR(%q+M+hS{ZsLl=?C?6WB!oGV*yG0R?<$f;@57uEyf%y1%4$XAq zTtyEMCkNRtI5G;x=z1}Y>RSm&s8RE>@ z*4gv{U-lEP{89%DF+6)>XFJd!RH_t%&t^PpqTgNmxfkmy=DP%L5iZ zE85|cAGCK0%1t-Yr6O{X zMn$MiC~hnsvPQ%3hqAc9{YLP`Rysvjxm3GQ+&=_G+45&xR+k47y!oXwT zj(zfjJ4rDiK3x5)s`?a-Ef1U>Sa*P}W%>zv=MtQN@abRFS;n;P^4%mM95HYq$(D~; zo*xo!JzvgyqXYH*H3WIP*5iJPc0$OS*%0n0^d9+CnXd~kh(GAL*5;x6nG+$&>YxY) z3v=t-kYD$DVut%`Xn^Kp=c7ml?_~tDc~O_3%ixdUje+>Tuw!FJoc!@<|Mlbl+b6P7 z(AOV9Y&OG6Yh;1|0Yt@TLcwEL3MAK_!24|NBkm^$+ef=={(gRnii#x`*jP{cZsnq} zovfsgHP`F;5q+s59&T>R>goxOB}Ns}fk&SA$?0SR`Auup{pugKztAhxJVi*bQiNS& z6BDb~NV`2dJL}@&ve=va`t@tjWo9Kr5ymuC*}c>>sNXH9^eH@p6@Mn2fPCdDkZ{8Z7wetVZ}E8{ z6dgy4$zQtVk}(ig>+dlG(#Mg{UAtnKt%uH!=g#}n#e^J3ibi2ZJX18X%V-edg>Y5s zjB@)Tkp7IuP&s#wL4IC|QxR8+y!QBD>tX60kW{nf!@{+EUSF3I_d>A+eg&jDyCYQU~Xp8;7@py?;sIv+4J zsjGhmL!ofGyEblGZ9l)ddcXD&GG8rO{LY=1bVV{}2dt|J6&0@CaqOUO27zT*?U~QY z{9}9j3IT!BTyx;$_ugwupHuXj1AKL>KYaKQ%c_K*qQ{scLiP$2;pfkv7tO??hK2DI z^~+3lM~y6^04RLlJ)_TCljkvDZjG{&q2gor&oKKn5TZJYTK=HVOaqXg60Z=V@P>sMe7$GgD>3{9r!F z+0m(7d)WURvD@*Gvc=DAh&*Xf=x>BDXRG_0L4nJqn>YAiJ`7~Lj?PXcMa8qz{W*OL zQ2D{zfTkyzK3P&F4nhV8GdJ5Dc)Zk?HsS%CR|+!Wh%|R31bh(qEV`z^a0MqN3l2Me(aP@wO;T?aE0e>vQ*16fRyGUq)P$YJgng$dy( zS`ik~LWtc!X8wS2Y6*{6$R(1bsrr7*$i!H{6HGvq8Ug4bIu{UMi||^z(UJ)BK~_8H zr6Lv8go&&TGk>3ZM4eUGEUF#mTg=#QK}`0JHI2 z>aYd8#9Mr31e+ZQGkQ@Mvs86x1q7kU@3o6E7~DBKJ-&YZdgp6K4)z?s)#mS@jz32a znTFpkH>+nsX=O^P2!!UWc9o~!ud=OinK60Pix~nRuB+`alU;)}*L>kR;;0HNNKL_u`JZx!{j4NsGA=i7k1r z@fp$*64=b+SP%$=>r^eD2n1>obZE26DZ;80ooD5-^D-r!o?r)8okreAGn~dI*^aI6 z@_@357PKa^zi}ZJJ@g4oq>6XBMGJrT2AEcS3Qld!7q4GySz5A)QPmfWw1egG9Ie|_ zRaK>b4%%DoKzDcdRMmq8I2h_NV7I%N|9yQO0yE^(5s^4qL62qnP;2r8ZM^|Vf@in6luTS!jS$S|C*oFvg<+N$?eX{pVgccXK7#84856k=Ush>4rqO|Q5cYJ9+s$+mps zhvsM^WJe!=72wPKCNeg}$Se5m4DfGXTxmn_h;r8LvI3L%%}N8hxFv&`uo?cXlyvJM z*&jdl@&bA3eYI^J0H@BA)uc{1E;9`vP#Qp~kEjJ>kuje-9 z_LcEiNRCSU4PleYxOreu1SptNi+wnD#=ObTphREAY_e`H$h1VCt3lX?73c4!rxUEC zn)Lhph>u^g`k}cB_i5;_{t${Toe&kDInc|dW*eVf^6~^-9^V~ zc7#(pJR0IKvw(IR9)pye3)&Hq%a>n9MU5syXmM&zzC{S+(H&bXZJ&c<03hd!5PW}aUe%Ry(5K6kWSiWk~1yn}{(!9K-rgbi9qOOJ; zI9L-jza3+5dNzO-DlaD|DJ6x20~iZ>&as5{_!GT$caFe;GfU8> zr^t1Y`w2RgHgis*(&OK9XBh@wLmoKq@YGy8XB=TdU`^nFw|d}Q3P3InK&!1XHNYYG z?yugwgF>nX*L;=<6Qbb7 zGI=PP{%;}uv)`Bbn{nIH;){XkwF`wI#Uwd!;Z6fvk!-&mg=fX!&yGGzHzmTB^Zt=p zF+q^C_*q9sXS4aZ9B!EWh~DxR=7q|O=MS66F`xYx@O@9w?kb4*J^QiJl#md4OUoR6 zJVL@{zLR64qT;9j2HWz;XqX>AgC%2)fqS zqIMU557W(m;NU|61c0>w#WVx-TGS03w{o|MZ#|QPTKKKzgS@#0G9D-<^x~dH@$thT zKU|l2MsT8svBdlTwo_`I^=`Z*Wd&&`Ujf@4c?y7y$|VO^KxkN5S^_ne7gb@=GMl47 zprthcRuDg=VWhQn9=NG@|{rK@?ne!7NgE+H>h6a$Lo`;6kxXwwh zZ;M>kwls)^j|$SS3gUXXsO z`BsoscCxY`0Ki#DRR4;ZVh~xs*Z7VFv@?>X%5T@vom6+Ky3L$_uiZ4 zpd+`oUH~Q;ja^Wd*##Q?_xZ(K+FuZ{Bg-sWf3zmXdFCu4Qw6{xRrmek>2@HF?T-fg&vj zT_sYY167)I7fe-NGB9*!tmyTcEq+cFfq^%$G+n!zQ5A!}!N&IT2xL4RDTkw6;B+={1o;;{9MzSM6i4TXiKEA#d;fwebqTK?5KO ztj-DX^WVS6zj>n!RU6~kbz2=`XGZ96qS3sg=i8l(`dNU2EpRUX2+}Gb&#op!*VTE0 zG;^EiKRHz67iT5`v zGb|P~ULf|U1kBA$s=zEy0jlg}A|Zg@Cg2C`lTetdaT@P;>vI7MP~3B6t5={U2ER^O z>8E_g$Ii}(b>WnH&=?I44r2PwY7ilPFJE3(fz}YK3`?uswlt_BeQZf~!$87-Fs<0O0`d)!}|Q^FKTjh)wlmArSihVA-KIA1%g!4IWfHhU)hT z9uZ+Oi-?G1i?=1FTnP2>4=AUSX2w=$qHP^L3)%r-kq2NG>>LTjr`%hgDx6N{BW4g! z0MD3o_F=}P#*v6tSQ&{uL5oS71W%+M{DabP*MWldCI!}2Pa@Cp;bG|W=Mz1i!$XYO zvJ8HHet39z#PoNxOCMs@{M} zqMV#X*5Z^yPghN_em}x*$^>L=iQu!7n3${c@5%J50J#S!pf9xt?u@k>4H}F~z+Vjh zB*iCFqOEs4C zzYShE0%F*f1m|()U}wklJe;og?p+KR$NmpfRL_FIURA8f%CcA;%AW^C?e8mBw*oQ| z@D!-&dZFfGTgTt!C#4-z|NhC_fU;B2o8qw=tc~M~^FPinLFum;07dwp)dgd$|JT99 z@K679MgNlm`eR(SPG(~0 zFfeIdE@o!*TwUGq9OUHWfU8(tSf~b4|A?mw%V{8B{`c3XypMi5=*EM!DLtkmZXLzX z&p*N}atH7(hmQeyLrzAPuuk~as)&n=tA`un*^r}lLqNc&Je|$lmkFWR^@&;W?Ufu0 zef!&q67HAEOlyANn^DFs%aEqtlbb z2RulVBc3!Y4tslhH-wx9b3*OM0Kx&{HP{T}`(r7JQ6}^D^vuj^1K^){RyV=kg6?sL zYt<3rCtK|#qmb@wwT@B$1cE2{edR91^T$4fQd|YRA7D{bhtv@(TL2(}jYRpNe*4pST*c5e7ghcX=oW z8cP?u{W4iN68Hqe6&0)qh>5R@x}+Dqj*bS;eVc}C{RlLNV89bgP^!dH)>~g&uUxsp z7M*v$_;s%fz@sYflz)OvXc7-TJPD`d$&?AsL;>1Ovjq>};qU;^oSVe?I6!hOvE1v1 z8?I)^SNG>os)zyEkG++03OI+DLi2wV6!0v8)p4&$4yu;Ot6rb>{dT*ZW9+GT1MUZCTKV+>x>dF2@jG;YZ)_9Oy=rKk>way_PGU{hZ9ClwWy zaKC4H@zC`dgi)iqx_Vx6n^|{!9wn(#G<~)oS%!Y%x=s}!FYfzs*?oR<3kVklM5ruc z4sU(oE`4aXNH_K>O4kOimSumqm@eVnKQj{ukj%o7zQBwYrIE(Be2*ycCGNW|Y|7Me zC4n#d?^m;Maj>!7LnSrj6tfM=K+$g+qvW7UQMBx}08y$0#;t}Y1F)9!MWycr2_t{4 z-tZ+E-<^e#(%y2z&kmZ4$yJse_@o}&?f~zDO?H-3wf3h=NiF}v(}MeRf8T<0+hUU zcU(~s=ecKNBhZa>OY)RYmlB93f99$h79Tal%2HXAd@#gjK2XEL!1TmN7ub|Z=Z zC~shRK6OuZ+;Q=KI^KtjSg$IaRXyYc8)=@t^zYc zw+eJBaa*zJuVmaXdlVmW?G9!@D*s^3;?QKE`NuF=fElBEm3%PVNPjAUpfLx59XHi2 z@Z9~4C$o6iO1c71oV$2_ZjmHtnZWYHr{X;T%us=?5%dz_HKuiZ0)pPz3`p4ZU)}|5ocm|il#H4mDb};r2|V6or}RHwuhSc@DFx&sXx?sJ z=>!>^lNM0(3%;*+cUK$;!K`Mt1Fn`Um{uMuV_Hh|Ir;Vg8oLL_iL%b; zR&7qz35WzfRscDbP3aNX06Ej(1vJ;LcOWY56Qq_0O0`8sTYLN=5-b3-HbOXar; z6j%i*65i!L_VU)&)-Rl(HRU?Duh1Ej`iwC^rzv_pNc7Z88FHpxLU-T6xE z?*DO2#+ey*GJ$3R8U$qv6LCp_F_k2@3{;kxYz4SFV7qFD9T605*+HjD_m~=E%n<1SfK%^x)88sEb_I?nGXL_MF))G)~^m)u5p$?8a!j0@7UCV z3zHGU)zmY@M+XK303Qf&%}>`Pm!H@XzxRo<%;~8W{NkV9bh)5d=kl}oE?l_q?R=m; z%KZ4^Z*enhBuA?Nb6P;Xs=YnuDc$w!&9;5Ci_(-mj1NCl19I?BKB^NN4wJ-kd$zo< ziGkW}%l-T`&H#PfGztz57Mv+DfHfa3rG4w?4`NxwOP`B3Z2L>1H%N#`hR#UZ5216d@5glrNOhGnVl7Pi)2 zZ1rJhBG^n902%!*6Kz6*F40wO4?oT71m)*p}{YDv70-P{h)RReiP;G?4eM=Qs& z0GTXkt*p+z;=MxIwJTy$8Mm02o_Jz3dC*IchB=K6&x5_|h3yas#33z+=Z$orxX6#K zt(D0d*vrJTdBrx|Cscm{|9deeT~l3`YtGaa{lVb1kY9x2+o=Ki4eKQk5&Df*2ci^cVQ#I6h|xA zmY2u27(JpNr#V>z7`bi1Teo7(@h#Z==_H_~MKbOSmq+90^GncCsZA$4y+dkZR-YnC zYgJE&=h<4r@x)o)18$XrqYxtv?Sbh507#WsbqYXub}#msAgbgW-Q~h@6)k5bLEWI) z@bLDY14l;~Hr)vTr8*}FK-ZB-b)&{dqa~wY?DT37lwovNsIg4`4fR@)6f1xv*Uci9 z|8obp(MH?>W-ngdyX~>0?kn}mwxnmaDCLB}8pOe?@bDe2&fZ=gLBTlgKhRw@nXH`B z#V{herS)}<+bUCewV+MRVJCWXqU%`ezwc6yR%N~aC*0F^1?}8$33Zs-xLRdg)?)o~ z=GtIxm}Xsg`{F!)2ldE7?7SWG+}~vee`P+)K9^*E$jC0py@6*6QC}=q`(0k_8Rn}} zhN4ybh_6d>8Y076&;Xh3b#r8?2YT8W@j_y9S5%)7a~Sa(zkBdXNxQBsZFdtqQnpZB zVz>gXdo@Zgs=K@u+&+h(dyDq2blc%At-USsD@F4snbl;#!h>0Y8F^Gdq66AuOn;`N zukM-f3xM>1m0|~M!M2Xs9VQL4N1A$i{shwdb*~d+p`rUqN}XV>n0N?XnyQfP=&M4 zI^sfrHu)JS{?i;|C88{d;!niMVKA`sj>ep|OX*HTXvWDsZ2UVd9A(e{fVK~tM%;g{ z=)jFDAL#dkfTk67;mxd~qoq}a^U%lY!$DsK)C7RAfVP)-y%}cX3R+DP0sPG zP*Bj_yLXdBXa0dkv>v^Tj6{RP1IOjym0_?2-YJaK^ScZKiVFCRP$O~a>FWL=AtAkh zj@{g3q@w!tgQLLtKHOU6!Gi}t7G9Y|c&@UH-NbqT#khdR0LKK<^oyHTj`d)szjZ|9 z=HzreRx7ZQDIj=a@LO@jWP_Uuj@=1w-!e7C{9+-Ek3*dwSxuQu0r@-I`N*h{C~Q40 zB^JLF`%g^@4!gm{RSeD)VtcO(1vGH6b~ZLR^5lW}XLmd52@>E{`%}IH<};lYG&n&B zZ27zq00{7gEy#-pihtw#`jd!@uGft?5X$*YKq@O=9$-v`s=d&|+oAqjS*=aA*akR& zZr!>C-A#v_t!UA7QTu2DQ)(s7=kg5H^l$dt??(f_Bj!pDPs7q{rD4jfD8R6y?QqipjfA-O9oiK z40eoKIDc=j!=Nf~!bm;-FQ?yMbi|o}8{FI|aBh^r7%DDGUN8@w?ZRVJu0Q7ZWCYut z^4Ht_bHv;sP_TBEVl;tW2~?Gx)=P|>rVD()DrNz21N=6_t&xu(?-jqG)yk5FjD5u8 z#C!KoqZ|D3OH$xp2DJ;5H>>#yCPqhVFh|cw{`joK7|7+ z2MGHJTQcDhVE)jS8DhCmk9N#h1kw(lN%h+*PQ_zzW)c8S-Q(kRfSXu&2INZ*6Gfbu z3YE7PfSG)@y`A;uO*f$S0EeDkL725qQnhC+P%Djcb8}f)Shx*Js_h1@>j;ER0$*_@ zSYW`W{wgw3T~#%w2b@R*hF-zZ1DvpxD%fBgh)k@-71pFBW8kT{i1j4h>L2pRjy@C! z2^#!93tgn!fTvjpKc0x;4H9ReC3Xm*C zt>Dj^8RvcQWkIw<1hJ~c=t?{zKfxYl8*3jP0VlOyZE3cis zhzPO@@Eeda&p|Q=yL}TB&p_Nz@tYldc#4xlL?h&tR-npv1V=cIa)-BrNmxt-C!cxz z(;wLY+}1}&|4(yo9Tnvo{e7bzvBd%uB&0(?x#sXArP^y19CQE`w`WWcLDx4G~=`FOXpd2HGY+k*W%)3WIWy51B4h zRO`K?n>lT8Saj5Hz$eay!W5OUD*mPV%C*3070rI-k#%R%m1`n!Jo8zr7dV0PH$Hb) zM%<;M7jfAp@}dr1b>P#dC;h#~UVEp=1dM=VPMDfRa?6<g5TkHM)9y<8sSv| z*7P!p-?A5!%BP^|*4Ni7pmLnZK*=&0PuT^z;dt;u1sgGK^uHBv!P*0~CPl6^QM5Fa z=V3Y}x=coE8@R~ynkXPe9j8NTt&lGNpWIM>|0A|>lu{L74dc0=?j9g;Vm;|WHz@7l z)j|XX5V4`fOwKI@zIwJn!13f!px8xu?re4u^S`vYfY#jsln4^8c(GtM$?Y#!wY3M} zy><$e1O^93y{DJsM5jJ+lm{U+jURn3!RIG(rjNMnPy>Ork4CwS2+#sV4EO$qnx!Vd zYoiKH_aJ+Onwy%Es}<;U>|ERj+re{d&yR0?0MCFBa}3^zbWjZrWS$Tk0@n_qfs=!S zD=2ak^DAfngUcp>my89b>oE2!YinfrvcnMb9X)nz^~;xo$B!?JRHH*~&1?`ulg)F< z(J`p7j@N*IMVApL?pDfxKDTyn``g`6sabG*Fb2E2Zk{JF1Tgk)E-o^1a!M~xHJW}e zRL4t&Vvlx6t)|uj9!suvo7Ob->N}2ckj!f!*pQHr0LFu$@GWSv6VnO~K=RwgIFNOn znTg5l>vUHrZkC`?JwmaI2YrP2I$W~Qo70;!EQOGBDvcnnf@LA>5*&Tww=FT{cj7VdBQI6}ZQx>BlR@U6mzX#Tu{svQYf$fY{u2)qj0)tWf$G9utGWw7okc2Vz@7#T zmts3sUu3z6Uh{wi?_E+z$n-&=dv$_nIWQ?HiC|(V0CkvwT%DI6@}xFa4iVjw`g37> zmwXJ-6#$o*Q>W;fa%yY6055{6YkJo_$};>>Bm||eDSoDS1biPPrsuJo7PipFat2Su z{R>6?O>pA- zL+|<(1gdmMyRtu$VxP#(ww!kO<^u zc$jpol;@Hl&4EPvdcWC`_ioP+Iuwl62*dvW)V&INg7Qwv13?)Y5~^{@jdtH;*o zLmB^@N)U+TmAwCjmVqG^l&@LW&2?a@aZvs(DB!YCym|8jtb&VcAf^AKZ6Gt$F*+5~ z(7+5*FYKNv81{lH1VpT`p@H(`32=S!$B!RRo;@q%FfOm)MX+#-GH`wRiqe4*tw$x z>f%HjF^`XON#jF~c7&#%RN(meeE$Od2~x^7oCo?sK*(wKjKwHOQ7=C{Kkj1rCwYcw zh2Cj@S41(ilE5+is1)K&>N95;K)n+91Nr}nq@{NKfuxmY+JXM^QZ}ej(P9AjxEcM} zbV6PAv1ifEYFGZI(^)n{pHY;QluFOG>PRG^`;ZH^ZXTXx*vHd1!Q&H}S5_9V=<#wO z4#Q2f=O{?`g~aCc|6XD+JNT2p`4a)zU`2yiPdATtUCnlo)1|0(yE6bg=(`p`VY-!! z@>B1?R-Up8k&K3#Lv%Vy+)@C@+L^SUkbjIork6S+qcl)GT(4^dh!p9$X^}By$B3PrCM+J6b zFgmUq1P;Gt8~_DJ8NKf$nl+D#savl#P|Mvdd3t36cRFcVsO;<(LC8~|fQJX0)pyy4 zgnx!z16b^jxN8AZlyTX6?}Q1^)eKBb-6bKbisCmb9Tgh$+xab{tzzC2M(IE9hrJ(1 zfSB|XV>~67AvZ~py;JBY$#YdENB!j!DP)=%5QMZJ=~d1I90t$R#{E6iSd5B_VI{2` z6v`C-jHZ;Tfz8(3PQMoh&%OOCNlQTb%Hnjyf{dUCB10{)=HAq^ zZHuFX{I4^)j;nTCDrS(5>aJg8N{K}elZ3>sdP6Wj`k#6Jz@(D z3j-oUrFj~>t@3XQhw5K=2*jobl!!cl-}LYxG_Q!eYb$mALBYu^XWx-k{yPIV?w9%i zuy9Dm!l8BtoXoq?byEE%D2#GDPG6&V@SVRK2I%za)vH-$V`F150|J=CpYICTjogH> z16;!KV2N^1jch&9_>a-P6AxwBAEOOGCG%kd8vIwFQb441JRS#qJ_M3Z#Lydc8oBU6 zC-(-oDTmv?Z+nS1qp*-bcf<-p!weEqs=+e5M29jD`{~Z)@bK{BuLlfTdmC4cRhx91-_1Ym_Q*?9Q) z!o%N=jv9tyAxwev7wCpZrSre$oyO%V4VutrAd11UX;~O$Nru ze|o`!sI%%|1`HhpKhUG%KG6Guz2wXGsePS${@L+a(iKew!PSjV(H9^lg&4DRY6_=I z1YMGaA>=O({!@E$3T#h>2EW5!Br~Ha2nDGhjg)@`ong+XBg)7AH#AE^d+1Gg%v+k! zv-x`Hh8i;O!2i?*_m3jx%`Bg(sIw1_|7ddk74-z(4kF!tw`==DZs+&DU0LG$843TT zT?z!aAC9~Kc>JG|+dpM6;0R?bqYKTH0zO`k33~Cqi0}T=F(<~vQ!C58-nW^kBt36Z zBlue%Sr5N;Z??Xn%(r!(Nrnnskeu5hou8=9NEqu1CQQ@|CTMFfvvR4;bDMR4Q63FD z|FHE!=&Zdd3z!JG^BcWQJ#?BWw(wm;u(ozgTGiT6xJ8fIHi%lwGp~MPJoIWDJ!G6V zyyi-^S1njDoYl^F9`_G(-+QFVzT1_`fXOP_eg-G3_vE~y+X2R5({-+U4b{|KJ{rd! zUgYw(&oXtcdqM&Sw)5&N7t01hHNH~h-sHuNK-iGIOP*&$maE%ko<60hb;L*ga2CaH zm?476DIE#)U&~c<-^in9(cw5F%bIF=!bIk|uM!6u%;?huE`?WJA)1#KE;m4FkRb38=#_erwEcJL1@oKxpRv-Ev?r#?-)p4V?&X z@gjr+U{kMw&miW(`%c#Sd4<0CeLRc`wpj{#uNUO8rMr>3WaY}en@!^_20kd*WQw+45=tj{2i1nwq0?RA&^HH^)d4@znz_citNNtK3& zPu+FQutn#0992O?4KoJgo#cC>p5(OP0~@&#J-E_5+>}nt%<560I}R~N$RZQnvg#jb zqcdAdj4j;s5Qj|GjZ~r8ho`{fCt|)r$K+GrN(P);_!>bgp_%z;!ahqAqwRs%N*uudkB+Sc3g( zzCt!dg@hqi*^4>_CtK}Ynf>NOXVuHfX8%Sm!-giMx=HJ6WnJg$(e3X?dJA`Ed-MkK z%<@ER-ioLgp7Z)7=%nP7yQO|=-nSls!FsW?ixlcrzc0CYGicYzN^JP^OfHGbe2Yqk z!G%Z6j+#+(Pa}g?sW&ginlQgiwxzGtPG1#U8?{#5lB5UwF!wL~RxTxntav;oLQdD_ zX_RR+R5qQlsk|79_1qzLp8i7aR1uVHi-|iM^nP=dGVom34aD+i(tNF$c z<6pt)wv5orY#|H>CnwU$3EHG39L5`=FBniJxqD@vJFeNVy(n8+T6%i!LjS_r;^-on z5kl_^o0@{c(w8qcpbHJ!k-)!0Rka;579G0~Y_qp2hH80+B*A-?HJMjiF1Ib<#=R z-^`V`nK8d&+vm{|e^?a;op_yc=j($)&c3PxRbHz4Ru;JX8$ydB=yz*5qh7;0m795| z5&B{|2TF0RzlGDxsVWxJkOhE?E)CD#xvgtv`OkD>1#Q}vQnjb#zWsK8PJ_GX<2THb zp?2nxiSHh|W2MI=gc3_9VlliUfp_oTWBPeBIMf?E(b&q(FXNAUB@+6udPvWQhgc-z zn#QGzXHH2Yp^IH6Wn*Ki0rrzmv$JG0l9PwE*=+(hrKuxvp7^!25i&)#^_3O+H`pR`5_Vsl z)^W#X+efeD5yRTYcNn+=VG3QSZQU%8KijPW?@^|N% zam;>lH%kd?&E}3U4iL` zzy>#2t0vnIUBe8PI|5$V@%r*f?yzyqUP+frPf@;xHrjTHWQEt|;;OW5BPMN*QZVQ9 zYtK5zR|&Rn1@UtD56;bA-?U}p6FN5>+;NL*H4%JvcTdu6k_5=0D9JG3v)id=*LY-o zw7Ho}U-Q~zI+xn<^XtqER@XycWj;@arKC<$myVB^r}Ic}q#aF( zWVoSWfQ1p_R9i;(p}2>t`|hQC=uDS8QEajff%73->eZJh;e4{8jE(#wGYGf5F2tSN zZ&Pa0NlLMCl=}w~c2sjebt0?@CcCV$hr{9npDdkI$EEc*_Jw8jg?hd7mC)B}S=d~q z;j`+0+tvm)RjzaW^FaLHOH;*e?8I48-li$zTBCfJiU&Wah0hdygJcgo;ZpN%zPEpwje#C2oJ(D5nV<#Mqlc*f>FQz1^Vd?>7yuv{Tc3 zq`musyxS)*=Auo$Z&H+yd#)wPA$=!yeaWz;w{Zo+{?pQ&on0h~kVl z*AgEgBSVz=X8T9io5&nS!S^!fWRbq{D}I--WKz7CeTH zBcivqoKsVKlOu7Vh%K?MI04sM7r*>l?juxL&5jZAflO2FT#Ui%NAKreHP))o)P*v` zr??74)!caX-4VMu3-x!L+J=fd?bSPpwhg7LiDxp>#8P%%O-Err;4jioQ1C7?I*}^j z!tJ}`b4eOP%#NKWpZsJQ9`5Jv=V-q0zC6rX+jdL9C(h#I0eYQ?Pj&K^7LG_oPtnNp zQO_C|wK8zB%*d4-ef_Qk;;SAD7o(NfFnL~c%zC||E{ioOcV$J5k#>kO#>Buh?rX`~ z$ASab7qwZ97txr8K&DSk4=;Bav-#+Vwf6Y!} z$v7{Mot#V??(K0tx$d9dF*vl9Se133 zoxZ^^0opgO+dFnP%tV}@yGEUFaC$PpfuB2*w;LPxm{f=29G+6<9%F`( zI12r_uZYD_!*(kJUu8)Qi?8ZOTwC*|vDkB{VJCDOk@&tXH7!a@TK84j`=CmagA1bm zHaVtIDMiB$rcq>LQ6u8BT6K#{30-k(cjY{@EbV8@R*$-6@eh^1EDN%w9(O@#&OPpR zrFz>(#Wa{Ms+p~oR+QfP*zFs!Y`$ccZRD4+R~Ez5vz#soV#-KSRb8plF7wroTU!o< zIb(HYGTOBT_FP7wTE<=4g3LvLm5uUT8je8}(t# zWYCq#r@EJ7zH1m`OU;RKW0u!El;t7v_&|>6#aCsx<0`XP-WS;Bo)w-FAeK>bk&fk@ zGg)tZF6HV)Ep}hZKo7A@uW&(u+0A8RSxqHIjFeo^znYvwJSOjA;F(0t@AFnywM%a(0ueRR#{ z+8r8)gFH%WydUn(*lMNm4`r^miaqH-8{A$cI%VBMHIsn#<8O$qIxANrI^L6$t7SE) zPN~*aiqX405m!=-IB9r;$ZlUQ?)Z?7)C$cChJOu3IJ!jE z!Y$`wY_-m@SGzCGb7jGijBhRAVMoWE9*D{Ltq-j_8-(}li6L{cuGqB1*qjvY!!{(^ z%t^9>ce3=BQ5P3F_OJ^WF;7!=s(YzeDNV?$)VYK*i7f9U0? zZQBy-z#XZ?$E~+6snAjxkG3hxY}t&aKVGv?CDvJ8S1_n_JD<}{G4GaPj!o1#w@NX9 zAW3>Xf}#{H@eRg%U?u`@az_&;oPd6R6X%9uM?!Ve6m*5jq`1s#oFt_d3em0~575~OLXaTJis?6Ul5taCH>TX&SNlfu#aPg=K|uHtW{rpmgN3fX zk&#H9pVDpHY@Rr=%YCx;^qJmkBF6HKypZLkh3DqRvDLP4;-yp7yFxNCAL}ww&5Vq& z(YWQ{_J!$?HAF)@N)LeujgPO+3~X&x9!fuDN0i&QaC=P zy=^OSr%Izyl05I+EfnR>5@VKsb6Yd#yun0`RN+~cE_8wXPLESK#kzq@l0Ve6vs+v8 z`=45MXg-|P&j1R3J+{9%^L9Z_ht$heyZ({lJbY?72dUhdSzno2+~lrXR#?|1*Zhs) zvo9hRSX^H#rUfrG`aWS=4asiwl}{Zc_(OASU>!^Z%T+r2d09=G_ge2 z(1xjc*Riai)QItZLcA&_v^H31$9c2dX{Nh2PnB=P&^K<`cDGT6S0tqgMfn59**&)(!~ zBd1SX6Sl!{V}Hp$e9}b7&hC2fVp90dt{{Ueom*B3UCidufN-zSj62`oxaIATGMeQX z%}s8~;-be9qqSFGR;|YFysw&n;po&sc(pHZrGD`-uc-v4$~JJ0@&_ROU^w?FF<|oO z3)|cF5eu7XEg$s@3U!g6)wX4Av9`FmaS?=jqI-HDRza9a>yb3YFO;>GkyE{azvFTQ4UC7 z*@`t;y6M>kF(z>-Y>@~u9IIm3#^Z6t#%T26vMgt!^7jjxxZLP54ZtZ{U{ES>TCWXz z&BWfomEqy6HRIYqS(WN3u&c!h$%Tc)y2V5+V%@?Gc);&D$U8zUJ|=fz&A)=a*%bEY z<>9lL80fl5HM?@<7-4l9TtT^Qe$_5AON;UNun*v+#K|@#=ycFnAU;nPkD{#JQsl?G z!qKN3Os(hq_Um+EVFA$P>|3T*mxJrkCZo8DMr5zYzF!uDOtx}hp2uJ>Jo2JY;F$yG*Wfw4xL30lj;k0iGB#y7*_L$zKx%s8H@X%QxG zKiawAsiIdXXYcspRc7`ZaMk^&Llc@9y-Ui#ZY^lLr~2L?d2FVaIY|Me8h0|&3ph1b zYP_7e%9?X=On2ghyz;+$>c*{8n(Ll{lztsfCr*)_mCL)}UCS&pFZ^Rw*VAFJ9;V)2 z)iEWH+|41)bT;0M`K)l;FgToA+-y_R?ZNsd{es;k6;!|q<{4P(o?F%}gJd&vVpmUx zc`;w3c-+~l1UHFoTFRf{wrC<6lK9q9Z}T?h>`~2@5W4=mYAZfOD?*q zU&qt-^&Mb)rGiY83$Bh3buk&*7fk&*_@+d3Z$i)S3m#jxcpuignuKt8A|5;0Mgyq< zbfF{I;H%OeCMM$1i?+{e2A~H-(ArSXWc{s=9xPFL75-zmSUXN6ZV+?p(j`n>4{6|~g_!ATE9f|F zHHyqQ4j-vC?=Y};a0snQdN1rM)3^Xif?2D)x-&;d5G7tgO|4-H9YGwAveJ!|z>Cg2 zbH>WzxYaDi$t-r$FjCNt#X4#JCQpf8}H5o?8N(?#BSCTza zw{E5#-JEt4pg$ZJNg3 zR$`3lqQavv@8eg@6rRafvht7phzR`Y5A*AjHQ8$PUS4ZsT?Ayl$Ye3yt4-2F3^sXvgVuypz2Jqp$Bc z9zUAPA$j;I*SyRl_-@U#J=TM-^ymC$<$^8ZA^xwgmpp#{?B|IIFr}-Wp4N6<^$(FW z*Pfduy@2k?V7Br|XNNf<*%r+!SHWwq{I!KMg;#5?{pE>ONsF%qf zsI5Ei!54jyJKSAc|Jk5mX)_d2r|voQXKwMwg6v63PR@=dI)2b(V8MIA{w=qzYQ(<% z+M_9#k?gb~`T@p1I7nvN8*iBLQH`pQ^B zu!rH!;b!-%`7|$(NWxu%wF&w_n%WgSFzB8Vm2NUlfF?gI+&iPVPga|yA4;T9SRE*0Rc4Lcgr~n16$6V-@ z$ty@22N;)8Pqd(Ev$A*xrrQ3anWbfngV)%L#;C}p6|#nf>U@Kc6GuV~Mcgg3`O+-m z;|Q|y#G4sJ%R*Is&$@wOYX3=TuVp1|6%{IGl`INnl$byK&=$GY{O}=N3Hb%mu$Cw< zMKv#dPnnC6`YD;y#)xifr$ztPg!m`;D|y|thPpN4hQ0h34h0l)Jk_bWz0$v)#;W;9 zA^#m=v^SKjH7iE7ZDq|I$1tGKF!z%b#!no!JT?-F$>#CKMM;#{%F2?I>=IYiMEFd`Ei8H zWy9q-)it)UA6lb(y5G}lnRK@nVlXWeD;8wRJOQqiy(lH9{KVsM5i3*Xw4`xh=xc*P zY2Fpi4cAX8|JL1`)r7$;Hr5u%4zp`jg~i4BcQ~@2^G|~>52ikBW=j6R*G~ttU&^Q& zcglG&l8h{&t?@=&XsE<}du83B?c7|(Q4e3cR86T@#Y9BX;G`tI55+Da(3F2(Os&k} z5qu2o-Vl9SiV*!J0Il?IS?nS51HUUjViRq5TJ&Y|8^Es9fk8>i9t z{}0dif9E4`^k}I5P=n{uPF5~a#Quxm)q4^kl&%Lj|6nSUb+C(svM~U^X_6LtI>*@d z|2p6_qK&p@W@dNqa@%w!mPaR}9{&193pJ6zTRTHD&J3f?^{2Vi8mIm?lL!u!@NIhe zEUBm1w9o97JD_xg=<;tcclc=0pKe#<$e=9O#|`ygMS$+sFbbp*0)L|9~C0|%STnCtUlw( zlE2k5KdAf5gzsWRBR9Mrq~SHs3eo-gUtk)qLtzAl9m<8*wQd|-y}WbHuKDoT!M`lA z<|r&!ltR~^o{lAHFUe~9#r@BSetozMcg+4VJYmS+{l0iZ^plSKdfV_dv(tNj9aN}p zSHAAvOLPLvzD^u#%>M?~g*xmA}j~=yuBQ=+AE;*C4o< r5q>3ggWcWtKSdC%@Cd&$i?=10J*BuQFAoY4{;nXSDxEKN>*4 AliceControlPlane ++ : Negotiate Contract for Offer X -AliceControlPlane --> User: Negotiation ID - AliceControlPlane -> BobControlPlane ++ : IDS Contract Negotiation (simplified) - return Contract Agreement -deactivate AliceControlPlane - -User -> AliceControlPlane ++ : Request Negotiation by ID -return Contract Negotiation - -@enduml diff --git a/docs/samples/diagrams/transfer_sequence_4.png b/docs/samples/diagrams/transfer_sequence_4.png deleted file mode 100644 index e3630e70affabe09a7edeb8df1f48e04716f066a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56765 zcmc$`2UJwswk=wSieNw_DIh2)IY^dJ1j(_;IVgf;kQ@pD6(v*TC`HamphyxGkSrOb zNQwjr1(J#kf8ut#&pvmb^WOWvwf|@h!D7{_x#pT%UmX)Ab>z1m*r$7 z)gX|w;QLI)g)`t4Q#nIJ@Po-&O2_%J{ZkJcvnS3F88bUG$4Aa)rngKyZdo`xKNaNQ zcxv;=&e_G*hW)X+yMa8wA2C@IMWb(B*zr6ZX%8U1sz9TvgA^%AFl!J{t2Vro_5nU-F5^+)g^71=CY~ z`O2>nZ0F9)tVAi!xJbC#6!RDB_k2Q1^H5xEVmpZ7wEc21Nuk-0^tP8@SAz@*cfz$V z_df4o!tK+^(h?lsx7G#RPht5;c4^oUyWG3GoAo6&{Jo@Vn)&sErkA3{w zQz2o|A@L(u9?KOT}(w*dokpXMr{*%RkDSeXKfDdoHVN^ zq+msbqVRODyvd^4srvNz*k`NkTYQEQ?Ax-X7c}(b$P(rC#PiuXg>2Mh`rzY}mK_A_ z2z{UU>C5G>jkqUw?r-BZo~sXDKWihFJR}lUEY_v?D4%mwdi`Fxf)<0syUeFa_|4?3 zzDd!6k4~KInrieM@4hl5;i{`;KclynWN6nEOE^4b7$uU_&&nAPU>ZV6+2qV+;eAV6 zqnle$#*SVVMqA=3IURp^rirEa@iT#gMhL_gA}1-X;cm2&jITqgN!dnp^{VRCOC(pX zs;EBgG8k~Ys7>-7HKeBQ#KF6*&cnvtW1z~-TL5!9XyMUEwWC5~9bi2Z3OzAv z+sHQ`YusL6+#y)&J~}~eZgsyAaGLL~@fTPt(RJ=T4}#$IOX6E*_aDDOAdhh{r?COP zu2WeM{_$JW7cuxBzd_EoX<<6r+ZC0OoZg4E(e#S(yHoJBn}W`=x)**OLJ(GG-5W@p zBOT`Tc%%@qvnJ{>(_$83;W1Tr&c2=(yR|sjc@xr3Y~OfP2F&e=N-Xiuo6WVzhLUOf_`gm3f z9!4W7_vx{n(1!EI>|E*Nwy#LSw>P`3njSIfmSsjo4G!h0lXgKM7QGqgN8e1G!F+`k zS1e4`uY7Hm$(vk=$obaRi?}JIRU-K02Tg@zT-#bjbo{_Z<6!VH8~s-)R^tUr162 zYu)N#2j|z{DzGJHfZ?|3elw1$rxk5yqXX@-84U0Pb2R1isENC*|L zmBy1N*&37(=`-lZcOSsfC`&r6qoX6s3hU8g6PE)l21Rx4+RWFls+BflNGN=Ds$Spb z+UT3x60e1iwg#Q^(iA%JXuNLm;RK7pccZK^9-BSu^PU;8-UpbaXeRaOKQCFm#?dT@ zP0(dYl3wEC9qs}8V02VO1Q98zRF_mRnUbQS&2YZv_R?@3WKKI*<@rY5hv&F>YG)<7 zOvTk~A=mN2gvU=~9Gsl=D{XGr3cCMzSmQXyn4_4$)eGG*5EFy24Q|i&rAg=#77G*? z7b_+5q$%pTIymg@FPFsNK?r?+-jmIbl;66yrP-2&J#L_JZBFm=J?oJ|2d+}*#etHB zeRM;GFazF{|f*SGPt*}p4}16IIMzctW2 z{L<%-CGxTsdMo99;rUCKUXhT+pnPUc7Z+m;pbG0eJz>=Z~OGJO`zS&I~%fPldAdtUPoe)uNV z1_o3`e75MV6wl{3PUA!m{=<&2-5jjKj541SZ+rVSJkJe|OrBa-Os85u^`c#GoUu34 z5|JCc<)oU;p!$al%`?;w98^dxv?*K+UMRV42P-kEe?y%c=3KRqlj5Czdaarc&AJ9o znRsTc+^FjD44j|KmD;Q0@+^1!u&-(YpKam=E(%^Nk^|oduLx8>eJ*`mu7Q&AtZM7( zV&UZEynQ=OI+Q{;yKRe(j*h9(YB;~79;=rk@{EGt&Y;*ppj8~_-uXUimWal2Vsi3@ z`FZJr%anZGk%l~-(M+3%o4vtq@b72R-K%oUx?*{)M>5UK%@>9Xv{?ut)R3Q%j(76s zWvk^V-we8AHCoKpYcr6EZze4xW1eRL8+pl56T_xIGC4Wf)+VzbIgZ7Q!?(VRuZOmm zXcZ+M);|4X6}C@fm<+0)s;FGu>#ejMZ_(2GK9F_MlF*RnfrNyy_nz6ix&Wn_L~gJ` z*Y8#Z1O$Lwd#KNG4;S5>Vqi_^aJbu%naSS`l|d>a>x5lbst0pmENLvvK{O`w(Qj1GVKXKd$S^qZuY`vA8m|oFqt$ydqO~Fjov%Z)AHUvZw zn(nzz3Z5`6SS%2T3Iu~Q0ip;G4DjzG=%a1|c@`vO5>O!cQ=x~?v5?ijor(~J_Y|+3 z0vvJ<9DLb=&?gn@D-=HrUSRaaLhL~5zy)UqkpQwf4mkL9vfflM+`VfSM2fN<*Ge$M z&sXw*KzRQBkT&`3FLs3PJpZ3Rjs{HUl_$JlLr2Bu(yqaQB>io2X@o3#Cu`kg5Y+Yd(<1vEY%Kh^4=Mk4&mQAp61dFdpFE*w>+@O9 zrF<(Cq-%Q^$y@r8f$zHTIVQrq#l8*>1XUw^$Ic^8@D`=ps={@Vy#A|ZC$|;_c`1Yi zyxWB~e*WN5hOE-#ZQoS7CSgrE|=*M@&4nKjbGO?L=c zVeNArx{vA4XuCbiq}R*ujmPD(E!(6dnN8emJMCo4=X2? ziR+prwqvp$%9DHs)I6R2Cnpvr1Ex!Oo1etF#Fj*?=L&VpqeW{(-jl+RB%|z3n1rKg zOYR1WYPJL1OyQi%apobO@c5yu`P8U6xqicWbh+1F=edh&%5SPeG;Uc=HxR35D@L8r z@>#;Htd=@sSV$A1CH8_8AsZoHTFYFAwwpCqnW_TcsV=FtW%hsRn4f%M8ZzWIUJvR5 zi;v^87c5BHjuLQQ?nBJ+{BtHXJ7SlNpC3mmH+A|lfLZgU_tm`V_wi>NWv434M~e;1 z&3m=x6H~p=`Q7Jk!P?C$K3zDo5+Nv5hvm60+*+p}eksbx=g4IaRt$UEs(xp$qAL=+ z#f^}Ua7@aj%wp%oOD>e%Sbc%Lr-5R>JVLIdLbZzxZU{Ke7U@?-Q=0Z^F=x0(T<{f!U`pXHuww9#Z5b+6ZlL{3BmBcz4VPXYr!R7A{>Ybd<#N1nIM7a46# z^JviPwDr)B#6jhxz6&nL^4OxwtVfaad*_mP^kU+74g9Yp_iQ>PZRA4vj)gLVe1=IN z%cVx}cZCNTjya=2crw-1HRRib1m0!3gLx@QQluw6UBx# z!$=n&Ma-6-&C{00cB{q5;vz7H+dOEH-UHEJ$$GT1_1BK>w&V^T7<4)ZQi8*yH^i`{!F<6xKXsL3t=lmWY zeZJOKU_pVktgKF>cM0eauzuMOKgV~&Oy@c^teOZ#Z8$j!Whsi7WicJy-EX+eg1GqO zR4!{ExX69qyj6o6?e0fw=UtWGHcp9q`_Spbp;EQWt1!){x?%*$%cBBWS9tJ;L)XqkTy5(HUvbnbEW%&nd)nUP`$8!Q8ICb>^8N zq&#L{T68B!zkjCp*}G{kYrCkMZ8;xPV(KGbS|F|$VB*#?O7${Euk&-PsST%)F{dYQ zV2PjBy3WbN8$@_ZH3B%YMi=UmOEHMB1-NSEfkLi>P)X zC&uLIZ9AxifsE&|Gr73BO3l$YvG!~JGE-3uEX!{^o`5E1qQ)sh2GIcDDRz`#Pov1C z&Q}8IT&Zvf`BpmcjsVBeQ#s_A*(6PU<$ak9H5S${n%w`z&=VdW@gAl6R+PH5!)o^kL|0^l<*GGbs3C8>MW4^MuKBGt#*v zMZHDink(lDom2bvi-f#AB$-P_&w^@6wzNp`Lt(HBaFzJwx3{bR48WF+9TjmiZz z(}S>+L-Pa^&2MgLpL`sD@T`S9@>~<9xmbvv6QwmShW3~jrahw!HDv58IMSgI<&;9H z;&YH=S?9m1mwE0)MDz&dS;BTwO4P4Ttoqclw78XQ%v{~0&rb;ni0&viwcMF$(5$_* zTr+1EmZU-Bs4n18(ZF?59yyx5j+fQXHs2wRk`d8jg4R06l?Pj6aEM#;w?&`p$zkZo zb}Lx4(SwYof^we-<09u0mXG7#ZBI?u(kmMwaJ6wHtLIv2A_-M zW0tyNpD|(dON?HwP9D_#c)%~(7}_l|Q+%e_VsbpE+`lE4nbCbu#lgwi-@0*YuJL$(JT1+vBcn4WI8oRm7Nrn| z&TydJ&;k)&`M8bU$jGRn!Mmi6>(1@8`b;Q=OipnsMeb#1c9_UsblnZwIX(D%Z;H>+ zzKfY1GSxGe&x{?CsFMMm95~M0Yk1P=FrOruZV@t%&Q=%A5fGW*(>9!#$l8mif1GGd z*;rq_5Gw?tGYh}ABa_r5YUU(RP0oDu!?ui%pRcrNFDsn*9Wo*%i&iSa4d{gUY z`h9xg%6j9y{Ea4!q6);0*UOpL^Ml&zl#GK#@vxN^SPy02MfBrjY~9v3Qpb?=V{xeW zp8l-GAvTdokt)r=2;a$3*3{b_$%afQiepiJbGGD|spR;v8f~!wjpZy+pww)MDg9&q7!@``A*_0>$q)n6m~(8py43Y`f-C? zCi{t{{PVS;-UHR9qr-yGi3!83FY&aG3B0C_CZ2UA3v}%?$n|e#lGeAz+t(bx-WKuQXCHnH@sL3n=~UTq<9AQgTqGS1 z+S=$kIy_QH25ZnlCZCVZR>o@SV|BHke2huh&00pj%h!L<=DPP-r zdHyoPvd-IEuh3#`w9q7>9pYda;YZm}3Ixc!c_5_pNSehLr$~`^QwRO_Y;`-ADmSY4F#-YR7YsiUi9T$xN^ zensU$@2DYEnCVt5-|%-{`f6qMO#-+$oTs8KPv!Q$E>nNN#uiIV_0wRFQX|3>cGSv} zkz~;BoSX%0^7bH8q&0M{%?CStSjyvV5=226rh99{ayR03t|e@-ZF%&@{k`Lj5x7y7 z#N2DK?YR776iU8_zM{(^N($3|-@!vIH`HHIeHXx{6_HJu~q@I-Xs&vq6$&tl)0~qe9Pm{2eOSG z>y29Kb<};Z#f~70o0B3A63Des2H$S;OMx+r7iiSE!j!!hMCt}$!l5i@6zd2Ea@8?H~RTu8HQ*Wy4vr5o0-{| zbW3XC!jI1sRO{>(*3XnBx^|6ep<*<0Y1E!IHmfR-+3T;QZ&{=|g(00yi4nY&$1Q>%Jp%UgHR@ zZ=(Bw`Og;HSkOtVR)~**1>2e&<)SQkd>B#23cJ#HDlK@v>kX}zQDav96Jm?#Xa>7c z_T>umMRqofZiD?LTSJehh0%kcnxU1LgUo_Lga~b!ZPOpVQ#En(%71=0APf z5emPuK3T&Qv;oqLZlepSW8ecqL647#+O6~zBkW_GODV`0BC7Rx58TQzefYae*7M6J z2&@Ilpg)1)?p&b0+nf@-{cIw?y;Q`r@+S_NRO40VD)al>Ny)28&02Yf7df2a`-{>h z31^O`>WyRgA_P<}t5u-r5<7i>$xJ7V1|C@Kp+Uyc%M-NXD9TSkidh z-=WyV_-s=N-FS1|x38~kfQUuA7~8`yDrdPgG^R|5k~xsf)KZPg{frQ`iwokl8j?I+ z4XvBr14i?pqi}xBiymadpxJ?hYPhjU%zE$b)sV> zTH1$HHoh6fr`jNeNt;YQ#)nBcW)E5R;OBW$us;6O9gwcw+cSGNXcgtMG(%`Ztt*#5t2nq&Wj!2($vqA-(G7Nm&}fcaFAxE!#}U9 zrK0k*EzHn+Z*G)M=J>wrN_v6yS3*&P2T3D^V_!_=;F1m1bf!oYjpLvQ(JO2~TwWff{w88=9+a`w!b;E8^s;1Vft?eE`0LQ zC%yJkau_RKRGY9)M4Zpp<)|(4sYk=NBTjlZ;R3I&%s6Bu9(_z2wLzvrYX*?{hOf5= z4h?yb+t(V&1I3A^AxwQk$E6xRGY5nSydvLX!x3x3tk?L%UPr-9B9?ED4|xcJTL&!$gqCM4QOYlmpSAax znAY`dCHO5ESpt0^dZ<`S0^Z#tZgjjHwWd}AKtN?XdGFfX^|q*M)#OYQ_FgYMdgeRA z(B;kxxd$mc@mnjEZ}iyL6fuz-rrwef1o^c#{nSjFCC4pY96Q9lujSTOgUy>gx4yGz zRaCT@R75_^%vsA(mQ@(Py#YiXb3IaY1~xpYorcc_GWcOrI}R7{O@IpN;i>*YckzFW@A9CPvibWc=;!vc|w zJv;~>f6+raQ>(tv<`X}{k~5tJx{;mf6`CVe|6W1{_KA(5A3IVFTX3dsnQv_ayMdNF zk*bK`HR6#Q_iMt-gKMxn$@>DW4Lh%lV|AB@-4c?ge^=grzg}dm6*eH#J{hm3N{Q8so)S=k8%^>w6?g&lxWz5lt1kKwKI}ql1b<%RJM7l28Q>ca7H9kP) z4=fFf+Dv->@Hsh1m&BiTn@$$rdvkS6gg)~9%*_lC8n5tRH=v+5UvNtiZ9^ojXxKF21$ z1N3^Hef@TCUILBkx*TpOafGPnXgxe7K0d$J)huwWvZlIPHif6}zMwUx#$z*^>*7zE zVYN5F+9#*_t-DI~ZmeCqxtHwWM3$-UKJ3C8rY-A4u$9o2){ZHytQd!HBI;}wFn ztP0kXzuLsgn!KNOy7~_${q+R5;|0CUT;4R?y99!kGFBn}FgfP2je3nu+-;EUtq_B_ zjEOq{*84nC{N{F>Fc120;HY##uR7N!e2cQfhl2nXyt}VZ#WCc~8k$lKAY?}iVGkZ3`#2r2VBQxrM-EN-4`%%u#;x6b8h3KHJkx!TIZ_fJg) zUOzRbN{6@Qg~^iz`KTvdqGRSquvAqw2T85bVgpOUtcph1;{6{9fad{CZr*cPt0wZ` z=wYelV9$;*)qo#K>!HFRMZ~&x+f-US^2OsEJes#4T%{{KMyTb>8!1VQ@=$pQg~rXs zxL^{OD*CV-p2MRs6dmu!oJ{fK&`cxP9KY>Dv4;cVgVvgdgIXd{B? z%9g+|VB?iQ%31Hg0lJU8iAwcb{RFPGmw1S)#u=YF1xE`;S!kyZaYs%+Qz6dVsMtV5 zOf0XxouK^5vz5g~CQHJbp0n+xw{JfJKwlw-nN5^{=_*DlbbWg}<2 zd7!1z!;n-&L|=g#nx~e95IxpG??Ze3L2E0ERpPS*&G50@2X2R%7GefvQ&Uq` zgX(ay+$Ku;}6T2$6RloAem=5;BOjFZMH3 z9MHD&d+4Msz=Qs#V6%iRV0!4VKw|TE@7~cf^zu#znNFKVVfzsB7Y}yU;_U0akKX0v zEL2TGtY^`DfmLzH1nNP zL~z5X1ne6~I~qFZF*R;$MkXe-a>@@Le1NajyUlmsK)-wJ{|d1xBPkj1ti$8{6)MJ( z%f1Fc>;`l(@V?xC@UH~!Mk-WxFTrsHNw1VBe6Ui!@g{-W+|%7Xd^2EpYio=1@yDS; z-NCLd>&^L|@yf}Q@5exto~@M)$6lflF-W-RJ1hoY0p+-l`Z0qALX{ZBKywYnppB1i z7M?4F0)^K~N9S|0kXz;(a$~Pj$GOfj+7lI^eU2KzG3W|wpo-rR^{#U)$G0GSOJsqV z1nmL(@yfqmxi~yN2S`)g+=G*o_3Amwl%PB{JUgg%_-0^eNX~8`n}l5%1L-Rs@Z-nW zar@Q)&Vrs}9N{qFvN;%L14OaL=5Xn3(8{Wjh$r zx0i!8)Snz5#4u~79|Dpmaw#)AJID)MOoTtm{Q3)s5IC!Z1;Rmn&2|i|DUIXV{j=J_ zQUfE%M*;1a2vo(XD1b(D+fku%e4{kcxDcAza&)T0;5#ok+KXMXQwr@_vhbEai`_*r zk zVN#1re5oAEAmx@|-3w;W7>*IWm-0ehA+~ULF(+lV@d8j9Wkd?hCL8CUgi!G>#t_-l z&fVUo5uB;lEuTGFeA^ul9jybo897BEdYg_;V(;KGQ_a z_=I;Jg!F@ib7JBzAK}|PU)U|pg?4`(i}Lg{hv^Mb8$Pc4JY|RGHtQrYBZFYYjLQ=r ziQGOHa`yGzx95=GWDw})a)#{-y+|G;_BuzU{~w}jlk`2-=WIWyMEj^^UYo-n{8mHZ(VVfO}ed@8C-3J)&|w;`x2{LNuYL`bNmFox5}#{Tp;nNAQ#WiU7&Kf0qI3sVC`Xg$*1AsIm{m9LSv(RgwM)1~#v zQ_c8zxVIToLocZgzOty8g*`S*b%}&hEt-Je;+_3;gAczxEn%(BOE$E`Gv23P#4L3W zTd1k2f%oCr*H`3~ps+l3NNW0j+qm#Mf_b7XAnin1R>U@>J@NG zotqcH+Rl6`z{4{%I?B(^z6x9(v?svmg<1k-w83i+RLsvE9gE;c>S1bX>RQ8raz57vNd>e7V^jGFlxpcZq0@@bogv%xTu`(9O570}VZ871L= zrQT&(E38&WSiVxuQaa>15hW$%&6_ugiKAj;={M$75>D$&fp!Tf7=xve3ExqJWSJpi#IgQ;NfP^>fUxK{Q8j4EKb zrA2bXAE>p!JH*Yz6i92oLEGuGznEj}wcZM*7?h)8@t5ZXtPri9TwGkj!opXm?u(r} z2F|6eE$7mVkIBSVOTaOv9D3)~t&R?F9XKoXs|`6y#?D6XBSGFW)eLDh>%2L9eEgvg zn+v__J#6}wB-@M>x7^~Rqe%uXm7TM4H8q_DH^ON`3d5MmL&~C+c_nl1+(j}!KR?-8 z1(h3ugP8HE=^Cenqn&9Eqq_SQhhUX}bvs#R7R)HIDmg4tH~kD%acVdkB23@3mHBUx zU{zZ0U7Cc=eKs3rVgiHp`uh5svk_H#*ZK{27hkwUs?;KHslL zafEt$xa$zn2tbD(^w~ZtSH0)atYQ*hk<0RkiLNbqXh!(J9R`Nr!(eg_H4*&rmjuVp zJNx$J3;O%}XGRzMGi1QhEmz99as9e1IeA`)UnSP`$&&%1Rt(*E|7hXI&4R?H_rJ2^ zcU3sZd(yO=98Qbhm;09`lwT(^TmW8gKo?hC6SIq4{c6MM&N_U-Z zWrVweGM!tA%^j97(<;*2?&j_#Vben?CkujgMkX|$3q}0^m@XneSxIc@Y%vbAwNT-b*56n1JI}+sEf6HcDMD_a#>e$1p!dBG z?+5z16DWjzoTQEnJ+;Hlu1(aaTOjnH*L+Tnc7V`>diet2vFcWZ2LJ<VF0@_b4o-4E$_l#%l4YtkZb?_pcpi_)exhl=DTqT zjS{10?_Zp=MWb%;*~Dvzg;ipm*QO>PO=G@#u${kh<=@lrh9*1!_&Ou&17KNq@7!r= zYYS!oQd3=gWTYebSewCdu1u;K+l1GbDdo|dA1-oiEe!{geab9QVI%mmI8U2#6VR)xDr`Nl8=K;V+cwpjq7I)CqbKRqpa>sG4M!l!{F7Af4>E8La?cLe9&xh#KdZ4IRoP#d5QH5>{v z$->GSI~JUJ-|1)B30xi0=eFdh`e^>`0MYkH}98wpZ`9`}eQMHj%l9 z(Lk*TdyzwQ!teoibOzb@GC2T8bT2-5%E5Qby^lQ0Sj~#BfOdi!zZ(GAXi9~f?`2F9pt^M z5X-8WKa|L84Tcc#B6%3-may|W@0=Hb+Nv0T4~O3enDKCb+1jeD2_ff13L^H-o;w#o zAT1^J>hx&P~kKe5E~=0f@eLLxFUtp+cTiX>6t>GHFGF8P0lc2!B(fPkwI zJaHWrkjDqI6k^7^Rg5Tb+Kt`4S4hAAI~e?eJCc9B#2P|;zuO9cY=TRdNUjirubVdw z3$)l4?Fh}7DcNw*xCB(l+h_U!#v(+uMS#5a%kxIyrA7RSn2PFf_ZuP(loC*(g4{r7 z=_?>CaW<74+&K#b9e|!`e;EBpRto9g_=itVsRDyw_tzV=kotebk|bXWD?u3mKqKML zWB2wsPCx!1ARf*aB2|@gJ>ZdcbS!Hf7XqF<2qe500S6trkF3BlsD`FQNtFaEOz8!|}x}00c8+Fu%Yz1q>cSK0dAl57~(jYC3yd zPJzO^=fBWq^xO#G=dE0*FkB4*kl!iRHG%&gN_;c7B*YWo_`hS#pF{dT{M#QxoRI(- zOB7g<&5G$gKEGl+H0QM-e0ZgI)aM@uQfmoA%E4d=1Y!qtoIid91O>^<%kKjsBl=Zg zD)83=aG*Uuj~|*3R`dMqY;OwR;+(bA@8fnxOH?>K>5HU>>06LV@%I zK!wcg>`SbU1hs4b#h+IIfy{FMiUtBT`08XWIT_hVt(*O(*Z$gCCjq~d;NQ!ez{+n zWHDn^_B8lS*-A;#l#1b{ckbLV0Qmx7`a6`T&}@&SP`glP9aK|P-NW}U!o#mdlvGcO zx3=Rbr--m=sjI17p%GDh-~#5jy}f;LFemtMcX#(=C}mViU-nBp!hzf#z5@9x6|-Ra zjmu2&Tg&bUj1gMH0PiyP2`~!wQ*{Z^(Hixh+W=mvd4r!IWxE2eMOiXf1ajyM*RY`T z?Kh<{l02@eLP2^k$CoFC=fQ>#U$66jxQ_vdWgskp+J1if{Op&OK;q8JV`Ds?7K5P9 zv@T86!!0%MUplwk(a}MBGSeCy4NHu$CEHOi#V4khEpP;vJ@U@QS}%3q(yi=*)N`r| z|H2FaeSk&jQ>LV(~%?s^NIIha<{b7O?7SknY*o2ZOj z`LIl=B-nWX!hzY6a9A2mhrAJ$@vN$CMu3^(mOuzP&|)RsfusUCd;UM9nv@qq$Q3+e zM@lZ!cCb+eARqdZNPU3i$E)mp0MNennvA}M-RixkmzS5C+Q7>o8fMqob|PS*2mDt5 z#@^;aMn=Y6eG5=AZERKmdT*})eM*@kK_(cS0sMRQkh`(5@!}-X&+jZ+TX?~BeWn#` zegJ15+=zmSSgub}S2$?^>~uYpSatla{t=@UwBz!xv}zszInBO*wc+Oqp<~%TRXG5| z-ysBDEw~N0FhufC=erYtPkr~`0PpNsP``Ee+q{NeY=avP%Ix0mZum#WAfhOGC1zkx zoqXp4tO3$tR7_)MI>bPi1a=901IUS(m=1ZYrg0Zgye+BXFLQAsu?F>?F5mmo0H>>= zZ((5($8Ol-RxIZSq-pksSw6Q_1N1BTCj}`P={S!5szTtN5B=?)zrG;G@vmgdFB$_8 z0Je+7F{(aDxH$Cne_3XH&x70B1!A4=2v-Cw%*D}?l(Mrb{(nZLGy;tq5_(Fxh`~2r zg3i?cXPbT_Lw^PEsp0 zY5?!%&Qs?8Npw8%0?jZ0TPL8i)%*`(g zXi51rDJv@jqj#XA#IZ?NAsI38DK0fD4g`>|ace+fpezdC&20yG+EBpnvDqscCl6W{ z!CSY!0LD-)4D6c#CG;xJDQxV6{N`Lqi5`*gA@@#NEjJyDcoWb@0*U}u%#T;-c~TLo09nN~S) z|GHul6B152af&FgCY>A{0Gl1AabHkSP(VOePxBuU6AZ^126n!9?yRyE8G&6>O};oJ zwr~#*)l?u@J?T6IExM5F%Jr*P#lF(DW&_6g>MH=g1x;E4K7ZC>mg~3G)1xqp)C+$I zLM2KG^nziIfQ>%gX+?S-50CJsphi&p9N}Bt!p=^v9OY!I{`6N>Rc?D5bE3z)j~N&k zT5YK!1qJE$Eamsc_)>0?0#RNEn6183#c>!HyOz!0v^I))0gM)Cuy+k?*m9PJV^<tMulCcppc&-At!fR`OH~bt0#gHv75M$o@{P@8QVcf&Z;BU8br=v1cnS4 zm0)Xv3O`RKM#lEGwj97?46)HR0+0w$ND)ZZV24-kBfxNHD3($1^Ye>}HiBAdRqp)g z8Y4G#gHk*pwv+`?j+B(wXpW?Ae^GBYz( ze#n!at^+PE$NjBETH`bxvVyYgORv!2p4I{iM(TtlAjz6g>PIwi7}0xV`-Pgzw6^R2 ztmebYBPMND(-;sSN*QT;xsh`bw? zJ3oH>05C+Q2T()V`G96po{UULSX^A(dyhvGU@Z^MwU`S2>r6J=4XA!W=kF@9a`5k7 zfR&Q(0#5!b0P@cj0X3@+*&0kfm{(+2t5v9+#24y)#sfzHU@t0U$;p{hoc^z@2C}Xd z`vwp&Ou$~FaIHC625YeQt0zBlbKJhM=H0tu zy$a@W=i2VJHh&wxSl&akhm1a8@8irqZHPrrBCjqz<_51-bUTAvx=E(AE}um&NC|n70Ko+hdu+}FX0hw% zG65_s0QaMAiH`aqThUatgM=h%EL+S2SP(Y62s+Dq()U2- z1uFBs7Qd7fW6)wsHaxIo)rxt1!;1RcDs9w#!1H9{T%&M<+lUG=S3dpvz;bw|LvQ7? zO?m!o$W5V<>FE=&rwpYS`E7NTUEbgHA{(9$h@lQ6J^$DmomnovT0psZ~Io9YSTCsGn*4SGn4u4vO2Z7u_-8==hX65)+ zZRU< z-t6I@mXwy3FDTNh2nr2_I?SA90z1>BW0}-)!lO<40OO*Ln*89$SV(_e5?99vnxQx}_hy`JPrW~;# z(fXV5u$w|pJ^|_`At9?6su3R|HOumL_bxvdOz?CoEZ}eIfYhe;H9r1&sLwmFFYaG@ zQP7Kpl|T*OIa>lOG;@v=Kj=e7db;=SSG-dBexKinMCy6A`$X`E)xQCoNCIBY)cE+N zt@ZV^@Hj07r9_QlgPPy8%fKpHg2)TBF|Bbu^PiFx_CTg2ZJq6_LD@~BM@L727aZ)d z%!JNJ+6W81vdK*@Yz@=YxGSzV00v)nn)%qX%X~z(Zi$9>oztOponC<{x?#v+AD=AgeEXj$Qg9L)%5e`dktQE4pz!`3&T>7V+P3<)x77Uu3OE(31 z03-*ym}$}06V(pR&OEDFh<@MbsR(q7rtddV1_l@idid9VGVL&sG9QUFk^OCx<3fZ5 zLd<)UL0Fh-9(UvX-*!X_Kfpxn0#t;AuL@N7fXrk2x3`|w+Hck{0HO8j+}A-P8bb-` zll*T=fxt)XyJkByoyfa$zLS7(r*HUi9>Vg^V&nfMK@TEK3y4dw|FsjCC|u_3`oH9vOdL z+GnXGK>gm={Q&x0-63Vg6p?zMH314$)$T0~#Z8NPY+nk?b~8hYSNeoXpN?ojYfFn_ zB9B~xb-MS_KG?1viDLD3{u`e5sdk_Gx~Hl1&jZu5DKXZuK)f*!2)R{NJK-({Xo*)J zO!fe?qeW8dvK&jxVBfd6vpT7tP!P!G|0xMOQ4i;5W$hjv1@Prvr>(#v1?!^s`?@`z zm_=a8c=BW(Fb+Tn1@Dy}5HkPt#($@s?w|FH1}nl>Uw%_X*%x@(*py}!dM#Atz#|ZT zvqc^JM8KZ`*s+a`4T39Is0E#K11fvm_CTwEcj@|70AIzu3=Ad!4b`$be`-R3dTxa; zs9f~FOgWM&jw{#)C?+;)Rg!XdS`Fmv`|->Mt%08?I@N_oAcpzF&9+`(A(22il_qhVJ4 zz=^XwS`vi`cWQtQeA{YW$DP{esbC?w;4*y5t|)XoG1-B&fzGwd2j`jDF!z3DNZyVnAfA$FOME)z@2!Pkgle{Pru5 zC8cmeuS9Dre5Bp3c{A;O&;$B4z~GE!Q)-Ebh?vr$6vM>lfKYxb2=IL3#ZX{XV91K) za80@Iklt=wWp|U5Zh@!(Z0NcU9uiVnsK;3lLFD1-S*%-5-<1i~kTx)DPtLvWVHkTE zeX7^wn}Qbd=bHIXDeE*doTe<$ym|IYdg=L|S+?oPHEgg1T_nk}fBcWl%>wnDus!xa zQE@X6pm=#TZ8RUMo^EtwEXu#Biji!mLVC<6fV8P5ht?(uw?;^BlK96)MMn>Thy@OW zIuKtVO90Q`5r}BHQta9^2Z4ois-F5BK;f~8w~=vl9chVDmuCg;FsqdUPOq~<#;OP{ zmp2zYnWY6nH_&tCy?EIoIT5Zjx*kmTSNiV^sjtlvQ05>KXP70D#ftWUhU8EDtiD+u6z?y?&jMwC}qZCi_W}$P+O&nWD??kmQQp zkxJ|&b>7bf-CL;)&z$Tr=jFu!Z=(DZDhD*tSkKe;KuqMmj~qlta!7e z`tghr;merY2xgGJKp?adn*gRDeGWYG1UNed`%Kicidq1}`JJZ<2*vX_U=^~F9)K9P zWZ6TYYoQw>`N`3G4ZP^6qlY^{5`B_D{Uk}i=?VCXeTQxN_z}A}DC3I1PabUS2-rlL zWE=3@6+;7qDKKyTJ3zZ@BLAh`t)R?7BM7V>U}=+lVCDnQf5`(+1ppHn8XQb1;Fx*m zc90=Rsq)Vq-QBC>;=Oz!z z-vXe}#>U3omK%WtH&u@%-$>)>+2o@hSIR}9D{WbNJNU+~@FtP9>--C2XgKjf4fQiU z7Y$LD3T@})8-!_TU%Yv1RPVXLq8giky`S*Z$?4*iE7{b$E9Je^ z?A|HB=r}t&3wnQMesGP97QY@y0m$x<9W=4ZTM%trSIt&4av)Sty4QoLcEnlN_ z4!Nd#1`qEKU(rpocLC9zW8CQ7c@2RC!X^+H$f>BPfE6M~^w9@D zD*NLf|J`3@QR=yEwNCg}?fW!9#_N9iBI;kt(V$HO&Rb0&+5ihD0Kyj2hyN_+pFRSF z>Ip!glECi@N}}~pZkp?+|3by}-xBd}p%JhW0jWR%P1CEe%2FglIWMZs@o`7TNkcZs z|A&bAYn~pS@z=ElISF9-$d7%F&dyu$oR3>3sXJBq^v_AcID|VYqki z-u?U4N=bY_CD8w&K`OuhWHl=+E-ns=N9-T6=3gqxDG3X1(W&I@=kK5NkAF^mQt|U{ zn+8|8ojyM0uP*twA@09uAgA)r-pHuqa|IOe2 z_lHObL0tIRGC?34H-PYej}Mq=zJZ5~{rcR$F8i;s{Po&5F|-r#Q2-1C{0uW43@I9R zxFLTG_^*S&U^+0?FyO|0TILrV99)*091mDjkdIa;YBDAs@`7%MI225Fp;i$(h?FJz zE&+wrR{)%|%=+~R2@z#xT@61zTm&5Mv+8P*KQ*0y(uN%=$2U)V9e>2cfdEsAumkflZP$!_9-a$UYj!{EB+nqqi zAP629cK$Mjq?FYEL)v%8Q{DgXS9g1vsi-5nL6ns;N=AxA3yCr-t2B%wD#}Vic2N{6 zqeDoEh8dEPEoC*3l@l_4*ZUl#?z+F<-|zSNfrazuBGBmU*|X@R5JX7#8}8jJ0zCjvpnefPkW%On*x)q!6w>&qQ>U_aq6^#i z;^I7mK)CJRFx@?Tio5(hG$p3@C0`D)malK2F}A1LDuh<9`~*DTqY7UW`pbV16@0ia z(<}hui0%HWRjXVXIHPQb@s@mid;k{%J@)?EIn_be1Z3$=--kn$`c8MEqdi{?|M(u* z(4nHL%3HJn)HE)_&)4_f{shPGUk_?T552K&=B6C~@B$nOK-Q*O^Tj>kkimgPxFP2h zcIIex;+;IS&cHB2oxP~k>D{lRp74to#53SpMo~~c}AYoazvbdSyFYUmwQWPem zi}Mz5zYiUnWz~bjZgaq|BcE+sHs%>`K(-_^V6Q>}czXNRU{en^q3wJ}^))uf%lwAU z%2&xDBF-IzSQwJ7zP!EP<1nxm?CVS1KyPE?>TkiCVhan5fz7>xWU9R-1HE!5|Vkv{{7{ zIy4K#8*>X4c9vGaYzes;&!{4-F5)L$J~2>ktY{HwWfhxN!efyDwc? zf_`a+%Av8#oOTgVWyO}c^X9dc-}TE*Skd)+hY@;02F2Rj%dp`MwFK&4tDTZJ=l6R! zQ%35o48tXeL8bs{+KibqFI~Fy!fx}s|5|bj4arZj!238g@2q?0?&cP=_x?U8zlEOJ zZ4MjXx&G9CC!|ojDz~ND5M5zp^l9?Hmwu+yUwn+#1NmM31mKX>vD~BU!i5ViU5vmD z(CkL(MH-jbXysU21~xS{9o5!t`jlB0kbNv=pTX zpGV_bg!8H-?Uq1NnNE;Yxjf~h^N$9~K>7|LX3&bZS`h#SvyKR9vum#5Iq|vl4yx;L z8S*|NFlORI#sFt?ICaXTkNy>g9-213N%iT|RAH0#e01xAVY+wSRQ~a0QjR+JPco~m zh*|sF3&ExSKmFST0{kB@@tbrjbMQnNSDIPy@LW3=t1qCfCf-{Kqw03^GOx9ro+LoxzUM*OUEYrS@ z)P~h3dtK^Go8PY9$(yQt&8!$}Hs=3Al5`9*0G$a?hF%f?j$wLb*c2ALn=>V0_(V;u zbeqn1<>lpI>3nv8Ul1r@edL!z5M-G{J@edWT`Y)H^0JTNW?>gUa&=8d{`z3=o8V%~ zc_|L>pG{SyfaFo!`R?Y(XM~Wh-_MeL3yZ6I#J005iycnI)aT^CbkFlKV_;go99pZP z<37vY|6LzQw}8+tjdWD|4X%z*j8&GEm91(X{&GK|`9M)g%=v%@+a@nJx7q6I>c>=3 zIbP)0Wk>5H%P~7+lZ#oDv<-DfIM{5voiGBDu}nTWV{z}p)9>$g-}mt7!|IJH4eRR~ z{fr^tLjpD}T)1{$?2_bYsB`5EmDlMcSJt;iPP7JO$T)E<)2OuoP8t|sbhG%Q2+ z^9hB9yQK%!s1Sq%4V$sCNt|d@NTYtk_=DBMpnCfswH9MuAWS>bMXDg=(cJaexin+c zE_G$Gs25(B>cv_U80ZtJ@sChh2IPhR>{Yyvt_Q{qn=va$H;-UL4f4v^=tBo%@9kC0 z=H}s{^_7iSvD`d-U|GMhbbiU6(sRJ7s;t1)NxC{A5*FL}HNl)|ULFZ*5Lg0^JK{wsBMGvlikINe0F6Ze#I(|!++*%a+v76Z6dQmcWGExf#B_G$Z0%9UBA_`(k$8I=&P_IP_8%pMJ$4 zr0kd~u%l(=+zy|RRDCj#yZmF=GkUfXnC?;SKXVx; zi)bda&7-kkMhOC{G*oIXv{$0=?I=bmEdWe8ed5HemHN^$Ffp#2`$RDq-QsQVQWq`* z)SKh1wD(vI&xYggpTSN!ck$XGxL!I2 z*RV1%`J_IPIVQmOmFm`N9IV4#N!s|(c5#9IAN!DWUGEfI1x%0j2${xB=Gdx#pe>9_ zL8Yb(te$BwYXl}Yyg4&wJcs5k;@$BxXY`=o++kshUE0KZ4 z$dFs5%qccMZSB>`K)S0LHw_0VJ6+%K1e!9f(`2S zHg@cjjL@A!7&XXp^`YzQX^7#SqK&bQ{f`y`J7k)iev~1P6OTe4ys2@##SyoP$S4&* z{u!r_OwrPKP~!*7?Dgw{XM3if6FlNgBFu%X<*_EP_$o(ENuD)j#Y!#gHT8@Ly0$8b z$i`~zUwdvV^1Ua-ZIGUu@Zra|+SI)4rK6SbX_aAuyNjpKngv9?arNpiASH{tTYowd zCLvaQRA7ND*GH< z4^Vg0Q|k1fXNUKd%}iqdi7JDRcpoSAT*ra{^#y8pqC?O#EocR4#`WCWJ|Z-~B_YOt zpQLkz@VT9Hxa3St@2fZfKOMG%9!T>=wrp59&gQJD(k@~rn!=l9d!49XXGnYWyyLXp zCUSlXm&EMm3`S-aOTI3KTUpb5&RNe}Y{lw-bI6eCbqUX%pw+v=c2CVdcFnqE`+cS6 zDT<9!ZnJh3?9F3dq5FdGylpvkkJ;1IeQ~o#zlVR{U>a0p>3gHP`A0_Yu=J0v!q*v_ zHvQ;1`R;pL`}{Z(S;FewbswJ(Wc%C;|G1DvsP7HixlYAxxF^n}EY2OlR`HmU+twEl z5Flau>raT^6JI|56VabHY<@J$kU=)rz}qoUhH3VdV+s<7^+tBwdlt)?Lz3JYuX5v) zWU7rI^^=X?rfJVLyz=-9L!bJt7HM;(R3vieS;dQvv=>_qet&nwk2n5 zZe}c8HSO-SB*!J>y7_7Rrz0Bb!YHn9K5xADwxR+>q-}c@W$DtTK_A;xID&Rh*PLN8 zEJA&>)LQL}LS~wbA;YaQt3Bk7whgjdSuPSi`}W+z!Nct*M4Lm( z-5pPo$1mJMN!-q!;CbuY4&pbpwY3YS%cp6X7|oje(N7I2t}7M9mb|@OwrPFWY{~jl zETRld8gG`6XL~tPl;tkVxa@S+C~E3e`*Ik~2V-KG_E9~CAdjKsh&CN!}#vlc361+Fdkg3hpB<_g!G1e)r zb0x zNP5n>l^cTkA`RM~x2r5VOuda8r9Wg`#Dyy|ntyw5NdimBUF)cf8;3NCOxn5Ticfl{ zlm5+%;`;3HPNr>(g8E)oHJJp-r2xjMb-4bJ~MZc|6_rFW0NUbwTbPzJe)P z1UK_pEwd^T!%p6H{4eq6msQT*cpx9Vk6o5gP!PIIe>lWg?~i0R#LJt9KZ{+K>0gH1 zKS)(r(WNY&Lz?DlHy}(5z&)2`f@JP;7lxG!Qzwn&^K$oAv6E-cU-AGXdz;SuMT-^z zgLy@npJkoSRS zG0a`qR#Pye#ET7dV2Z=0RovV!YRX+Gu6taxF(553Rr}%YFhZA)#IT)eU$uJmy|}oz z`1p7Dj^#FWTqcFkMo?0o=rZ=6ZgK{RN%adKQgC=>mhg06B{#(sV$Nta=nPFQnq6;H zm9eUQ&Oukq?V7!&W|Mb<&?cdh{qNN-37L11%R2shXOaAZMErf-ep@ zEA-D{V9=)+DAu=7avRQMi4A{!()qfeUe#X-LiVN13OB?wDF~ZAeI%xJPdo6=ji5HdCo1S^giPeMOy{%8P$h!% zdL-lgeJ~n5lg7 z7yAX7xSG!hQlg(1AA40z+Jxttkzd7=BG^-l%0XeSf7@_hbmp+t+QI@S70k-tWPwY)--862??NqTC;lDRl zEz{6lW-3)J>?zYKOQ?O6eoPtuY&Gh>ExT%~eHrF7v07qr*qKf0tqwy8*xK64U(Ry! zYkRwSbseiyHIiaDwDSJfC!YNXYHF~;DI_4HWYiiP z8_{jht}a|5yWi!!q}pZCB^kB4Ai{&%I6CX0QIVnwq9b7YxyCGEINE7YpyZvyY9&ik z$X8FxQgXj1eQ|hPqI!E?S}H1lMVyD*hfod0jo(1K_qH&IK6+9uG|!EEOC43ns@i&F z$;1MCx9Vh>nqI&HWE=}xC*cf_dnn8!kEQ%Rzur5EqCXlVS z6$DNjmUYQmP*~N~$zAkmTFSCbv%Zp`XjIW-~(UDGr;bNzeUNG@_E+Qzep>QC< zp4Q&mWp5p-<}TA}`Ay(c)$Wf@4b3BNwsr+VsctQZImquD87ylUVPV34dbs`hN3C|d z-B0K<7VG4k`-_(@B^+W}S}UDq@%dl7W-A?rlS5iRenj0+o5vN3a(>4SPj~nHf`WN( z3S&!%Z`d>vRWGpfI-`^jju(M}VcohDJR<7?akz09SB%U6$- zzEq`r#F;>gZf%<$hJFu+jVKGn2+#Gzi4)wc?#o5Ko~gf9W%xN~X0^M_2(>6(4z!sm zzP?3;%ZV7qq4Ros^a=D6vxF={)>On+rQcp+W!b6KUed{LL+qdP)>3z|1V@jo{n%%} zW5TM7FDt1mf#-eSMT-jBIDNu-@U$HZI{hjpmy1@{q zNkGd)eLWp75__onwsll3b9936KUvuf2&@`2uS8uRdj8vrIEGu6kYg^oHxtNc`x=;5 z1jX!oW}WodJcbxwwyWfj9Ij-OhS!q08EIQ|vNX@YHXQ3Rb?3;TF=+X3J3W?UBga~;NVLGp1m$$ZW7t}-btEMv zxz1mjXkNYEF2z+`1(`-PWI*3Lb5`*uiv-)jaUug3$-{>aBO6V;VqgSf`iW0W>9{63$mNo_%0l@tgT{#; znAnbSg>x1V-zS}&#kr!8K5hWI#$eKQ17`LLUa8r39`16RgMjxiJbvBJ@FZ>>R`Yef zD$JQX@c|P9k83W|kcQW8Rr!}8yd8I!khfV4;%$o1aNzh~1G2H>HDkqC=(MMa)$h#% zeiiaB>&J#{Ua_B#7IU+tGf`j~VAlx`l_OeyLMAZ$p!Q3Sj|=qo@2fKO)~>8!@vxAX zJJ54tXzGjkNdkLas{M#>Zlw~V$Ngab@=N4>?(56Jk%MNS<>6r215=V0nj8U;2s_gY9D_5wm>z*}Rv@mQB z)1=9$b9}dI#G5(s{E7jPaa_`swfTB|HgnFLaP&?+f_zX4ad3o&hZ9jCX(KRtH6B$} zRRyLXL35Auxd^XO9~f4^S3e6vC`ie;cW?ExGoXRtR3wBjKx()K4{-x^5T4m(_*;a* z)!edx0U$)%+?SyPWmV$8Sbkj(&k#l(TEEXIV=x4 zBL4B0d#iRwEt9fVh?g|*&Ld+hfvA=7pw7okL&YCYIx{v23k$;}2Tb`)cKW$L5BBG3 z>)ho99)*aRx|fz}t}AE&z3i|NkzwnCsrFB?)ZP#`+lK{3aV>M(No#9}b$FxR`}_MN zr^PELY-VaN;%Af<6+1xi#ybvXfPfvynId57U|0+%LRNI17s9Iy(2eDu<{phDj4;?* z2y%R@EIf{|7HozRlj_0?p$5zscODmC6;%lqzY``eJm2_7jdP{46Mn2sZEwibmtC~GSu+qZ?xWCd5Zob{G- zKuj-I2YlE1USA!G$q0KbN5}B#So6$7&!?s7-F`IX2ji5UmZtuHT$cV;#L~8c8Isw& zb8oyqrfKAkVY_e7p7g;l_wDTLa?}eX%&XquX@&7)mnDv`%aby&w@5#WZIyOsZW8J; zedVYLvMUmklJM@KEKCJaj|C!qz&~^3V8G71il% zjXLwTBvBfU6>4>?ek)I1xUX_DASO1pz5H(3y}kFddQh@u#p;agdL{U*nzXLh5t@VM zK?rwWRW(^{x`fh3`rDhW`*lxbW9`Z+Ly03PL#;birq)wKqMY?vs&LyUvq$H_q4V4L z6TR%5r-lSSg_wuiqz>oMF-Uivvkmd_S%)Fmy+!GtlkJrD<7GU`&KQTf*VGlW)`xd6 zapELHTc*-0B$?GfeY6Y5^)3JbG*-`!J@rywK9p&)K6=e>dC=}!y>jJMxk%=u4)nb9 z`XDw6f$tQrMWJS$ek~E_h(A}n9euxDuzC4HNkO{rlO8N2Fi_ zF?1@tyeZAyo9*sRB*PdjSz4-KGMj-x?)dw2TCylW?Cl@>m=1AHzlE=Dst#mAJkk~D^x#k+fY`h9o%QDo)F zBl|5dbLdX@Jt?YIO2fCj4;*B03pw7L!m_E@FCzjk?>^RQ@y_n!4er2Ke)0>>#NIjk z^A0ENv-AnH@2<+a-I4|jhkNXw-nnyU{RN5Tf1Y&X%u(EW%)6U=kNHxR=NM!Jfj-1- z_4HV`nK`a#5M1JPP6P<=cNR&<*h7VN^ZjyOL+{mkwjVA+X@o3?_V#vgVd8*?zd?~P zAW8eJDQ3RYSn>q`B=^W8R|-)c@BQTRcB}rx02AZ~9kysjUT)@bo8jX$bYp1CZ}@1^ z?GrGAJx+yNAFFm_F-ZS7{mgfRAq-|k$s2$^TQBxc25Af$ZeY#oIYJF|8aA^U#Ht)C zN1zCalT%o<5EgnEEG5z0X)g<$KC^PXx9!mIz>2XpB#JiiK`wlBfM5i>nRo%V-piu*pVvO zULW1w4h2gm{4Q~3ZA+i9FIwb({kk+(HFUtLYx0!OEs&V;+jyaa`t!=-)1MbHxXGi| zkeIPwo_h!DqD3IMNeEZHeVdn?yD_;^FG<4MZMcfZCi(GWdvxJ!>Q1;;)uMr+ReNyl zvzejOdQ%F1jzp}&i*5I8Wvm-IxAK&hpV98)e7uQS;NF^hpbt~HDzdZxy0o2U)@6(! z_V>@Bq*VYa;?}eMqqYva!YsW*Y21gj@ zvFp9 z0P0WAD_7VW9?}TEsQ6n8B&r0b6y`ssml(vnM#*(-Ed~;+?wsHx1@r^*R)Y=kR|jDv z)aX^&hUw9cW9SIqzqOB6xStI7c9MhMP2(!tt6?hZL- z?EPXz1i$%M%|C9PBS{>Iu+zb#E)Nn{yh}drtF{D8#mZcrleopH2(@eMeGubg1a=N7 zqSZjnSM9m~)jZ~3kdg-kig|tO=}-x@DzbOprC5aK%~yKORFR<1xq%v#%5&)wa374k z9t3JSAn0}zo6@=gw!7Mtk9aza91RbT`q>#D9G*{Z&hxRBdN#9Y@&!n-k-t4@ci)T( zN_;VK0^JgwIg8EuzWw_>jZ3TvCTt{Vsf{%YC!yd4 zjpcLLXj|=5vW=~6KXHg`4?u2dS(%r#;k!fUOqzF&Z8e4r8Ye0I`BCq;=P{FUqX^J^ zf;K^#V1%NzH6-?@poVVF_cLy1q8#q;`T&Bq$5y&^QyNB=`t6(0P~zNRL|eaclgT-w zkfNfdwn$~GxhbSk23yQ;!>xHAUpxrSba0|-`BWr)h!Q?xxH5JrkQmqTi#xlP<5Nhcx2$ zw$4(Rid8sj-zu&S?3xyVOhbc}nLD>_bMy8t&d=9QG1rb1aQcmZn)tF0fsBUUCPqC> z*g!va+fEA~LJMkwH~3|VFY#8Dt#5-zY7H`{8}d0PwI9UCHqLKQgc4K-B1eMuAV@!V>pgc>mgSx6@;#D@&mjc>O(q*RSN6J1wgd(SnPw7o}e zpXjrq1=!`CP2iHmIhii#)++h`+E*RYnDhVuFLaheJhmo@zdf>A+@ee2&t~GUFRUwI=9%gH{jhY-yN^2WNnv3jG%2MuFQh;k zqe`(ym@l^UgEsZ2bK}LZA(TT3j$U6}#)!wTL9$Ieku(3!&duEI#rXN7ux~QR4IM|GJ47higXq42y~vlqH%Dpd@7-(sZYP%QTrZCAQ1=uZWaez{ zwuQ#I4)hBEgNOL{cVw$Qd#>4r1O%LE@{-h}&iG>JedLhd$=u~OZbfLscWVw;zz~Wq z0b+CswX)Mt6K5cM%^~Na3sL`Z53NUcg_y-Q)dTND4tAm5kI`e~sMaVCJenVA{PA~5YC{c$bN$Jr3-F)Sk& z)-t`d{qW)}s#2TvGQ(q3r1Xe;|1nMA<#*)mtGD(au zq#^XkaGk~{I)25{GB#4Vsj4?NCPzdxzTK~1R8YVnYI0dO6QQ@n(dA;O0a*sNG%xdU zx}1vkpull#y2>v10TCWU8cXmgPxk2P5j8SXD$3BFS8EdThUZ_^bTITDF!!!{0r!jM z7x#mUYUvCW?Xf@-Kxb2a9o>mMV9ZAI;{Mm0zjDRx?EU&@fjra|m6RMu20k_(MLt!T zVet){cdHUQ2z4W26yz=<4p^uN3Vgc)#2jSpX3try>+LF5?D4`>G!-+=xx$TP+lR$u%8ToRD z+c6@&6JDr(1g)SM+g_K}TOgdt3Ps)yVX$gA`+KoL8hFv$x3eC9?*s2JJlyHDI9wLP z9FdCf%y_9rla}6TijPFlP5^tBn12IC_`kQ|WDUx4d z=1!R?K(RwL`sGKHpTd~Lutek;00H^{^mfCfJ;0#-M5vOP?}Y$le2(C>iGI9ZtFuL} z$!-2G=q@dH$PR=rb8tfshP@Akv=SNT42 z%8SW(g4i5`2$L{Wui_ASMU*(E#B0u_Pq$w$gub!wIT$%?e((-!t^tG9(anVPW`^wC z70dpBJ>H7bzW9V7@%mV~F^+!u@~ddaNj^x~>K`)xkz-Tkmye_G_;(-wPdBW2+KZZW z+Fx^wIqhG0?)W53MSz3bUnbrTz!A}(66(^J@?ip){lq2r;%N`TgQoL>a^;!wRF|K) zXbhc<{m}p7N&V%v)MCsM(LEFtY)67b#p0056K!)m_I6HB_Ylu<&{ym7m_L-6Jcv!m zVZgerrjxGh!iF&RSkDb(suAVJ*mMD=!LKYO-<}v)@1BJaU=?HK0l+4$x&}=%22ysF zH)D>V_lfdfnpDi=Ep3n$hQc0XpQ5s|XA#@t#g*mdZvI3T2r3g#&mAf%ID+7^RT9eV z12#Lh{Pye_v4!R>oS29#9wCMK`Kts4W8>qo;#}2|Fes+i+@~SNAcEVXqSop@+Le-e zy@MjgvFS|g=~UM8BXS4!uewNQmN1P71k`?L3?ny5T&cXhO_2Me?Nhyhhq1A-&pFfF zGn47<203e%BA}7DCwFfCHfm-!YN;BrOl%(~()lYj0hvI*`ge4>- zHf=hPLdhcSNP-Nn&2m-D#E?i8yE!&VFKl3Asm>a!6=*5w+LkfW;PTjO6>>-3=%gB(4|`BOf+);{p2Lf5+N{r z_^|wuuQKy3W7M9g-j*WSC5Ep_*%G*lh!`3kVEU50y|;xPbx~R2JyjWYuC( zn&xrxf-`h(ta=(-a3V`W#CCSNJwyx!Zv~D#NY!e+YuK(a_2-h;O5<3^YMH2#5LGp` z4#zZPwrFrg)Mh8P4_#gBSGb+Xt3-PCgB6RYVR?0O=cvV2dNt_iW zP4Zs1B@@6uDKXJDMc~K;+^qOSsT!Oa!Du)!wAB*wLG3jI`!oX+lo{l^(u8ELV*@Y5 z5%YKH#I`CVI#99qq*>{P0TwXLBj)E{SB{Gm886NriK(c=(hxJTG+bT2rLq}%b=VYg zol;%bqCSUd6HGN1i!dTBYCU;bGHs3l@VE0PSER#Eo4Ey!!jneMp2R8+@;9 z8KI37E81t|kTxw#P|2NGa3**VDLr`n4NBrl_b$EoL!v4L5EG)oK}d z-_f?V?)e`-rpKIU-Zhs2#1~ZU*4AFi#Kgs21Pq-uh^OGGxO;KaI2CbB~)*2ROG zhtG)^wo_hqhn!kAN$x(0-H_LiCmNebuGNZ(i+c)E(YU?(CsjBI&Ft;yXbwvB&6|fn zELvBm2GfTe53BfRLAodyD<7?qH2w;Vl3cJ}LuKZ*#*UXshbRi5@kJ%-@z0ZPo>VNE z-nsCTJOhspJtzmo6y0~|gP=S@r#qvF1|N$;%%}bo;7pJ)7uMdQYsXEEj9dl_FI^{; zLe1B(j%Sal(I?SQ;;F=S5NoxcAC{VlwYo{RC@w!BcVfpGzwYvH%)Ze!(j;~05}28p z?Qz!IwBYC~l-#o+dVX;ie-Xz{j18}Vt0(MnVq6lE8V%HTn1pQGxHb-* z>%WtW6Su-H#O0mKGjiG6yL03Qw(Jv+9C3tBc4GSOliLEbP2JsHJMEi|^KE1TLmw^E zI%r0yJ|$BLrPMg#$1ZdWxd>-L8Kc>nbG!Evhh^TYSH~zU?5o2%d_-*%875i*AT>({ z&i5@);L5>T7@{Q)gC2|PC+zD5%{bZJjcteQZw;`DtbwT-o%B*aBi;iu;|9X;Rt zC$YQPS2S+Q#~L^4BSaF@sHM8Ie7(Te^OMv}v{Ke<)_i8zU3PWLlHdcq5ay)LFgq4il~1Nfq3r zUK*{bSZh4-Q-n8z;0)=#%&~oT{-mcn>37}W5TQxW#&)1T{n8|g`qy4y;k@o&1YopB zM*DaGy<9iwjVD3!kkESH7Cs-;v-na?VwG@^n~)tJGVEF$9oBdIIb6y6o)GrBxPr3 zi;IgJ5GVn9s!7uKrO&a%OL_je6L~8ppQiPGfxZ_yIqt?h)G?V6yuvt2!W0SQ;0cV$ z1=S>{qS?DwZqL)k?)Cd48P~)S^te}(_$p@4JSn||{jx%9))2h_2HF1ifR`=S=OEk; zW#Z4>k#~all-jjKXN+zc8C%|ouJiu}QR8C#n)sT*xl2L?@GFtOLC^1hy(Ui+<59&{ z(nPp}ejhuiIF^YWd4pC{mb`^U2OMj{hQ$z@A<2$m*@hJroKn_^POr}sg#E1Phrb4ls%@%?*uCpwgjx<>AT&U~e=2bfb`3coFZA!R8Rag% zO1%>Yd7Vj+MDlrTte^?$o|*NWWNu(5m}VwfaA@OPOvf+h^YW#(E~x%QdavFpVNT4r zl?^pRe?#Ez@dnOhOh*igqYwGX-#&4TKxHUqppH{&`mH(;&dplT)A~U7Os{q17oAWK ziZWHC+I4(+qob>~cU7!q1U5E%I94XWBK#h^`8RR32iZ<+pZbw>yOy;{MlNyLUyHF z>XIM)?$M_Mo%92>-GqkWtqkWy**-(t#&z)Ks=F1J$@BgCN zVatNl@AifJ`RG8&4t2dW*y3^(O=0n02Apo380;p)Exk#jBJwcRtxDopc?^WfOtx9FmzS)2QBHO0 z|9arYXjR!Y;T;Rd9`4VoX+p5)vFG^Pz5CrS!q`xMrq<$gU+)O|{hXW52y$~906G&_ zDmVOD-OFacQ^sHy<7Z=7XL^oWSXdwy4~O_Q?{>C&h_DRFEDkSkQR)8o&H(k-3Z^al{VI=xpA1{VhRmGL7e~(hKz4s~;TR3LlDnNLF^X z3?fEyIQSZ>3}tJRAZmde#>Jl7*2vVfKq8bCOs1D;F$%}K>->32CwTSH-W{tvy`1}Jn$o}5__%HQOQXN)b zP(T+{%P`Dnx|pK@i+~hhTBwwTQi4&AOkse*Y z*#gK2!ZBTp1>BclyydXV8QKDUtTxpG01o0088kR;3%cy1Qbr>`LzRE@f4(w|Ehwpq zu1l3^@kI3)6rmG$EOrhf8Qr>TI7!u4Q%^6<)*eScFc~8BcA^2)9yWW4P20!9!{rc|z*DRxo2M@-T5y0a?&JhZi_;F_Paqtqw}L6rtNw6( zlcvPY=pY5I7a_c}{yZXSd?Xwvgo~u+cW^xR*T0)%2uld{7d0^5s&QN9Ux0$xW`HN+ z3LZakS@7r8e+--^fAvyZ7iYC%?z-j>^Lq8@6@M3zVpnS3nI~TTIDF@p&A$md$F|Sr zRs3lz)@mtVqjxj@c@tY;=b`e|Mb|Ix$7j~*`0<~9oJl$nRK`85esy!w_z!$9TQxf` z(EE2A4h-*foF|>lYa<_@Uom{D^wMu0q)FFXbLbZlC-F;(w|6fNi!;Zec8CKYc`L`NY}>YN#}2deNiw&W{r&w-eA8zdVE)mO8XXm7 zVr;x_V3)JV4*7pQ3OX&L7H+_te7Uva_K6+=BOx|KWdXUQwtoeebWPzX=@oH(S#Gn+I$R zV$;1@){K8g$P-xbkNe$!tu8v-qJyBdA~uoJLK>U7Ai(7?~g&y+=6$fuIXz^7h$3_rwGjDBBKC#mJ7)@K9YjhQKM zDxS}WzGizni(>GpmT4_)6bBq0SJ0qbK1KPM?>6}ihh-C$)r4jcxf<~2DMtlCUjVt3 zx2I`8;FPy5fpSHhrB!3c zzm}76PiIIcYp<}=KmoKHFkC-&`sgY*#3jm*yrdyS%&`5I$(9Ulk)Jydog=2d@uk)L z=g^hvR?PCz5iDpD4@_J3xJBtLlX$S8kl17b@`eWytnwDtE<|E=es8Z9<>J~>xE?1( zAO;RDSDhKHtmpTf|1~M%Mrovuo!tQBv4}zf@Blmsc8J+~=r1W9@^Kn*&-WN!A9DBh z#(~}z4;DbW)SS2QU;biXUCjMsUdPV+(;9eQ2pD1VQJY+U?ab7OqxUFj#WHt96eu~| z5iP(1u`}F>lXk($|2+((8E-M0Kk*aB?4>$_^N+k>{=KcyZ&i2d)z@rG$=X;wEEtfXjarRTtt!}rh=W}TH=8jLytT@v6cy-;($ZDx(%o4Q8Q=ti zLuYU0U%mo?I!WZvGg$p$dJVl%#gkEwAip(%i1p*kJc@D!%@fF_aqN(B+w)6qZgmI} zA?Ajed)3KeneQkSB*PJ@j690f7qZZFh=YUGnetKdY>yAWdYH6f&iu3?sMEAVhMPD? zAH>eN5>z(YpDULVzaX!tL@C!1H4M&*M$TiLRqn>*)aNHes1v0#oa4iUQETr*lOp!E zZhX70^Tf9s7V2jXQxB{=EWWdUs4u~35zBW-wmQ#tk`ZZ7#tz;xNYrkPN6pR6m6UR< z9D75-@n#OS2pgP*-Wq8p{I!JSh_Ou$wv8#ZcJTemkkmonBfgA~JnrZ_jB^yXORMeJ z@uWM4!&ual!}8H#wBB3A4F+YMMus4uG&M1?ta+$nzEAKJB>byZ9etN>r}U7q$dQ^9 zzKE3-WfgINDb7doZ#!!f34@xnm%BUDlWxe&^m|4Z333YU-`;xVDSQS{kb|CZXy_q= z^_1lXHHc$fY&zGzc&W^JmbZahGp1jGV%X^Ewmd#2=25egq(kO~On(ytb>irhz`#m4 z=HQPaA}#&lll_WTRY@y2!U*2W4C~PZn;p^0S(GhpTkI$vmTj#?D)Ez?4qfMiG9=l_>~%Y7 zqDz|4l6?qD%U=7ZJzgWPsY}=|%W#LgiSUP8BK}YH5u(yoN~|?$#sG9F5nQuoM|+Z% zBSfzVcgebtSs#Q(*?_sav;G##vY`@_)++?-TozS?$P3|tbj4HeZ>#tzD4*^B;Mynz zc57#7ftj77^OljpF9?iK@ve{R&6(D_afh`OeJ)RC?}myx-nMA9cO$QA zofBpYae^hx1EA+|eB049z19GmhO_%+7l}4O;OXK1WE(529w@gLZJ_qozD6~Q{fqBH zMRd61YJJ}eo-#=H5KUMoJ<{Jq#9bFeXv5Q@i~sV@)^i_vZzWlX_?7*SSi2&NmaiGX zVGMV4tsFi3y?2=pKpN?zPByZXy&N9U zfkGNo_WsaQFi#TNSDQ|@B#Wkw(LViA+C5%5vYRF&%|qVC{H5!g{rBs^RkN0Q&EJ2i zdUg~-aeOp|*RI`ZUU$Sq_Z4@i&v8Vz>~K8uav6D=!;Avu(51_N415d^tqg78-bjSq zlP7JDy9k`HijTM7$SG|6j>W$qmXRx`9v{1&rE^;*m1>nGg7hBu#o}bDppZRFlL0Gc|qZ{+^|r~$8)GPq(XG|mlgODv0M|~5g~T6i_>tW)1uFc z?;hD9#2P-(p8b0X=L$3&nFFmH6f6b%_w4zG-QwWw8$hs2C?6rhd5R4p>%tNK0OR)V z)EjU%;r2cHx%Oq?;8)n8klL7iXV8o=OI{xC#!Drl>Og-G((UXXS5C*3Q9Xney8eM~ zZQ1+%56sIVR#B9fNSFuBo`Xs787q`nRG2Qr&HWcHOzU>XL8YvlwD)tKXRq^`nJMqQ z#*4u}D~vE;om)NfSWygFeSSW7!H1Rs8AC)Jk&;5~ksM~&(e49p4aFk&%5scCsHI>d zN+el{93pwY8ha`dY-7}$)6KODC2Qs;3zx5tRgVj^12esmLou@!0fPs z2fiXRi#_64;CON7ejSH~Qv#{5G%ZO@d9r78OCwKKL)6^?V?l~QtRBwwfEsMJ38DQb znIAf&XR5L`H<5RfNZT)&VbI7v2FBsyHtA4m=d#dEw=HSvPVaB@tXRxmsuLOFb^+Zd z^ph$UBltUclFM}08aQefqYa;d6CK;;EjXI3VSzwjv>;RK&m6F`OX~xwIwmtwWF
p8&};4ezXF)nRpvazm85djzNlJ@@| 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 diff --git a/docs/samples/diagrams/transfer_sequence_4.puml b/docs/samples/diagrams/transfer_sequence_4.puml deleted file mode 100644 index 6d4e936ed..000000000 --- a/docs/samples/diagrams/transfer_sequence_4.puml +++ /dev/null @@ -1,44 +0,0 @@ -@startuml - -!define aliceColor 66CCFF -!define bobColor CCFF99 -!define dapsColor FFFF99 -!define noteColor 9999FF - -actor User as "User" - -box Alice - participant AliceControlPlane as "Control Plane" #aliceColor - participant AliceBackendService as "Backend Application" #aliceColor - participant AliceDataPlane as "Data Plane" #aliceColor -end box - -box Bob - participant BobControlPlane as "Control Plane" #bobColor - participant BobDataPlane as "Data Plane" #bobColor -end box - -participant JsonPlaceHolder as "JsonPlaceHolder" - -User -> AliceControlPlane ++ : Request Negotiation by ID -return Contract Negotiation\n(containing Contract Agreement ID) - -User -> AliceControlPlane ++ : Initiate Transfer with Agreement ID -AliceControlPlane --> User : Transfer Process ID - AliceControlPlane -> BobControlPlane ++ : IDS Data Transfer (simplified) -return -AliceControlPlane -> AliceBackendService ++ : Data Plane Endpoint + Token - AliceBackendService -> AliceDataPlane ++ : Request Data with Token - AliceDataPlane -> BobDataPlane ++ : Request Data - BobDataPlane -> JsonPlaceHolder ++ : Request Data - return data - return data - return data - AliceBackendService -> AliceBackendService : Write Data to File -return ok -deactivate AliceControlPlane - -User -> AliceControlPlane ++ : Request Transfer Process by ID -return Transfer Process - -@enduml diff --git a/docs/samples/diagrams/transfer_sequence_5.png b/docs/samples/diagrams/transfer_sequence_5.png deleted file mode 100644 index 1a18b5be2d981dd319b16057473c0c7da3a7b4b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21142 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 WY;x{cJenc=Ei0)gkt6={?f(UPEr_WA diff --git a/docs/samples/diagrams/transfer_sequence_5.puml b/docs/samples/diagrams/transfer_sequence_5.puml deleted file mode 100644 index 598b747b6..000000000 --- a/docs/samples/diagrams/transfer_sequence_5.puml +++ /dev/null @@ -1,27 +0,0 @@ -@startuml - -!define aliceColor 66CCFF -!define bobColor CCFF99 -!define dapsColor FFFF99 -!define noteColor 9999FF - -actor User as "User" - -box Alice - participant AliceControlPlane as "Control Plane" #aliceColor - participant AliceBackendService as "Backend Application" #aliceColor - participant AliceDataPlane as "Data Plane" #aliceColor -end box - -box Bob - participant BobControlPlane as "Control Plane" #bobColor - participant BobDataPlane as "Data Plane" #bobColor -end box - -participant JsonPlaceHolder as "JsonPlaceHolder" - -User -> AliceBackendService ++ : Get File Content -return data - - -@enduml diff --git a/docs/samples/example-dataspace/README.md b/docs/samples/example-dataspace/README.md deleted file mode 100644 index 7650bd125..000000000 --- a/docs/samples/example-dataspace/README.md +++ /dev/null @@ -1,136 +0,0 @@ -# How-To run two connectors and a DAPS - -## 1. Prepare environment - -This guide will bring up two connectors named "Sokrates" and "Plato", each alongside their dependencies (Hashicorp -Vault, PostgreSQL) and a DAPS instance that both share. - -We've tested this setup with [KinD](https://kind.sigs.k8s.io/), but other runtimes such -as [Minikube](https://minikube.sigs.k8s.io/docs/start/) may work as well, we just haven't tested them. - -This version of Tractus-X EDC _requires_ a running instance of the Managed Identity Wallet and KeyCloak, a connector -will not be able to communicate to another connector without it. - -Installation instructions for those are beyond the scope of this document, please refer to the respective manuals and -guides for information on how to set them up. - -Furthermore, this guide assumes: - -- the Tractus-X EDC repository is checked out, the working directory for this guide is `docs/samples/example-dataspace` -- a Kubernetes runtime (e.g. KinD) is already installed and ready-to-use -- basic knowledge about `helm` and Kubernetes -- the following tools are available: `yq`, `openssl`, `base64` -- a POSIX-compliant shell, e.g. `bash` or `zsh` unless stated otherwise - -### 1.1 Create secrets for both runtimes - -We'll need a x509 certificate in order to communicate with DAPS, as well as a private key and a Data Encryption signing -key. - -```shell -# SOKRATES aes encryption key -echo "aes_enckey_test" | base64 > sokrates.aes.key - -# PLATO aes encryption key -echo "aes_enckey_test" | base64 > plato.aes.key -``` - -Any arbitrary string can be used for the AES key, but it has to be 16, 24, or 32 characters in length, assuming UTF-8 -encoding. - -### 1.2 Obtain configuration for MiW and KeyCloak - -> The following information is _required_, your connectors will **not** work properly unless you -> modify the `ssi:` section of `sokrates-values.yaml` and `plato-values.yaml` accordingly! - -For communication with KeyCloak we need the following information - -- the `tokenurl`: URL where access tokens can be obtained -- the `client.id`: KeyCloak identifier of the connector - -Note that the OAuth2 client secret will be stored in the vault under the alias `client-secret`. - -In order to use MiW as credential backend we need the following information: - -- `url`: a URL where MiW is reachable -- `authorityId`: this is the `issuerIdentifier` for MiW REST requests, please refer to the respective documentation. - -Furthermore, we need the `endpoint.audience`, which is used to verify the `aud` claim of incoming requests. This does **not** have to be set explicitly, it defaults to each connector's callback address. - -## 2. Prepare Connectors - -Next, the certificates and private keys we created previously must be stored in each connector's vault by injecting -a `postStart` element to the chart's configuration file: - -```shell -# for sokrates -VALUES_FILE=sokrates-values.yaml -CLIENT_SECRET= -AES_KEY=$(cat sokrates.aes.key) -yq -i ".vault.server.postStart |= [\"sh\",\"-c\",\"{\nsleep 5\n -/bin/vault kv put secret/client-secret content=$CLIENT_SECRET\n -/bin/vault kv put secret/aes-keys content=$AES_KEY\n}\"]" "$VALUES_FILE" - -# for plato -VALUES_FILE=plato-values.yaml -CLIENT_SECRET= -AES_KEY=$(cat plato.aes.key) -yq -i ".vault.server.postStart |= [\"sh\",\"-c\",\"{\nsleep 5\n -/bin/vault kv put secret/client-secret content=$CLIENT_SECRET\n -/bin/vault kv put secret/aes-keys content=$AES_KEY\n}\"]" "$VALUES_FILE" -``` - -## 3 Install the connectors - -Use `helm` to install the Tractus-X EDC Helm charts. In this example we are using the _local_ charts, assuming you have -Tractus-X EDC checked out in your local filesystem at ``. - -```shell -# install sokrates -helm install tx-sokrates /charts/tractusx-connector \ - -f sokrates-values.yaml \ - --dependency-update - -# install plato -helm install tx-plato /charts/tractusx-connector \ - -f plato-values.yaml \ - --dependency-update -``` - -_Note: if you prefer to use the published version of the `tractusx-connector` chart, please add the Tractus-X Helm repo -first:_ - -```shell -helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install tx-[sokrates|plato] tractusx-edc/tractusx-connector \ - -f [sokrates|plato]-values.yaml \ - --dependency-update -``` - -## 3.1 [Optional] Verify the correct installation - -There is several ways of making sure everything worked out well: - -- simply look at the logs of the Helm releases, e.g. with a tool - like [stern](https://kubernetes.io/blog/2016/10/tail-kubernetes-with-stern/) and look out for a log line similar to: - - ```shell - stern tx-sokrates - ``` - - then look out for something similar to: - - ```shell - tx-sokrates-controlplane-b9456f97b-s5jts tractusx-connector INFO 2023-05-31T07:24:53.020975888 tx-sokrates-controlplane ready - ``` - -- wait for the Kubernetes rollout to be successful, e.g. `kubectl rollout status deployment tx-plato-controlplane` -- use `helm test` to execute tests: `helm test tx-plato` - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/samples/example-dataspace/plato-values.yaml b/docs/samples/example-dataspace/plato-values.yaml deleted file mode 100644 index c016d9a0e..000000000 --- a/docs/samples/example-dataspace/plato-values.yaml +++ /dev/null @@ -1,77 +0,0 @@ -# -# Copyright (c) 2023 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://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. -# -# SPDX-License-Identifier: Apache-2.0 -# - - -install: - daps: false -fullnameOverride: tx-plato -################################ -# EDC ControlPlane + DataPlane # -################################ -participant: - id: "BPNPLATO" -controlplane: - service: - type: NodePort - endpoints: - management: - authKey: password - image: - pullPolicy: Never - tag: "latest" - repository: "edc-controlplane-postgresql-hashicorp-vault" - securityContext: - # SSI configuration - ssi: - miw: - url: "" - authorityId: "" - oauth: - tokenurl: "" - client: - id: "" - secretAlias: "client-secret" -dataplane: - endpoints: - management: - authKey: password - image: - pullPolicy: Never - tag: "latest" - repository: "edc-dataplane-hashicorp-vault" - aws: - endpointOverride: http://minio:9000 - secretAccessKey: qwerty123 - accessKeyId: qwerty123 -postgresql: - fullnameOverride: "plato-postgresql" - username: user - password: password - jdbcUrl: jdbc:postgresql://plato-postgresql:5432/edc -vault: - fullnameOverride: "plato-vault" - hashicorp: - url: http://plato-vault:8200 - token: root - secretNames: - transferProxyTokenEncryptionAesKey: aes-keys - secrets: - server: -backendService: - httpProxyTokenReceiverUrl: "http://backend:8080" diff --git a/docs/samples/example-dataspace/sokrates-values.yaml b/docs/samples/example-dataspace/sokrates-values.yaml deleted file mode 100644 index c21948a16..000000000 --- a/docs/samples/example-dataspace/sokrates-values.yaml +++ /dev/null @@ -1,76 +0,0 @@ -# -# Copyright (c) 2023 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://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. -# -# SPDX-License-Identifier: Apache-2.0 -# - -install: - daps: false -fullnameOverride: tx-sokrates -################################ -# EDC ControlPlane + DataPlane # -################################ -participant: - id: "BPNSOKRATES" -controlplane: - service: - type: NodePort - endpoints: - management: - authKey: password - image: - pullPolicy: Never - tag: "latest" - repository: "edc-controlplane-postgresql-hashicorp-vault" - # SSI configuration - ssi: - miw: - url: "" - authorityId: "" - oauth: - tokenurl: "" - client: - id: "" - secretAlias: "client-secret" -dataplane: - endpoints: - proxy: - authKey: password - image: - pullPolicy: Never - tag: "latest" - repository: "edc-dataplane-hashicorp-vault" - securityContext: - aws: - endpointOverride: http://minio:9000 - secretAccessKey: qwerty123 - accessKeyId: qwerty123 -postgresql: - fullnameOverride: "sokrates-postgresql" - username: user - password: password - jdbcUrl: jdbc:postgresql://sokrates-postgresql:5432/edc -vault: - fullnameOverride: "sokrates-vault" - hashicorp: - url: http://sokrates-vault:8200 - token: root - secretNames: - transferProxyTokenEncryptionAesKey: aes-keys - secrets: - server: -backendService: - httpProxyTokenReceiverUrl: "http://backend:8080" diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md index 38a2b2bd4..ac6275657 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md @@ -37,10 +37,6 @@ Details regarding each configuration property can be found at the [documentary s | edc.ids.catalog.id | | urn:catalog:default | | | ids.webhook.address | | | | | edc.hostname | | localhost | | -| edc.oauth.token.url | X | | | -| edc.oauth.public.key.alias | X | key-to-daps-certificate-in-keyvault | | -| edc.oauth.private.key.alias | X | key-to-private-key-in-keyvault | | -| edc.oauth.client.id | X | daps-oauth-client-id | | | edc.vault.clientid | X | 00000000-1111-2222-3333-444444444444 | | | edc.vault.tenantid | X | 55555555-6666-7777-8888-999999999999 | | | edc.vault.name | X | my-vault-name | | @@ -104,12 +100,6 @@ edc.hostname=localhost edc.api.auth.key=password -# OAuth / DAPS related configuration -edc.oauth.token.url=https://daps.example.net -edc.oauth.public.key.alias=key-to-daps-certificate-in-keyvault -edc.oauth.private.key.alias=key-to-private-key-in-keyvault -edc.oauth.client.id=daps-oauth-client-id - # Azure vault related configuration edc.vault.clientid=00000000-1111-2222-3333-444444444444 edc.vault.tenantid=55555555-6666-7777-8888-999999999999 diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md index f06c4d127..564ac7101 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md @@ -37,10 +37,6 @@ Details regarding each configuration property can be found at the [documentary s | edc.ids.catalog.id | | urn:catalog:default | | | ids.webhook.address | | | | | edc.hostname | | localhost | | -| edc.oauth.token.url | X | | | -| edc.oauth.public.key.alias | X | key-to-daps-certificate-in-keyvault | | -| edc.oauth.private.key.alias | X | key-to-private-key-in-keyvault | | -| edc.oauth.client.id | X | daps-oauth-client-id | | | edc.vault.hashicorp.url | X | | | | edc.vault.hashicorp.token | X | 55555555-6666-7777-8888-999999999999 | | | edc.vault.hashicorp.timeout.seconds | | 30 | | @@ -103,12 +99,6 @@ edc.hostname=localhost edc.api.auth.key=password -# OAuth / DAPS related configuration -edc.oauth.token.url=https://daps.example.net -edc.oauth.public.key.alias=key-to-daps-certificate-in-keyvault -edc.oauth.private.key.alias=key-to-private-key-in-keyvault -edc.oauth.client.id=daps-oauth-client-id - # HashiCorp vault related configuration edc.vault.hashicorp.url=http://vault edc.vault.hashicorp.token=55555555-6666-7777-8888-999999999999 diff --git a/edc-controlplane/edc-runtime-memory/README.md b/edc-controlplane/edc-runtime-memory/README.md index 150a8f680..377f566c2 100644 --- a/edc-controlplane/edc-runtime-memory/README.md +++ b/edc-controlplane/edc-runtime-memory/README.md @@ -48,10 +48,6 @@ the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tr | edc.ids.catalog.id | | urn:catalog:default | | | ids.webhook.address | | | | | edc.hostname | | localhost | | -| edc.oauth.token.url | X | | | -| edc.oauth.public.key.alias | X | key-to-daps-certificate-in-keyvault | | -| edc.oauth.private.key.alias | X | key-to-private-key-in-keyvault | | -| edc.oauth.client.id | X | daps-oauth-client-id | | | edc.transfer.proxy.endpoint | X | | | | edc.transfer.proxy.token.signer.privatekey.alias | X | | | @@ -92,12 +88,6 @@ edc.hostname=localhost edc.api.auth.key=password -# OAuth / DAPS related configuration -edc.oauth.token.url=https://daps.example.net -edc.oauth.public.key.alias=key-to-daps-certificate-in-keyvault -edc.oauth.private.key.alias=key-to-private-key-in-keyvault -edc.oauth.client.id=daps-oauth-client-id - # Control- / Data- Plane configuration edc.transfer.proxy.endpoint=http://dataplane-public-endpoint/public edc.transfer.proxy.token.signer.privatekey.alias=azure-vault-token-signer-private-key diff --git a/edc-dataplane/edc-dataplane-azure-vault/README.md b/edc-dataplane/edc-dataplane-azure-vault/README.md index 21404d8d0..255adfa26 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/README.md +++ b/edc-dataplane/edc-dataplane-azure-vault/README.md @@ -23,7 +23,6 @@ Details regarding each configuration property can be found at the [documentary s | web.http.control.path | X | /api/controlplane/control | | | edc.receiver.http.endpoint | X | | | | edc.hostname | | localhost | | -| edc.oauth.client.id | X | daps-oauth-client-id | | | edc.vault.clientid | X | 00000000-1111-2222-3333-444444444444 | | | edc.vault.tenantid | X | 55555555-6666-7777-8888-999999999999 | | | edc.vault.name | X | my-vault-name | | diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md index 799d5dd1f..49da83d76 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md @@ -23,7 +23,6 @@ Details regarding each configuration property can be found at the [documentary s | web.http.control.path | X | /api/controlplane/control | | | edc.receiver.http.endpoint | X | | | | edc.hostname | | localhost | | -| edc.oauth.client.id | X | daps-oauth-client-id | | | edc.vault.hashicorp.url | X | | | | edc.vault.hashicorp.token | X | 55555555-6666-7777-8888-999999999999 | | | edc.vault.hashicorp.timeout.seconds | | 30 | | diff --git a/edc-extensions/build.gradle.kts b/edc-extensions/build.gradle.kts index a6769cfcd..5f8b652f7 100644 --- a/edc-extensions/build.gradle.kts +++ b/edc-extensions/build.gradle.kts @@ -23,7 +23,6 @@ plugins { dependencies { implementation(project(":edc-extensions:bpn-validation")) - implementation(project(":edc-extensions:cx-oauth2")) implementation(project(":edc-extensions:data-encryption")) implementation(project(":edc-extensions:dataplane-selector-configuration")) implementation(project(":edc-extensions:postgresql-migration")) diff --git a/edc-extensions/cx-oauth2/README.md b/edc-extensions/cx-oauth2/README.md deleted file mode 100644 index c796ac245..000000000 --- a/edc-extensions/cx-oauth2/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# Tractus-X OAuth2 Extension - -## Why Tractus-X needs this extension - -In IDS the DAPS token audience is always `idsc:IDS_CONNECTORS_ALL`. At first glance this makes it possible for other connectors to steal and reuse an received token. To mitigate this security risk IDS introduces something called `transportCertsSha256`, which couples the connector audience with its corresponding TLS/SSL certificate. - -From [GitHub IDS-G](https://github.com/International-Data-Spaces-Association/IDS-G/tree/main/Components/IdentityProvider/DAPS) - -> - **transportCertsSha256** Contains the public keys of the used transport certificates, hashed using SHA256. The identifying X509 certificate should not be used for the communication encryption. Therefore, the receiving party needs to connect the identity of a connector by relating its hostname (from the communication encryption layer) and the used private/public key pair, with its IDS identity claim of the DAT. The public transportation key must be one of the `transportCertsSha256` values. Otherwise, the receiving connector must expect that the requesting connector is using a false identity claim. In general, this claim holds an Array of Strings, but it may optionally hold a single String instead if the Array would have exactly one element. - -The reason IDS did this is to prevent the IDS DAPS to know, which connectors talk to each other. But this solution introduces a new level of complexity for different deployment scenarios. The OAuth2 Extension introduces the classic audience validation again, so that users do not have to deal with these things for now. - -## Configuration - -| Key | Description | Mandatory | Default | -|:--------------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|------------| -| edc.oauth.token.url | Token URL of the DAPS | X | | -| edc.oauth.public.key.alias | Vault alias of the public key | X | | -| edc.oauth.client.id | DAPS client id of the connector | X | | -| edc.oauth.private.key.alias | Vault lias of the private key | X | | -| edc.oauth.token.expiration.seconds | | | 5 minutes | -| edc.oauth.validation.nbf.leeway | DAPS token request leeway | | 10 seconds | -| edc.oauth.provider.jwks.refresh | Time between refresh of the DAPS json web key set | | 5 minutes | -| edc.ids.endpoint.audience | The audience the connector requests from the DAPS. Should be the IDS URL of the connector, e.g. `http://plato-edc-controlplane:8282/api/v1/ids/data` | X | | -| edc.ids.validation.referringconnector | Adds checks to the DAPS token. Validation that the `referringConnector` equals the `issuerConnector` and the `securityProfile` of the token is equal to the profile of the IDS message | | false | - -## Audience Validation - -Instead of the `idsc:IDS_CONNECTORS_ALL` the connector requests a specific audience from the DAPS. This audience will be the IDS URL, the connector intends to call. - -When a connector receives a message, it will checks the token audience is equal to the configured value in `edc.ids.endpoint.audience`. - -![sequence diagram](./diagrams/sequence.png) - -## Participant Extension - -Starting from `0.0.1-milestone-9` EDC requires a mandatory setting `edc.participant.id`, which in this case should be the BPN number which is transmitted over the wire to identifying the participants IDs. -To verify that in the DAPS token an extension has been created, that extract from the `ClaimToken` the BPN number and then EDC compare that identity with the one provided over the wire, for security reason. - -By default, the extension parse the `referringConnector` url and extract the BPN number as the last parameter in the URL eg (). - -### Configuration - -| Key | Description | Mandatory | Default | -|:--------------------------------------|:----------------------------------------------------------|-----------|---------------| -| tx.participant.id.regex | Regex for extracting the BPN from the referringConnector | | [^/]+(?=/$|$) | -| tx.participant.id.regexGroup | Group number for the regex match | | 0 | diff --git a/edc-extensions/cx-oauth2/build.gradle.kts b/edc-extensions/cx-oauth2/build.gradle.kts deleted file mode 100644 index 772c60f47..000000000 --- a/edc-extensions/cx-oauth2/build.gradle.kts +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (c) 2023 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - - -plugins { - `java-library` - `maven-publish` -} - -dependencies { - implementation(libs.edc.spi.core) - implementation(libs.edc.spi.oauth2) - implementation(libs.edc.spi.jwt) - implementation(libs.slf4j.api) - implementation(libs.nimbus.jwt) - implementation(libs.okhttp) - - testImplementation(libs.edc.junit) -} diff --git a/edc-extensions/cx-oauth2/diagrams/sequence.png b/edc-extensions/cx-oauth2/diagrams/sequence.png deleted file mode 100644 index 784441b4e7d2eb43afebeef0548ad15ba572dd48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37872 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 diff --git a/edc-extensions/cx-oauth2/diagrams/sequence.puml b/edc-extensions/cx-oauth2/diagrams/sequence.puml deleted file mode 100644 index d2f20f278..000000000 --- a/edc-extensions/cx-oauth2/diagrams/sequence.puml +++ /dev/null @@ -1,24 +0,0 @@ -@startuml - -title CX-DAPS Audience Validation - -participant ConnectorA as "Connector A" -participant DAPS as "IDS DAPS" -participant ConnectorB as "Connector B" - -== Configuration == - -ConnectorB <-? : Configure //edc.ids.endpoint.audience//\nto ///api/v1/ids/data// - -== Request == - -?-> ConnectorA ++: Initiate Catalog Request\n/data/catalog?providerUrl=///api/v1/ids/data// - ConnectorA -> DAPS ++: Request Token for audience\n///api/v1/ids/data// - return DAPS Token - ConnectorA -> ConnectorB ++ : Send Request with Token - ConnectorB -> ConnectorB : Check Audience equals\n/api/v1/ids/data - ... continue request processing ... - return Catalog Response -return Catalog - -@enduml \ No newline at end of file diff --git a/edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxOauth2Extension.java b/edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxOauth2Extension.java deleted file mode 100644 index 338784ef3..000000000 --- a/edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxOauth2Extension.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH - * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - */ -package org.eclipse.tractusx.edc.oauth2; - -import org.eclipse.edc.iam.oauth2.spi.CredentialsRequestAdditionalParametersProvider; -import org.eclipse.edc.runtime.metamodel.annotation.Provider; -import org.eclipse.edc.spi.system.ServiceExtension; - -import java.util.Map; - -public class CxOauth2Extension implements ServiceExtension { - - @Override - public String name() { - return "CX OAuth2"; - } - - @Provider - public CredentialsRequestAdditionalParametersProvider credentialsRequestAdditionalParametersProvider() { - return tokenParameters -> Map.of("resource", tokenParameters.getAudience()); - } -} diff --git a/edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtension.java b/edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtension.java deleted file mode 100644 index 037851bcd..000000000 --- a/edc-extensions/cx-oauth2/src/main/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtension.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation - * - */ - -package org.eclipse.tractusx.edc.oauth2; - -import org.eclipse.edc.runtime.metamodel.annotation.Inject; -import org.eclipse.edc.runtime.metamodel.annotation.Setting; -import org.eclipse.edc.spi.agent.ParticipantAgentService; -import org.eclipse.edc.spi.agent.ParticipantAgentServiceExtension; -import org.eclipse.edc.spi.iam.ClaimToken; -import org.eclipse.edc.spi.monitor.Monitor; -import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.jetbrains.annotations.NotNull; - -import java.util.Map; -import java.util.regex.Pattern; - -import static org.eclipse.edc.spi.agent.ParticipantAgent.PARTICIPANT_IDENTITY; - -public class CxParticipantExtension implements ServiceExtension, ParticipantAgentServiceExtension { - - public static final String REFERRING_CONNECTOR_CLAIM = "referringConnector"; - - private static final String DEFAULT_PARTICIPANT_ID_REGEX = "[^/]+(?=/$|$)"; - private static final int DEFAULT_PARTICIPANT_ID_REGEX_GROUP = 0; - - @Setting(value = "Participant Extractor from referringConnector regex", defaultValue = CxParticipantExtension.DEFAULT_PARTICIPANT_ID_REGEX) - private static final String PARTICIPANT_ID_REGEX = "tx.participant.id.regex"; - - @Setting(value = "Participant Extractor from referringConnector regex group", defaultValue = "0") - private static final String PARTICIPANT_ID_REGEX_GROUP = "tx.participant.id.regexGroup"; - @Inject - private ParticipantAgentService agentService; - - private Pattern participantRegex; - - private int participantRegexGroup; - - @Inject - private Monitor monitor; - - @Override - public void initialize(ServiceExtensionContext context) { - this.participantRegex = Pattern.compile(context.getConfig().getString(PARTICIPANT_ID_REGEX, DEFAULT_PARTICIPANT_ID_REGEX)); - this.participantRegexGroup = context.getConfig().getInteger(PARTICIPANT_ID_REGEX_GROUP, DEFAULT_PARTICIPANT_ID_REGEX_GROUP); - - agentService.register(this); - } - - @Override - public @NotNull Map attributesFor(ClaimToken token) { - var referringConnector = token.getClaim(REFERRING_CONNECTOR_CLAIM); - if (referringConnector instanceof String referringConnectorUrl) { - var matcher = participantRegex.matcher(referringConnectorUrl); - if (matcher.find()) { - var id = matcher.group(participantRegexGroup); - return Map.of(PARTICIPANT_IDENTITY, id); - } - monitor.warning("Unable to extract the participant id from the referring connector claim"); - } - return Map.of(); - } -} diff --git a/edc-extensions/cx-oauth2/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/cx-oauth2/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension deleted file mode 100644 index d3d98beb2..000000000 --- a/edc-extensions/cx-oauth2/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ /dev/null @@ -1,22 +0,0 @@ -# -# Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH -# Copyright (c) 2021,2022 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://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. -# -# SPDX-License-Identifier: Apache-2.0 -# - -org.eclipse.tractusx.edc.oauth2.CxOauth2Extension -org.eclipse.tractusx.edc.oauth2.CxParticipantExtension diff --git a/edc-extensions/cx-oauth2/src/test/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtensionTest.java b/edc-extensions/cx-oauth2/src/test/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtensionTest.java deleted file mode 100644 index aabbe35e1..000000000 --- a/edc-extensions/cx-oauth2/src/test/java/org/eclipse/tractusx/edc/oauth2/CxParticipantExtensionTest.java +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation - * - */ - -package org.eclipse.tractusx.edc.oauth2; - -import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; -import org.eclipse.edc.spi.agent.ParticipantAgentService; -import org.eclipse.edc.spi.iam.ClaimToken; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.ArgumentsProvider; -import org.junit.jupiter.params.provider.ArgumentsSource; - -import java.util.Map; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.spi.agent.ParticipantAgent.PARTICIPANT_IDENTITY; -import static org.eclipse.tractusx.edc.oauth2.CxParticipantExtension.REFERRING_CONNECTOR_CLAIM; -import static org.mockito.ArgumentMatchers.isA; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.verify; - -@ExtendWith(DependencyInjectionExtension.class) -public class CxParticipantExtensionTest { - - CxParticipantExtension extension; - - ParticipantAgentService agentService = mock(ParticipantAgentService.class); - - ServiceExtensionContext context; - - @BeforeEach - void setUp(ObjectFactory factory, ServiceExtensionContext context) { - this.context = spy(context); - context.registerService(ParticipantAgentService.class, agentService); - extension = factory.constructInstance(CxParticipantExtension.class); - } - - @Test - void initialize() { - extension.initialize(context); - verify(agentService).register(isA(CxParticipantExtension.class)); - } - - - @ParameterizedTest - @ArgumentsSource(ClaimProvider.class) - void attributesFor_shouldMatchTheId(Map claims) { - var attributes = Map.of(PARTICIPANT_IDENTITY, "BPNSOKRATES"); - extension.initialize(context); - var claimToken = ClaimToken.Builder.newInstance().claims(claims).build(); - assertThat(extension.attributesFor(claimToken)).containsExactlyEntriesOf(attributes); - } - - static class ClaimProvider implements ArgumentsProvider { - ClaimProvider() { - } - - @Override - public Stream provideArguments(ExtensionContext context) { - return Stream.of( - Map.of(REFERRING_CONNECTOR_CLAIM, "http://sokrates-controlplane/BPNSOKRATES"), - Map.of(REFERRING_CONNECTOR_CLAIM, "http://sokrates-controlplane/BPNSOKRATES/"), - Map.of(REFERRING_CONNECTOR_CLAIM, "http://sokrates-controlplane/test/path/BPNSOKRATES"), - Map.of(REFERRING_CONNECTOR_CLAIM, "https://sokrates-controlplane/test/path/BPNSOKRATES"), - Map.of(REFERRING_CONNECTOR_CLAIM, "BPNSOKRATES") - ).map(Arguments::arguments); - } - } -} - diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml index 757cd64c9..8f4c6da4a 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml @@ -17,21 +17,6 @@ # SPDX-License-Identifier: Apache-2.0 # -## This file can be used to verify that the chart is working properly. It provides an exemplary configuration -## that is intended to be used with the supporting infrastructure. -## 1. install DAPS: -## helm install infrastructure edc-tests/deployment/src/main/resources/helm/test-infrastructure --wait-for-jobs -## -## 2. set Azure KevVault secrets, either through the Azure Portal or through az cli: -## az keyvault secret set --vault-name --name daps-crt --value -## az keyvault secret set --vault-name --name daps-key --value -## az keyvault secret set --vault-name --name aes-keys --value -## -## 3. install the connector plus its third-party dependencies (Postgres): -## helm install tx-prod charts/tractusx-connector-azure-vault-app -f charts/tractusx-connector-azure-vault-app/example.yaml --dependency-update \ -## --set vault.azure.client= \ -## --set vault.azure.tenant= \ -## --set vault.azure.secret= fullnameOverride: tx-prod ################################ diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml index 90120c220..bb60ea652 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml @@ -18,18 +18,6 @@ # SPDX-License-Identifier: Apache-2.0 # -## This file can be used to verify that the chart is working properly. It provides an exemplary configuration -## that is intended to be used with the supporting infrastructure. -## 1. install DAPS: -## helm install infrastructure edc-tests/deployment/src/main/resources/helm/test-infrastructure \ ─╯ -## --wait-for-jobs -## -## 2. install in-mem runtime. Note that the key and crt must match exactly the DAPS setup, c.f. edc-tests/deployment/src/main/resources/helm/test-infrastructure/values.yaml -## export DAPSKEY="" -## export DAPSCRT="" -## export YOUR_VAULT_SECRETS="daps-key:$DAPSKEY;daps-crt:$DAPSCRT" -## helm install trudy charts/tractusx-connector-memory -f edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml --set vault.secrets=$YOUR_VAULT_SECRETS - --- fullnameOverride: tx-inmem participant: diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java index 9feae6c68..10fab82af 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java @@ -19,7 +19,7 @@ import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.injection.InjectionContainer; -import org.eclipse.tractusx.edc.token.MockDapsService; +import org.eclipse.tractusx.edc.token.MockBpnIdentityService; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; @@ -35,7 +35,7 @@ public class ParticipantRuntime extends EdcRuntimeExtension implements BeforeAll public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map properties) { super(moduleName, runtimeName, properties); if (!properties.containsKey("tx.ssi.miw.url")) { - this.registerServiceMock(IdentityService.class, new MockDapsService(bpn)); + this.registerServiceMock(IdentityService.class, new MockBpnIdentityService(bpn)); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java index 106a929bb..8cd68ed4c 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java @@ -15,7 +15,6 @@ package org.eclipse.tractusx.edc.lifecycle; import org.eclipse.edc.connector.core.vault.InMemoryVault; -import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.security.Vault; @@ -23,7 +22,6 @@ import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.injection.InjectionContainer; import org.eclipse.edc.sql.testfixtures.PostgresqlLocalInstance; -import org.eclipse.tractusx.edc.token.MockDapsService; import org.junit.jupiter.api.extension.ExtensionContext; import org.testcontainers.containers.PostgreSQLContainer; @@ -46,7 +44,6 @@ public class PgParticipantRuntime extends ParticipantRuntime { public PgParticipantRuntime(String moduleName, String runtimeName, String bpn, Map properties) { super(moduleName, runtimeName, bpn, properties); this.dbName = runtimeName.toLowerCase(); - this.registerServiceMock(IdentityService.class, new MockDapsService(bpn)); mockVault(); postgreSqlContainer = new PostgreSQLContainer<>(POSTGRES_IMAGE_NAME) diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockDapsService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java similarity index 71% rename from edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockDapsService.java rename to edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java index c833b5c8a..7db813b43 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockDapsService.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java @@ -26,17 +26,16 @@ import static java.lang.String.format; /** - * An {@link IdentityService} that will mimic the behaviour of DAPS by inserting the "referringConnector" claim into any token. + * An {@link IdentityService} that will inject the BPN claim in every token. * Please only use in testing scenarios! */ -public class MockDapsService implements IdentityService { +public class MockBpnIdentityService implements IdentityService { private static final String BUSINESS_PARTNER_NUMBER_CLAIM = "BusinessPartnerNumber"; - private static final String REFERRING_CONNECTOR_CLAIM = "referringConnector"; private final String businessPartnerNumber; - private TypeManager typeManager = new TypeManager(); + private final TypeManager typeManager = new TypeManager(); - public MockDapsService(String businessPartnerNumber) { + public MockBpnIdentityService(String businessPartnerNumber) { this.businessPartnerNumber = businessPartnerNumber; } @@ -44,7 +43,7 @@ public MockDapsService(String businessPartnerNumber) { public Result obtainClientCredentials(TokenParameters parameters) { var token = Map.of(BUSINESS_PARTNER_NUMBER_CLAIM, businessPartnerNumber); - TokenRepresentation tokenRepresentation = TokenRepresentation.Builder.newInstance() + var tokenRepresentation = TokenRepresentation.Builder.newInstance() .token(typeManager.writeValueAsString(token)) .build(); return Result.success(tokenRepresentation); @@ -57,9 +56,9 @@ public Result verifyJwtToken(TokenRepresentation tokenRepresentation if (token.containsKey(BUSINESS_PARTNER_NUMBER_CLAIM)) { return Result.success(ClaimToken.Builder.newInstance() .claim(BUSINESS_PARTNER_NUMBER_CLAIM, token.get(BUSINESS_PARTNER_NUMBER_CLAIM)) - .claim(REFERRING_CONNECTOR_CLAIM, token.get(BUSINESS_PARTNER_NUMBER_CLAIM)).build()); + .build()); } - return Result.failure(format("Expected %s and %s claims, but token did not contain them", BUSINESS_PARTNER_NUMBER_CLAIM, REFERRING_CONNECTOR_CLAIM)); + return Result.failure(format("Expected %s claim, but token did not contain them", BUSINESS_PARTNER_NUMBER_CLAIM)); } } diff --git a/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts b/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts index ffd3d0aaa..6a67086f2 100644 --- a/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts +++ b/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts @@ -22,8 +22,6 @@ dependencies { // use basic (all in-mem) control plane implementation(project(":edc-controlplane:edc-controlplane-base")) { - exclude("org.eclipse.edc", "oauth2-core") - exclude("org.eclipse.edc", "oauth2-daps") exclude(module = "data-encryption") } implementation(project(":core:json-ld-core")) @@ -51,7 +49,6 @@ application { mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") } -// do not publish edcBuild { publish.set(false) } diff --git a/edc-tests/runtime/runtime-memory/build.gradle.kts b/edc-tests/runtime/runtime-memory/build.gradle.kts index 8be6581c4..0022efd34 100644 --- a/edc-tests/runtime/runtime-memory/build.gradle.kts +++ b/edc-tests/runtime/runtime-memory/build.gradle.kts @@ -22,10 +22,6 @@ dependencies { // use basic (all in-mem) control plane implementation(project(":edc-controlplane:edc-controlplane-base")) { - exclude("org.eclipse.edc", "oauth2-core") - exclude("org.eclipse.edc", "oauth2-daps") - -// exclude(module = "data-encryption") exclude(module = "json-ld-core") exclude(module = "ssi-identity-core") exclude(module = "ssi-miw-credential-client") @@ -40,7 +36,6 @@ dependencies { exclude("org.eclipse.edc", "api-observability") } - implementation(libs.edc.core.controlplane) // for the controller implementation(libs.jakarta.rsApi) @@ -50,7 +45,6 @@ application { mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") } -// do not publish edcBuild { publish.set(false) } diff --git a/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts b/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts index 512d8dd92..f1e1beca2 100644 --- a/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts +++ b/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts @@ -37,7 +37,6 @@ dependencies { exclude("org.eclipse.edc", "api-observability") } - implementation(libs.edc.core.controlplane) // for the controller implementation(libs.jakarta.rsApi) @@ -47,7 +46,6 @@ application { mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") } -// do not publish edcBuild { publish.set(false) } diff --git a/edc-tests/runtime/runtime-postgresql/build.gradle.kts b/edc-tests/runtime/runtime-postgresql/build.gradle.kts index fd07930c8..32000816e 100644 --- a/edc-tests/runtime/runtime-postgresql/build.gradle.kts +++ b/edc-tests/runtime/runtime-postgresql/build.gradle.kts @@ -38,7 +38,6 @@ dependencies { exclude("org.eclipse.edc", "api-observability") } - implementation(libs.edc.core.controlplane) // for the controller implementation(libs.jakarta.rsApi) @@ -48,7 +47,6 @@ application { mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") } -// do not publish edcBuild { publish.set(false) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 61b2c381b..3df0f9ddf 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -73,8 +73,6 @@ edc-dsp = { module = "org.eclipse.edc:dsp", version.ref = "edc" } edc-iam-mock = { module = "org.eclipse.edc:iam-mock", version.ref = "edc" } edc-policy-engine = { module = "org.eclipse.edc:policy-engine", version.ref = "edc" } edc-auth-tokenbased = { module = "org.eclipse.edc:auth-tokenbased", version.ref = "edc" } -edc-auth-oauth2-core = { module = "org.eclipse.edc:oauth2-core", version.ref = "edc" } -edc-auth-oauth2-daps = { module = "org.eclipse.edc:oauth2-daps", version.ref = "edc" } edc-auth-oauth2-client = { module = "org.eclipse.edc:oauth2-client", version.ref = "edc" } edc-transaction-local = { module = "org.eclipse.edc:transaction-local", version.ref = "edc" } edc-ext-http = { module = "org.eclipse.edc:http", version.ref = "edc" } diff --git a/samples/multi-tenancy/build.gradle.kts b/samples/multi-tenancy/build.gradle.kts index 2303cf86d..1da912fda 100644 --- a/samples/multi-tenancy/build.gradle.kts +++ b/samples/multi-tenancy/build.gradle.kts @@ -21,13 +21,13 @@ plugins { dependencies { implementation(libs.edc.boot) + implementation(libs.edc.iam.mock) implementation(project(":edc-controlplane:edc-controlplane-base")) { exclude("org.eclipse.tractusx.edc", "data-encryption") exclude(module = "ssi-miw-credential-client") exclude(module = "ssi-identity-core") exclude(module = "auth-tokenbased") } - implementation(libs.edc.iam.mock) implementation(libs.edc.core.controlplane) } diff --git a/settings.gradle.kts b/settings.gradle.kts index d6c0b6543..35c9e4497 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -37,7 +37,6 @@ include(":edc-extensions:bpn-validation:bpn-validation-api") include(":edc-extensions:bpn-validation:bpn-validation-spi") include(":edc-extensions:bpn-validation:bpn-validation-core") include(":edc-extensions:bpn-validation:business-partner-store-sql") -include(":edc-extensions:cx-oauth2") include(":edc-extensions:data-encryption") include(":edc-extensions:dataplane-selector-configuration") include(":edc-extensions:postgresql-migration") From 4a68e34ab47ff119b6e8dcd663db68ba6b809efd Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Fri, 15 Dec 2023 14:27:15 +0100 Subject: [PATCH 12/83] feat: integrate `PolicyMonitor` (#930) * feat: add policy monitor to the control plane runtime * comment policymonitor * Reintroduce policy manager * Comment policy manager * raise poll interval * Raise timeout * add httpdata validator --- .github/workflows/verify.yaml | 2 +- DEPENDENCIES | 5 + .../edc-controlplane-base/build.gradle.kts | 2 + ...rg.eclipse.edc.spi.system.ServiceExtension | 21 ---- edc-tests/e2e-tests/build.gradle.kts | 19 +++- .../ContractNegotiationHelperFunctions.java | 11 +- .../TransferProcessHelperFunctions.java | 5 +- .../tractusx/edc/lifecycle/Participant.java | 24 ++-- .../tractusx/edc/tests/TestCommon.java | 24 ++++ .../edc/tests/edr/AbstractDeleteEdrTest.java | 4 +- .../tests/edr/AbstractNegotiateEdrTest.java | 7 +- .../edc/tests/edr/AbstractRenewalEdrTest.java | 6 +- .../AbstractContractNegotiateTest.java | 6 +- .../policy/AbstractPolicyMonitorTest.java | 105 ++++++++++++++++++ .../policy/PolicyMonitorInMemoryTest.java | 61 ++++++++++ .../policy/PolicyMonitorPostgresqlTest.java | 45 ++++++++ .../proxy/AbstractDataPlaneProxyTest.java | 9 +- ...AbstractHttpConsumerPullWithProxyTest.java | 6 +- .../AbstractHttpProviderPushTest.java | 5 +- .../runtime/dataplane-cloud/build.gradle.kts | 2 - gradle/libs.versions.toml | 7 +- 21 files changed, 293 insertions(+), 83 deletions(-) delete mode 100644 edc-extensions/bpn-validation/bpn-validation-spi/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index fdb4f7b96..2274543be 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -118,7 +118,7 @@ jobs: - uses: ./.github/actions/setup-java - name: Run E2E tests - run: ./gradlew test -DincludeTags="EndToEndTest" + run: ./gradlew test -DincludeTags="EndToEndTest" -PverboseTest=true postgres-tests: runs-on: ubuntu-latest diff --git a/DEPENDENCIES b/DEPENDENCIES index f76cf020a..ede844d58 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -327,6 +327,7 @@ maven/mavencentral/org.eclipse.edc/junit/0.4.1, Apache-2.0, approved, technology maven/mavencentral/org.eclipse.edc/jwt-core/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/jwt-spi/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/management-api-configuration/0.4.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/management-api/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/micrometer-core/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/oauth2-client/0.4.1, Apache-2.0, approved, technology.edc @@ -337,6 +338,9 @@ maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.4.1, Apache-2.0, approved maven/mavencentral/org.eclipse.edc/policy-engine/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-evaluator/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-model/0.4.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.4.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.4.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-spi/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/sql-core/0.4.1, Apache-2.0, approved, technology.edc @@ -357,6 +361,7 @@ maven/mavencentral/org.eclipse.edc/transform-core/0.4.1, Apache-2.0, approved, t maven/mavencentral/org.eclipse.edc/transform-spi/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/util/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/validator-core/0.4.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/validator-spi/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/vault-azure/0.4.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.4.1, Apache-2.0, approved, technology.edc diff --git a/edc-controlplane/edc-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-base/build.gradle.kts index c5c9a30ed..abb6b1809 100644 --- a/edc-controlplane/edc-controlplane-base/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-base/build.gradle.kts @@ -43,8 +43,10 @@ dependencies { runtimeOnly(project(":edc-extensions:cx-policy")) runtimeOnly(libs.edc.core.controlplane) + runtimeOnly(libs.edc.core.policy.monitor) runtimeOnly(libs.edc.config.filesystem) runtimeOnly(libs.edc.auth.tokenbased) + runtimeOnly(libs.edc.validator.data.address.http.data) runtimeOnly(libs.edc.api.management) runtimeOnly(libs.edc.api.controlplane) diff --git a/edc-extensions/bpn-validation/bpn-validation-spi/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension deleted file mode 100644 index 427c43cda..000000000 --- a/edc-extensions/bpn-validation/bpn-validation-spi/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ /dev/null @@ -1,21 +0,0 @@ -# -# Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH -# Copyright (c) 2021,2022 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://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. -# -# SPDX-License-Identifier: Apache-2.0 -# -org.eclipse.tractusx.edc.validation.businesspartner.BusinessPartnerValidationExtension -org.eclipse.tractusx.edc.validation.businesspartner.defaults.DefaultStoreProviderExtension diff --git a/edc-tests/e2e-tests/build.gradle.kts b/edc-tests/e2e-tests/build.gradle.kts index a75623d9d..308142608 100644 --- a/edc-tests/e2e-tests/build.gradle.kts +++ b/edc-tests/e2e-tests/build.gradle.kts @@ -14,6 +14,7 @@ plugins { `java-library` + `java-test-fixtures` } dependencies { @@ -38,18 +39,26 @@ dependencies { testImplementation(libs.edc.ext.jsonld) testImplementation(libs.edc.dsp) testImplementation(testFixtures(libs.edc.sql.core)) + testImplementation(testFixtures(libs.edc.api.management.test.fixtures)) testImplementation(libs.awaitility) - - testCompileOnly(project(":edc-tests:runtime:extensions")) - testCompileOnly(project(":edc-tests:runtime:runtime-memory")) - testCompileOnly(project(":edc-tests:runtime:runtime-memory-ssi")) - testCompileOnly(project(":edc-tests:runtime:runtime-postgresql")) testImplementation(project(":edc-extensions:bpn-validation:bpn-validation-spi")) testImplementation(libs.edc.auth.oauth2.client) testImplementation(libs.testcontainers.junit) testImplementation(libs.testcontainers.postgres) testImplementation(libs.testcontainers.vault) + testCompileOnly(project(":edc-tests:runtime:extensions")) + testCompileOnly(project(":edc-tests:runtime:runtime-memory")) + testCompileOnly(project(":edc-tests:runtime:runtime-memory-ssi")) + testCompileOnly(project(":edc-tests:runtime:runtime-postgresql")) + + testFixturesImplementation(libs.junit.jupiter.api) + testFixturesImplementation(libs.edc.spi.core) + testFixturesImplementation(libs.edc.junit) + testFixturesImplementation(libs.edc.spi.policy) + testFixturesImplementation(libs.edc.spi.contract) + testFixturesImplementation(project(":spi:edr-spi")) + testFixturesImplementation(project(":edc-extensions:bpn-validation:bpn-validation-spi")) } // do not publish diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java index 1665173a7..3d155b029 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java @@ -29,18 +29,13 @@ public class ContractNegotiationHelperFunctions { private static final JsonLd JSON_LD = new TitaniumJsonLd(mock(Monitor.class)); - public static JsonObject createNegotiationRequest(String connectorAddress, String providerId, String offerId, String assetId, JsonObject policy) { + public static JsonObject createNegotiationRequest(String counterPartyAddress, String providerId, JsonObject policy) { return Json.createObjectBuilder() .add(TYPE, EDC_NAMESPACE + "NegotiationInitiateRequestDto") - .add(EDC_NAMESPACE + "connectorId", providerId) .add(EDC_NAMESPACE + "providerId", providerId) - .add(EDC_NAMESPACE + "connectorAddress", connectorAddress) + .add(EDC_NAMESPACE + "counterPartyAddress", counterPartyAddress) .add(EDC_NAMESPACE + "protocol", DATASPACE_PROTOCOL_HTTP) - .add(EDC_NAMESPACE + "offer", Json.createObjectBuilder() - .add(EDC_NAMESPACE + "offerId", offerId) - .add(EDC_NAMESPACE + "assetId", assetId) - .add(EDC_NAMESPACE + "policy", JSON_LD.compact(policy).getContent()) - ) + .add(EDC_NAMESPACE + "policy", JSON_LD.compact(policy).getContent()) .build(); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java index 323a183a8..34e7772a6 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java @@ -24,7 +24,7 @@ public class TransferProcessHelperFunctions { - public static JsonObject createTransferRequest(String dataRequestId, String connectorAddress, String contractId, String assetId, boolean managedResources, JsonObject destination) { + public static JsonObject createTransferRequest(String dataRequestId, String counterPartyAddress, String contractId, String assetId, boolean managedResources, JsonObject destination) { return Json.createObjectBuilder() .add(TYPE, EDC_NAMESPACE + "TransferRequestDto") .add(ID, dataRequestId) @@ -33,9 +33,8 @@ public static JsonObject createTransferRequest(String dataRequestId, String conn .add(EDC_NAMESPACE + "protocol", DATASPACE_PROTOCOL_HTTP) .add(EDC_NAMESPACE + "assetId", assetId) .add(EDC_NAMESPACE + "contractId", contractId) - .add(EDC_NAMESPACE + "connectorAddress", connectorAddress) + .add(EDC_NAMESPACE + "counterPartyAddress", counterPartyAddress) .add(EDC_NAMESPACE + "managedResources", managedResources) - .build(); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java index e7f80c32f..cd1868528 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java @@ -32,7 +32,6 @@ import org.eclipse.tractusx.edc.helpers.ContractDefinitionHelperFunctions; import java.net.URI; -import java.time.Duration; import java.util.Arrays; import java.util.Map; import java.util.UUID; @@ -55,6 +54,8 @@ import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createEdrNegotiationRequest; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; import static org.eclipse.tractusx.edc.helpers.TransferProcessHelperFunctions.createTransferRequest; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; import static org.mockito.Mockito.mock; public class Participant { @@ -71,7 +72,6 @@ public class Participant { private final String bpn; private final String backend; private final JsonLd jsonLd; - private final Duration timeout = Duration.ofSeconds(30); private final ObjectMapper objectMapper = JacksonJsonLd.createObjectMapper(); private final String proxyUrl; @@ -113,6 +113,7 @@ public void createAsset(String id, JsonObject assetProperties, JsonObject dataAd .when() .post("/v3/assets") .then() + .log().ifError() .statusCode(200) .contentType(JSON); } @@ -133,15 +134,18 @@ public void createContractDefinition(String assetId, String definitionId, String .contentType(JSON); } - public void createPolicy(JsonObject policyDefinition) { - baseRequest() + public String createPolicy(JsonObject policyDefinition) { + return baseRequest() .contentType(JSON) .body(policyDefinition) .when() .post("/v2/policydefinitions") .then() + .log().ifError() .statusCode(200) - .contentType(JSON); + .contentType(JSON) + .extract() + .path("@id"); } public void storeBusinessPartner(String bpn, String... groups) { @@ -163,8 +167,7 @@ public String negotiateContract(Participant other, String assetId) { assertThat(dataset).withFailMessage("Catalog received from " + other.runtimeName + " was empty!").isNotEmpty(); var policy = getDatasetFirstPolicy(dataset); - var contractId = getDatasetContractId(dataset); - var requestBody = createNegotiationRequest(other.dspEndpoint, other.getBpn(), contractId.toString(), contractId.assetIdPart(), policy); + var requestBody = createNegotiationRequest(other.dspEndpoint, other.getBpn(), policy); var response = baseRequest() .when() .body(requestBody) @@ -332,18 +335,19 @@ public JsonArray getCatalogDatasets(Participant provider, JsonObject querySpec) var requestBody = createCatalogRequest(querySpec, provider.dspEndpoint); - await().atMost(timeout).untilAsserted(() -> { + await().pollInterval(ASYNC_POLL_INTERVAL).atMost(ASYNC_TIMEOUT).untilAsserted(() -> { + System.out.println("REQUEST CATALOG"); var response = baseRequest() .contentType(JSON) .when() .body(requestBody) .post("/v2/catalog/request") .then() + .log().ifError() .statusCode(200) .extract().body().asString(); var responseBody = objectMapper.readValue(response, JsonObject.class); - var catalog = jsonLd.expand(responseBody).orElseThrow(f -> new EdcException(f.getFailureDetail())); var datasets = catalog.getJsonArray(DCAT_DATASET_ATTRIBUTE); @@ -376,7 +380,7 @@ public String requestAsset(Participant provider, String assetId, JsonObject dest public String waitForAgreementId(String negotiationId) { - await().atMost(timeout).untilAsserted(() -> { + await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { var state = getContractNegotiationField(negotiationId, "state"); assertThat(state).isEqualTo(FINALIZED.name()); }); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java new file mode 100644 index 000000000..91fcca0a9 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.tests; + +import java.time.Duration; + +import static java.time.Duration.ofSeconds; + +public interface TestCommon { + Duration ASYNC_TIMEOUT = ofSeconds(60); + Duration ASYNC_POLL_INTERVAL = ofSeconds(1); +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java index 65cf4ff96..9ca50cddd 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java @@ -25,11 +25,9 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.time.Duration; import java.util.ArrayList; import java.util.UUID; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; @@ -41,12 +39,12 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractDeleteEdrTest { protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); MockWebServer server; @BeforeEach diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java index a2e7873fb..e696d8065 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java @@ -34,12 +34,10 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.time.Duration; import java.util.List; import java.util.Set; import java.util.stream.Collectors; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; @@ -53,6 +51,8 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.waitForEvent; public abstract class AbstractNegotiateEdrTest { @@ -60,9 +60,6 @@ public abstract class AbstractNegotiateEdrTest { protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); - private static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); - MockWebServer server; @BeforeEach diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java index ce1b24060..03778c31a 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java @@ -28,13 +28,11 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.time.Duration; import java.util.List; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.anyOf; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; @@ -52,14 +50,14 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.waitForEvent; public abstract class AbstractRenewalEdrTest { protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); - private static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); MockWebServer server; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java index 4053a77b7..25fbb497e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java @@ -21,10 +21,8 @@ import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; -import java.time.Duration; import java.util.Map; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; @@ -36,13 +34,13 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractContractNegotiateTest { protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); - private static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); @Test @DisplayName("Verify contract negotiation fails with wrong policy") diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java new file mode 100644 index 000000000..0b9f61a23 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.tests.policy; + +import jakarta.json.Json; +import jakarta.json.JsonObject; +import okhttp3.mockwebserver.Dispatcher; +import okhttp3.mockwebserver.MockResponse; +import okhttp3.mockwebserver.MockWebServer; +import okhttp3.mockwebserver.RecordedRequest; +import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.jetbrains.annotations.NotNull; +import org.junit.jupiter.api.Test; + +import java.io.IOException; +import java.util.UUID; + +import static jakarta.json.Json.createObjectBuilder; +import static org.assertj.core.api.Assertions.assertThat; +import static org.awaitility.Awaitility.await; +import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.STARTED; +import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.TERMINATED; +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; +import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; +import static org.eclipse.edc.test.system.utils.PolicyFixtures.inForceDatePolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.policyDefinitionBuilder; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; + +public abstract class AbstractPolicyMonitorTest { + + protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); + protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + private final MockWebServer server = new MockWebServer(); + + @Test + void shouldTerminateTransfer_whenPolicyExpires() throws IOException { + var assetId = UUID.randomUUID().toString(); + PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() + .add(EDC_NAMESPACE + "type", "HttpData") + .add(EDC_NAMESPACE + "contentType", "application/json") + .add(EDC_NAMESPACE + "baseUrl", "http://localhost:" + server.getPort()) + .build()); + startHttpServerProvider(); + + var policy = inForceDatePolicy("gteq", "contractAgreement+0s", "lteq", "contractAgreement+10s"); + var policyId = PLATO.createPolicy(policyDefinitionBuilder(policy).build()); + PLATO.createContractDefinition(assetId, UUID.randomUUID().toString(), policyId, policyId); + + var consumerUrl = server.url("/mock/api/consumer"); + var destination = httpDataAddress(consumerUrl.toString()); + + var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, destination); + await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { + var state = SOKRATES.getTransferProcessState(transferProcessId); + assertThat(state).isEqualTo(STARTED.name()); + }); + + await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { + var state = SOKRATES.getTransferProcessState(transferProcessId); + assertThat(state).isEqualTo(TERMINATED.name()); + }); + } + + private JsonObject httpDataAddress(String baseUrl) { + return createObjectBuilder() + .add(TYPE, EDC_NAMESPACE + "DataAddress") + .add(EDC_NAMESPACE + "type", "HttpData") + .add(EDC_NAMESPACE + "properties", createObjectBuilder() + .add(EDC_NAMESPACE + "baseUrl", baseUrl) + .build()) + .build(); + } + + private void startHttpServerProvider() throws IOException { + server.setDispatcher(new Dispatcher() { + @NotNull + @Override + public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) { + if ("/mock/api/provider".equals(recordedRequest.getPath().split("\\?")[0])) { + return new MockResponse().setResponseCode(200); + } + return new MockResponse().setResponseCode(404); + } + }); + server.start(); + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java new file mode 100644 index 000000000..bc1102c09 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.tests.policy; + +import com.nimbusds.jose.util.Base64; +import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.eclipse.edc.spi.security.Vault; +import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.extension.RegisterExtension; + +import java.security.SecureRandom; + +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; + +@EndToEndTest +public class PolicyMonitorInMemoryTest extends AbstractPolicyMonitorTest { + + @RegisterExtension + protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( + ":edc-tests:runtime:runtime-memory", + SOKRATES_NAME, + SOKRATES_BPN, + sokratesConfiguration() + ); + + @RegisterExtension + protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( + ":edc-tests:runtime:runtime-memory", + PLATO_NAME, + PLATO_BPN, + platoConfiguration() + ); + + @BeforeAll + static void prepare() { + var bytes = new byte[32]; + + new SecureRandom().nextBytes(bytes); + var value = Base64.encode(bytes).toString(); + SOKRATES_RUNTIME.getContext().getService(Vault.class).storeSecret("test-alias", value); + PLATO_RUNTIME.getContext().getService(Vault.class).storeSecret("test-alias", value); + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java new file mode 100644 index 000000000..227587175 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.tests.policy; + +import org.eclipse.edc.junit.annotations.PostgresqlDbIntegrationTest; +import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; +import org.junit.jupiter.api.extension.RegisterExtension; + +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; +import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; + +@PostgresqlDbIntegrationTest +public class PolicyMonitorPostgresqlTest extends AbstractPolicyMonitorTest { + + @RegisterExtension + protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( + ":edc-tests:runtime:runtime-postgresql", + SOKRATES_NAME, + SOKRATES_BPN, + sokratesConfiguration() + ); + @RegisterExtension + protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( + ":edc-tests:runtime:runtime-postgresql", + PLATO_NAME, + PLATO_BPN, + platoConfiguration() + ); +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java index aa7646d7a..44cb86a2e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java @@ -32,12 +32,10 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.time.Duration; import java.util.Set; import java.util.UUID; import java.util.concurrent.TimeUnit; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; @@ -51,6 +49,8 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractDataPlaneProxyTest { @@ -58,12 +58,7 @@ public abstract class AbstractDataPlaneProxyTest { protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); private static final String CUSTOM_BASE_PATH = "/custom"; private static final String CUSTOM_SUB_PATH = "/sub"; - private static final String CUSTOM_QUERY_PARAMS = "foo=bar"; - - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); - private static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); - private static final String CUSTOM_FULL_PATH = CUSTOM_BASE_PATH + CUSTOM_SUB_PATH + "?" + CUSTOM_QUERY_PARAMS; private final ObjectMapper mapper = new ObjectMapper(); private MockWebServer server; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java index 28e1dc5ac..66568a174 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java @@ -27,12 +27,10 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.time.Duration; import java.util.Map; import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.awaitility.pollinterval.FibonacciPollInterval.fibonacci; @@ -45,14 +43,14 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractHttpConsumerPullWithProxyTest { protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); - private static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); private MockWebServer server; @BeforeEach diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java index 0186841c2..36145618d 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java @@ -27,11 +27,9 @@ import org.junit.jupiter.api.Test; import java.io.IOException; -import java.time.Duration; import java.util.UUID; import static jakarta.json.Json.createObjectBuilder; -import static java.time.Duration.ofSeconds; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.COMPLETED; @@ -44,14 +42,13 @@ import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractHttpProviderPushTest { protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); - private static final Duration ASYNC_TIMEOUT = ofSeconds(45); - private static final Duration ASYNC_POLL_INTERVAL = ofSeconds(1); private MockWebServer server; @BeforeEach diff --git a/edc-tests/runtime/dataplane-cloud/build.gradle.kts b/edc-tests/runtime/dataplane-cloud/build.gradle.kts index 90724a443..87a375f0a 100644 --- a/edc-tests/runtime/dataplane-cloud/build.gradle.kts +++ b/edc-tests/runtime/dataplane-cloud/build.gradle.kts @@ -24,8 +24,6 @@ dependencies { runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { exclude("org.eclipse.edc", "api-observability") } - -// implementation(project(":edc-tests:runtime:extensions")) } application { diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3df0f9ddf..62896f7f0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -56,6 +56,7 @@ edc-core-connector = { module = "org.eclipse.edc:connector-core", version.ref = edc-core-jetty = { module = "org.eclipse.edc:jetty-core", version.ref = "edc" } edc-core-jersey = { module = "org.eclipse.edc:jersey-core", version.ref = "edc" } edc-core-api = { module = "org.eclipse.edc:api-core", version.ref = "edc" } +edc-core-policy-monitor = { module = "org.eclipse.edc:policy-monitor-core", version.ref = "edc" } edc-core-sql = { module = "org.eclipse.edc:sql-core", version.ref = "edc" } edc-core-validator = { module = "org.eclipse.edc:validator-core", version.ref = "edc" } edc-core-transform = { module = "org.eclipse.edc:transform-core", version.ref = "edc" } @@ -63,6 +64,7 @@ edc-statemachine = { module = "org.eclipse.edc:state-machine", version.ref = "ed edc-junit = { module = "org.eclipse.edc:junit", version.ref = "edc" } edc-api-management-config = { module = "org.eclipse.edc:management-api-configuration", version.ref = "edc" } edc-api-management = { module = "org.eclipse.edc:management-api", version.ref = "edc" } +edc-api-management-test-fixtures = { module = "org.eclipse.edc:management-api-test-fixtures", version.ref = "edc" } edc-api-catalog = { module = "org.eclipse.edc:catalog-api", version.ref = "edc" } edc-api-observability = { module = "org.eclipse.edc:api-observability", version.ref = "edc" } edc-api-contractnegotiation = { module = "org.eclipse.edc:contract-negotiation-api", version.ref = "edc" } @@ -80,7 +82,7 @@ edc-ext-azure-cosmos-core = { module = "org.eclipse.edc:azure-cosmos-core", vers edc-ext-azure-test = { module = "org.eclipse.edc:azure-test", version.ref = "edc" } edc-ext-jsonld = { module = "org.eclipse.edc:json-ld", version.ref = "edc" } edc-ext-jersey-providers = { module = "org.eclipse.edc:jersey-providers", version.ref = "edc" } - +edc-validator-data-address-http-data = { module = "org.eclipse.edc:validator-data-address-http-data", version.ref = "edc" } # implementations edc-sql-assetindex = { module = "org.eclipse.edc:asset-index-sql", version.ref = "edc" } @@ -91,6 +93,7 @@ edc-sql-policydef = { module = "org.eclipse.edc:policy-definition-store-sql", ve edc-sql-core = { module = "org.eclipse.edc:sql-core", version.ref = "edc" } edc-sql-lease = { module = "org.eclipse.edc:sql-lease", version.ref = "edc" } edc-sql-pool = { module = "org.eclipse.edc:sql-pool-apache-commons", version.ref = "edc" } +edc-sql-policy-monitor = { module = "org.eclipse.edc:policy-monitor-store-sql", version.ref = "edc" } # azure stuff edc-azure-vault = { module = "org.eclipse.edc:vault-azure", version.ref = "edc" } @@ -163,5 +166,5 @@ apicatalog-iron-vc = { module = "com.apicatalog:iron-verifiable-credentials", ve [bundles] edc-connector = ["edc.boot", "edc.core-connector", "edc.core-controlplane", "edc.api-observability"] edc-dpf = ["edc.dpf-transfer", "edc.dpf-selector-core", "edc.dpf-selector-client", "edc.spi-dataplane-selector"] -edc-sqlstores = ["edc.sql-assetindex", "edc.sql-contract-definition", "edc.sql-contract-negotiation", "edc.sql-transferprocess", "edc.sql-policydef"] +edc-sqlstores = ["edc.sql-assetindex", "edc.sql-contract-definition", "edc.sql-contract-negotiation", "edc.sql-transferprocess", "edc.sql-policydef", "edc.sql-policy-monitor"] edc-monitoring = ["edc.micrometer-core", "edc.micrometer-jersey", "edc.micrometer-jetty"] From d36521421855b4407cf0be8280833ca1a0fba80d Mon Sep 17 00:00:00 2001 From: Kilian Haag Date: Fri, 15 Dec 2023 19:00:08 +0100 Subject: [PATCH 13/83] fix(helm): Remove deprecated/separate validation endpoint --- charts/tractusx-connector-memory/README.md | 5 +- .../templates/_helpers.tpl | 9 +- .../templates/deployment-runtime.yaml | 4 - .../templates/service-runtime.yaml | 4 - charts/tractusx-connector-memory/values.yaml | 6 - .../tractusx-connector/templates/_helpers.tpl | 364 +++++++++--------- .../00_local_setup_controlplane.md | 2 +- .../README.md | 6 +- .../README.md | 6 +- edc-controlplane/edc-runtime-memory/README.md | 6 +- .../edc-dataplane-azure-vault/README.md | 4 +- .../edc-dataplane-hashicorp-vault/README.md | 4 +- 12 files changed, 199 insertions(+), 221 deletions(-) diff --git a/charts/tractusx-connector-memory/README.md b/charts/tractusx-connector-memory/README.md index 145340cb8..7ea7be814 100644 --- a/charts/tractusx-connector-memory/README.md +++ b/charts/tractusx-connector-memory/README.md @@ -70,7 +70,7 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.6.0-r | runtime.debug.port | int | `1044` | | | runtime.debug.suspendOnStart | bool | `false` | | | runtime.edr.transferProxyTokenValidity | string | `"2592000"` | | -| runtime.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"protocol":{"path":"/api/v1/dsp","port":8084},"proxy":{"path":"/proxy","port":8186},"public":{"path":"/api/public","port":8086},"validation":{"path":"/validation","port":8082}}` | endpoints of the control plane | +| runtime.endpoints | object | `{"control":{"path":"/control","port":8083},"default":{"path":"/api","port":8080},"management":{"authKey":"password","path":"/management","port":8081},"protocol":{"path":"/api/v1/dsp","port":8084},"proxy":{"path":"/proxy","port":8186},"public":{"path":"/api/public","port":8086}}` | endpoints of the control plane | | runtime.endpoints.control | object | `{"path":"/control","port":8083}` | control api, used for internal control calls. can be added to the internal ingress, but should probably not | | runtime.endpoints.control.path | string | `"/control"` | path for incoming api calls | | runtime.endpoints.control.port | int | `8083` | port for incoming api calls | @@ -84,9 +84,6 @@ helm install my-release tractusx-edc/tractusx-connector-memory --version 0.6.0-r | runtime.endpoints.protocol | object | `{"path":"/api/v1/dsp","port":8084}` | dsp api, used for inter connector communication and must be internet facing | | runtime.endpoints.protocol.path | string | `"/api/v1/dsp"` | path for incoming api calls | | runtime.endpoints.protocol.port | int | `8084` | port for incoming api calls | -| runtime.endpoints.validation | object | `{"path":"/validation","port":8082}` | validation api, only used by the data plane and should not be added to any ingress | -| runtime.endpoints.validation.path | string | `"/validation"` | path for incoming api calls | -| runtime.endpoints.validation.port | int | `8082` | port for incoming api calls | | runtime.env | object | `{}` | | | runtime.envConfigMapNames | list | `[]` | | | runtime.envSecretNames | list | `[]` | | diff --git a/charts/tractusx-connector-memory/templates/_helpers.tpl b/charts/tractusx-connector-memory/templates/_helpers.tpl index 9788b6641..997d6b5a4 100644 --- a/charts/tractusx-connector-memory/templates/_helpers.tpl +++ b/charts/tractusx-connector-memory/templates/_helpers.tpl @@ -107,7 +107,14 @@ Control DSP URL Validation URL */}} {{- define "txdc.runtime.url.validation" -}} -{{- printf "http://%s-runtime:%v%s/token" ( include "txdc.fullname" $ ) $.Values.runtime.endpoints.validation.port $.Values.runtime.endpoints.validation.path -}} +{{- printf "%s/token" ( include "txdc.runtime.url.control" $ ) -}} +{{- end }} + +{{/* +Runtime URL +*/}} +{{- define "txdc.runtime.url.control" -}} +{{- printf "http://%s-runtime:%v%s" ( include "txdc.fullname" $ ) $.Values.runtime.endpoints.control.port $.Values.runtime.endpoints.control.path -}} {{- end }} {{/* diff --git a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml index 1929ba285..5fdf7ddae 100644 --- a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml @@ -188,10 +188,6 @@ spec: - name: "WEB_HTTP_MANAGEMENT_PATH" value: {{ .Values.runtime.endpoints.management.path | quote }} {{- end }} - - name: "WEB_HTTP_VALIDATION_PORT" - value: {{ .Values.runtime.endpoints.validation.port | quote }} - - name: "WEB_HTTP_VALIDATION_PATH" - value: {{ .Values.runtime.endpoints.validation.path | quote }} - name: "WEB_HTTP_CONTROL_PORT" value: {{ .Values.runtime.endpoints.control.port | quote }} - name: "WEB_HTTP_CONTROL_PATH" diff --git a/charts/tractusx-connector-memory/templates/service-runtime.yaml b/charts/tractusx-connector-memory/templates/service-runtime.yaml index c2d45e236..ce87d83a9 100644 --- a/charts/tractusx-connector-memory/templates/service-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/service-runtime.yaml @@ -43,10 +43,6 @@ spec: targetPort: management protocol: TCP name: management - - port: {{ .Values.runtime.endpoints.validation.port }} - targetPort: validation - protocol: TCP - name: validation - port: {{ .Values.runtime.endpoints.protocol.port }} targetPort: protocol protocol: TCP diff --git a/charts/tractusx-connector-memory/values.yaml b/charts/tractusx-connector-memory/values.yaml index 8c1d7c02b..c72ab13ae 100644 --- a/charts/tractusx-connector-memory/values.yaml +++ b/charts/tractusx-connector-memory/values.yaml @@ -91,12 +91,6 @@ runtime: path: /management # -- authentication key, must be attached to each 'X-Api-Key' request header authKey: "password" - # -- validation api, only used by the data plane and should not be added to any ingress - validation: - # -- port for incoming api calls - port: 8082 - # -- path for incoming api calls - path: /validation # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not control: # -- port for incoming api calls diff --git a/charts/tractusx-connector/templates/_helpers.tpl b/charts/tractusx-connector/templates/_helpers.tpl index b3c570bb1..46bc283dc 100644 --- a/charts/tractusx-connector/templates/_helpers.tpl +++ b/charts/tractusx-connector/templates/_helpers.tpl @@ -1,182 +1,182 @@ -{{/* -Expand the name of the chart. -*/}} -{{- define "txdc.name" -}} -{{- default .Chart.Name .Values.nameOverride | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end }} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "txdc.fullname" -}} -{{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- $name := default .Chart.Name .Values.nameOverride }} -{{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} -{{- else }} -{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} -{{- end }} -{{- end }} -{{- end }} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "txdc.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} -{{- end }} - -{{/* -Control Common labels -*/}} -{{- define "txdc.labels" -}} -helm.sh/chart: {{ include "txdc.chart" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end }} - -{{/* -Control Common labels -*/}} -{{- define "txdc.controlplane.labels" -}} -helm.sh/chart: {{ include "txdc.chart" . }} -{{ include "txdc.controlplane.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/component: edc-controlplane -app.kubernetes.io/part-of: edc -{{- end }} - -{{/* -Data Common labels -*/}} -{{- define "txdc.dataplane.labels" -}} -helm.sh/chart: {{ include "txdc.chart" . }} -{{ include "txdc.dataplane.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -app.kubernetes.io/component: edc-dataplane -app.kubernetes.io/part-of: edc -{{- end }} - -{{/* -Control Selector labels -*/}} -{{- define "txdc.controlplane.selectorLabels" -}} -app.kubernetes.io/name: {{ include "txdc.name" . }}-controlplane -app.kubernetes.io/instance: {{ .Release.Name }}-controlplane -{{- end }} - -{{/* -Data Selector labels -*/}} -{{- define "txdc.dataplane.selectorLabels" -}} -app.kubernetes.io/name: {{ include "txdc.name" . }}-dataplane -app.kubernetes.io/instance: {{ .Release.Name }}-dataplane -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "txdc.controlplane.serviceaccount.name" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "txdc.fullname" . ) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "txdc.dataplane.serviceaccount.name" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "txdc.fullname" . ) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} - -{{/* -Control DSP URL -*/}} -{{- define "txdc.controlplane.url.protocol" -}} -{{- if .Values.controlplane.url.protocol }}{{/* if dsp api url has been specified explicitly */}} -{{- .Values.controlplane.url.protocol }} -{{- else }}{{/* else when dsp api url has not been specified explicitly */}} -{{- with (index .Values.controlplane.ingresses 0) }} -{{- if .enabled }}{{/* if ingress enabled */}} -{{- if .tls.enabled }}{{/* if TLS enabled */}} -{{- printf "https://%s" .hostname -}} -{{- else }}{{/* else when TLS not enabled */}} -{{- printf "http://%s" .hostname -}} -{{- end }}{{/* end if tls */}} -{{- else }}{{/* else when ingress not enabled */}} -{{- printf "http://%s-controlplane:%v" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.protocol.port -}} -{{- end }}{{/* end if ingress */}} -{{- end }}{{/* end with ingress */}} -{{- end }}{{/* end if .Values.controlplane.url.protocol */}} -{{- end }} - -{{/* -Validation URL -*/}} -{{- define "txdc.controlplane.url.validation" -}} -{{- printf "http://%s-controlplane:%v%s/token" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.control.port $.Values.controlplane.endpoints.control.path -}} -{{- end }} - -{{/* -Control Plane URL -*/}} -{{- define "txdc.controlplane.url.control" -}} -{{- printf "http://%s-controlplane:%v%s" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.control.port $.Values.controlplane.endpoints.control.path -}} -{{- end }} - -{{/* -Data Control URL -*/}} -{{- define "txdc.dataplane.url.control" -}} -{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" . ) .Values.dataplane.endpoints.control.port .Values.dataplane.endpoints.control.path -}} -{{- end }} - -{{/* -Data Public URL -*/}} -{{- define "txdc.dataplane.url.public" -}} -{{- if .Values.dataplane.url.public }}{{/* if public api url has been specified explicitly */}} -{{- .Values.dataplane.url.public }} -{{- else }}{{/* else when public api url has not been specified explicitly */}} -{{- with (index .Values.dataplane.ingresses 0) }} -{{- if .enabled }}{{/* if ingress enabled */}} -{{- if .tls.enabled }}{{/* if TLS enabled */}} -{{- printf "https://%s%s" .hostname $.Values.dataplane.endpoints.public.path -}} -{{- else }}{{/* else when TLS not enabled */}} -{{- printf "http://%s%s" .hostname $.Values.dataplane.endpoints.public.path -}} -{{- end }}{{/* end if tls */}} -{{- else }}{{/* else when ingress not enabled */}} -{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" $ ) $.Values.dataplane.endpoints.public.port $.Values.dataplane.endpoints.public.path -}} -{{- end }}{{/* end if ingress */}} -{{- end }}{{/* end with ingress */}} -{{- end }}{{/* end if .Values.dataplane.url.public */}} -{{- end }} - -{{/* -Create the name of the service account to use -*/}} -{{- define "txdc.serviceAccountName" -}} -{{- if .Values.serviceAccount.create }} -{{- default (include "txdc.fullname" .) .Values.serviceAccount.name }} -{{- else }} -{{- default "default" .Values.serviceAccount.name }} -{{- end }} -{{- end }} +{{/* +Expand the name of the chart. +*/}} +{{- define "txdc.name" -}} +{{- default .Chart.Name .Values.nameOverride | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "txdc.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "txdc.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Control Common labels +*/}} +{{- define "txdc.labels" -}} +helm.sh/chart: {{ include "txdc.chart" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Control Common labels +*/}} +{{- define "txdc.controlplane.labels" -}} +helm.sh/chart: {{ include "txdc.chart" . }} +{{ include "txdc.controlplane.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/component: edc-controlplane +app.kubernetes.io/part-of: edc +{{- end }} + +{{/* +Data Common labels +*/}} +{{- define "txdc.dataplane.labels" -}} +helm.sh/chart: {{ include "txdc.chart" . }} +{{ include "txdc.dataplane.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +app.kubernetes.io/component: edc-dataplane +app.kubernetes.io/part-of: edc +{{- end }} + +{{/* +Control Selector labels +*/}} +{{- define "txdc.controlplane.selectorLabels" -}} +app.kubernetes.io/name: {{ include "txdc.name" . }}-controlplane +app.kubernetes.io/instance: {{ .Release.Name }}-controlplane +{{- end }} + +{{/* +Data Selector labels +*/}} +{{- define "txdc.dataplane.selectorLabels" -}} +app.kubernetes.io/name: {{ include "txdc.name" . }}-dataplane +app.kubernetes.io/instance: {{ .Release.Name }}-dataplane +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "txdc.controlplane.serviceaccount.name" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "txdc.fullname" . ) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "txdc.dataplane.serviceaccount.name" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "txdc.fullname" . ) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} + +{{/* +Control DSP URL +*/}} +{{- define "txdc.controlplane.url.protocol" -}} +{{- if .Values.controlplane.url.protocol }}{{/* if dsp api url has been specified explicitly */}} +{{- .Values.controlplane.url.protocol }} +{{- else }}{{/* else when dsp api url has not been specified explicitly */}} +{{- with (index .Values.controlplane.ingresses 0) }} +{{- if .enabled }}{{/* if ingress enabled */}} +{{- if .tls.enabled }}{{/* if TLS enabled */}} +{{- printf "https://%s" .hostname -}} +{{- else }}{{/* else when TLS not enabled */}} +{{- printf "http://%s" .hostname -}} +{{- end }}{{/* end if tls */}} +{{- else }}{{/* else when ingress not enabled */}} +{{- printf "http://%s-controlplane:%v" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.protocol.port -}} +{{- end }}{{/* end if ingress */}} +{{- end }}{{/* end with ingress */}} +{{- end }}{{/* end if .Values.controlplane.url.protocol */}} +{{- end }} + +{{/* +Validation URL +*/}} +{{- define "txdc.controlplane.url.validation" -}} +{{- printf "%s/token" ( include "txdc.controlplane.url.control" $ ) -}} +{{- end }} + +{{/* +Control Plane URL +*/}} +{{- define "txdc.controlplane.url.control" -}} +{{- printf "http://%s-controlplane:%v%s" ( include "txdc.fullname" $ ) $.Values.controlplane.endpoints.control.port $.Values.controlplane.endpoints.control.path -}} +{{- end }} + +{{/* +Data Control URL +*/}} +{{- define "txdc.dataplane.url.control" -}} +{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" . ) .Values.dataplane.endpoints.control.port .Values.dataplane.endpoints.control.path -}} +{{- end }} + +{{/* +Data Public URL +*/}} +{{- define "txdc.dataplane.url.public" -}} +{{- if .Values.dataplane.url.public }}{{/* if public api url has been specified explicitly */}} +{{- .Values.dataplane.url.public }} +{{- else }}{{/* else when public api url has not been specified explicitly */}} +{{- with (index .Values.dataplane.ingresses 0) }} +{{- if .enabled }}{{/* if ingress enabled */}} +{{- if .tls.enabled }}{{/* if TLS enabled */}} +{{- printf "https://%s%s" .hostname $.Values.dataplane.endpoints.public.path -}} +{{- else }}{{/* else when TLS not enabled */}} +{{- printf "http://%s%s" .hostname $.Values.dataplane.endpoints.public.path -}} +{{- end }}{{/* end if tls */}} +{{- else }}{{/* else when ingress not enabled */}} +{{- printf "http://%s-dataplane:%v%s" (include "txdc.fullname" $ ) $.Values.dataplane.endpoints.public.port $.Values.dataplane.endpoints.public.path -}} +{{- end }}{{/* end if ingress */}} +{{- end }}{{/* end with ingress */}} +{{- end }}{{/* end if .Values.dataplane.url.public */}} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "txdc.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "txdc.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md b/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md index 1ee5059a8..9de21147f 100644 --- a/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md +++ b/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md @@ -127,7 +127,7 @@ Once the configuration is created, the container can be run directly via docker. ```shell docker run \ - -p 8080:8080 -p 8181:8181 -p 8182:8182 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ + -p 8080:8080 -p 8181:8181 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ -v ${CONFIGURATION_PROPERTIES_FILE:-/dev/null}:/app/configuration.properties \ -v ${LOGGING_PROPERTIES_FILE:-/dev/null}:/app/logging.properties \ -v ${OPENTELEMETRY_PROPERTIES_FILE:-/dev/null}:/app/opentelemetry.properties \ diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md index ac6275657..ff163cb54 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md @@ -20,8 +20,6 @@ Details regarding each configuration property can be found at the [documentary s | web.http.default.path | X | /api | | | web.http.data.port | X | 8181 | | | web.http.data.path | X | | | -| web.http.validation.port | X | 8182 | | -| web.http.validation.path | X | /validation | | | web.http.control.port | X | 9999 | | | web.http.control.path | X | /api/controlplane/control | | | web.http.ids.port | X | 8282 | | @@ -77,8 +75,6 @@ web.http.default.port=8080 web.http.default.path=/api web.http.data.port=8181 web.http.data.path=/data -web.http.validation.port=8182 -web.http.validation.path=/validation web.http.control.port=9999 web.http.control.path=/api/controlplane/control web.http.ids.port=8282 @@ -165,7 +161,7 @@ EOF ```shell docker run \ - -p 8080:8080 -p 8181:8181 -p 8182:8182 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ + -p 8080:8080 -p 8181:8181 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ -v ${CONFIGURATION_PROPERTIES_FILE:-/dev/null}:/app/configuration.properties \ -v ${LOGGING_PROPERTIES_FILE:-/dev/null}:/app/logging.properties \ -v ${OPENTELEMETRY_PROPERTIES_FILE:-/dev/null}:/app/opentelemetry.properties \ diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md index 564ac7101..3655f0c88 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md @@ -20,8 +20,6 @@ Details regarding each configuration property can be found at the [documentary s | web.http.default.path | X | /api | | | web.http.data.port | X | 8181 | | | web.http.data.path | X | /data | | -| web.http.validation.port | X | 8182 | | -| web.http.validation.path | X | /validation | | | web.http.control.port | X | 9999 | | | web.http.control.path | X | /api/controlplane/control | | | web.http.ids.port | X | 8282 | | @@ -76,8 +74,6 @@ web.http.default.port=8080 web.http.default.path=/api web.http.data.port=8181 web.http.data.path=/data -web.http.validation.port=8182 -web.http.validation.path=/validation web.http.control.port=9999 web.http.control.path=/api/controlplane/control web.http.ids.port=8282 @@ -162,7 +158,7 @@ EOF ```shell docker run \ - -p 8080:8080 -p 8181:8181 -p 8182:8182 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ + -p 8080:8080 -p 8181:8181 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ -v ${CONFIGURATION_PROPERTIES_FILE:-/dev/null}:/app/configuration.properties \ -v ${LOGGING_PROPERTIES_FILE:-/dev/null}:/app/logging.properties \ -v ${OPENTELEMETRY_PROPERTIES_FILE:-/dev/null}:/app/opentelemetry.properties \ diff --git a/edc-controlplane/edc-runtime-memory/README.md b/edc-controlplane/edc-runtime-memory/README.md index 377f566c2..b356fa206 100644 --- a/edc-controlplane/edc-runtime-memory/README.md +++ b/edc-controlplane/edc-runtime-memory/README.md @@ -31,8 +31,6 @@ the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tr | web.http.default.path | X | /api | | | web.http.data.port | X | 8181 | | | web.http.data.path | X | /data | | -| web.http.validation.port | X | 8182 | | -| web.http.validation.path | X | /validation | | | web.http.control.port | X | 9999 | | | web.http.control.path | X | /api/controlplane/control | | | web.http.ids.port | X | 8282 | | @@ -65,8 +63,6 @@ web.http.default.port=8080 web.http.default.path=/api web.http.data.port=8181 web.http.data.path=/data -web.http.validation.port=8182 -web.http.validation.path=/validation web.http.control.port=9999 web.http.control.path=/api/controlplane/control web.http.ids.port=8282 @@ -114,7 +110,7 @@ EOF ```shell docker run \ -e SECRETS="key1:secret1,key2:secret2" \ - -p 8080:8080 -p 8181:8181 -p 8182:8182 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ + -p 8080:8080 -p 8181:8181 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ -v ${CONFIGURATION_PROPERTIES_FILE:-/dev/null}:/app/configuration.properties \ -v ${LOGGING_PROPERTIES_FILE:-/dev/null}:/app/logging.properties \ -i edc-runtime-memory:latest diff --git a/edc-dataplane/edc-dataplane-azure-vault/README.md b/edc-dataplane/edc-dataplane-azure-vault/README.md index 255adfa26..470301c2a 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/README.md +++ b/edc-dataplane/edc-dataplane-azure-vault/README.md @@ -27,7 +27,7 @@ Details regarding each configuration property can be found at the [documentary s | edc.vault.tenantid | X | 55555555-6666-7777-8888-999999999999 | | | edc.vault.name | X | my-vault-name | | | edc.vault.clientsecret | X | 34-chars-secret | | -| edc.dataplane.token.validation.endpoint | X | | | +| edc.dataplane.token.validation.endpoint | X | | | ### Example configuration.properties @@ -46,7 +46,7 @@ web.http.control.port=9999 web.http.control.path=/api/dataplane/control # Validation endpoint of controlplane -edc.dataplane.token.validation.endpoint=http://controlplane:8182/validation/token +edc.dataplane.token.validation.endpoint=http://controlplane:9999/control/token # EDC hostname edc.hostname=localhost diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md index 49da83d76..55a42b471 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md @@ -26,7 +26,7 @@ Details regarding each configuration property can be found at the [documentary s | edc.vault.hashicorp.url | X | | | | edc.vault.hashicorp.token | X | 55555555-6666-7777-8888-999999999999 | | | edc.vault.hashicorp.timeout.seconds | | 30 | | -| edc.dataplane.token.validation.endpoint | X | | | +| edc.dataplane.token.validation.endpoint | X | | | ### Example configuration.properties @@ -45,7 +45,7 @@ web.http.control.port=9999 web.http.control.path=/api/dataplane/control # Validation endpoint of controlplane -edc.dataplane.token.validation.endpoint=http://controlplane:8182/validation/token +edc.dataplane.token.validation.endpoint=http://controlplane:9999/control/token # EDC hostname edc.hostname=localhost From fe4e9b81c10e84f7b019c29d62cd54e6320b4910 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:34:01 +0100 Subject: [PATCH 14/83] chore(deps): bump github/codeql-action from 2 to 3 (#939) Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2 to 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/v2...v3) --- updated-dependencies: - dependency-name: github/codeql-action 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/kics.yml | 2 +- .github/workflows/trivy.yml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/kics.yml b/.github/workflows/kics.yml index 54eae1822..64c65eddc 100644 --- a/.github/workflows/kics.yml +++ b/.github/workflows/kics.yml @@ -54,6 +54,6 @@ jobs: - name: Upload SARIF file for GitHub Advanced Security Dashboard if: always() - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: kicsResults/results.sarif diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index d86c396cb..4d8075457 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -67,7 +67,7 @@ jobs: output: "trivy-results-config.sarif" severity: "CRITICAL,HIGH" - name: Upload Trivy scan results to GitHub Security tab - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 if: always() with: sarif_file: "trivy-results-config.sarif" @@ -111,6 +111,6 @@ jobs: timeout: "10m0s" - name: Upload Trivy scan results to GitHub Security tab if: success() && steps.imageCheck.outcome != 'failure' - uses: github/codeql-action/upload-sarif@v2 + uses: github/codeql-action/upload-sarif@v3 with: sarif_file: "trivy-results-${{ matrix.image }}.sarif" From e81f90219e1247aa47e5d271b866511856af6aab Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:46:07 +0100 Subject: [PATCH 15/83] chore(deps): bump mikefarah/yq from 4.40.4 to 4.40.5 (#938) Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from 4.40.4 to 4.40.5. - [Release notes](https://github.com/mikefarah/yq/releases) - [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt) - [Commits](https://github.com/mikefarah/yq/compare/v4.40.4...v4.40.5) --- updated-dependencies: - dependency-name: mikefarah/yq 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/draft-new-release.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/draft-new-release.yaml b/.github/workflows/draft-new-release.yaml index a4271571c..69e971b9c 100644 --- a/.github/workflows/draft-new-release.yaml +++ b/.github/workflows/draft-new-release.yaml @@ -53,7 +53,7 @@ jobs: GITHUB_PACKAGE_USERNAME: ${{ github.actor }} GITHUB_PACKAGE_PASSWORD: ${{ secrets.GITHUB_TOKEN }} - name: Bump version in /charts - uses: mikefarah/yq@v4.40.4 + uses: mikefarah/yq@v4.40.5 with: cmd: |- find charts -name Chart.yaml -maxdepth 3 | xargs -n1 yq -i '.appVersion = "${{ github.event.inputs.version }}" | .version = "${{ github.event.inputs.version }}"' From a57e69a01be39580c9bf185ecb7da8ec81a5b544 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:04:30 +0100 Subject: [PATCH 16/83] chore(deps): bump com.apicatalog:titanium-json-ld from 1.3.2 to 1.3.3 (#941) * chore(deps): bump com.apicatalog:titanium-json-ld from 1.3.2 to 1.3.3 Bumps [com.apicatalog:titanium-json-ld](https://github.com/filip26/titanium-json-ld) from 1.3.2 to 1.3.3. - [Release notes](https://github.com/filip26/titanium-json-ld/releases) - [Commits](https://github.com/filip26/titanium-json-ld/compare/v1.3.2...v1.3.3) --- updated-dependencies: - dependency-name: com.apicatalog:titanium-json-ld dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 1 + gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index ede844d58..833e9302a 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -3,6 +3,7 @@ maven/mavencentral/com.apicatalog/iron-verifiable-credentials/0.8.1, Apache-2.0, maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.1, Apache-2.0, approved, #8912 maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.2, Apache-2.0, approved, #8912 +maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.3, Apache-2.0, approved, #8912 maven/mavencentral/com.azure/azure-core-http-netty/1.13.11, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.7, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.9, MIT AND Apache-2.0, approved, #7948 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 62896f7f0..655186a11 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -19,7 +19,7 @@ aws = "2.21.5" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.24.2" -titanium = "1.3.2" +titanium = "1.3.3" jackson = "2.15.3" jakarta-json = "2.0.1" tink = "1.11.0" From 1d9b68e5f2fb11ca1916ba849cd88393e979ca4a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:21:02 +0100 Subject: [PATCH 17/83] chore(deps): bump aws from 2.21.5 to 2.22.0 (#942) * chore(deps): bump aws from 2.21.5 to 2.22.0 Bumps `aws` from 2.21.5 to 2.22.0. Updates `software.amazon.awssdk:s3` from 2.21.5 to 2.22.0 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.21.5 to 2.22.0 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 833e9302a..2e42b8929 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -492,58 +492,58 @@ maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-C maven/mavencentral/org.yaml/snakeyaml/2.1, Apache-2.0, approved, #9847 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.21.15, Apache-2.0, approved, #11137 -maven/mavencentral/software.amazon.awssdk/annotations/2.21.5, Apache-2.0, approved, #11137 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.21.15, Apache-2.0, approved, #11133 -maven/mavencentral/software.amazon.awssdk/apache-client/2.21.5, Apache-2.0, approved, #11133 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.21.15, Apache-2.0, approved, #11143 -maven/mavencentral/software.amazon.awssdk/arns/2.21.5, Apache-2.0, approved, #11143 +maven/mavencentral/software.amazon.awssdk/arns/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.21.15, Apache-2.0, approved, #11139 -maven/mavencentral/software.amazon.awssdk/auth/2.21.5, Apache-2.0, approved, #11139 +maven/mavencentral/software.amazon.awssdk/auth/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.21.15, Apache-2.0, approved, #11126 -maven/mavencentral/software.amazon.awssdk/aws-core/2.21.5, Apache-2.0, approved, #11126 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.21.15, Apache-2.0, approved, #11123 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.21.5, Apache-2.0, approved, #11123 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.21.15, Apache-2.0, approved, #11124 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.21.5, Apache-2.0, approved, #11124 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.21.15, Apache-2.0, approved, #11131 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.21.5, Apache-2.0, approved, #11131 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.21.15, Apache-2.0, approved, #11134 -maven/mavencentral/software.amazon.awssdk/checksums/2.21.5, Apache-2.0, approved, #11134 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.21.15, Apache-2.0, approved, #11130 -maven/mavencentral/software.amazon.awssdk/crt-core/2.21.5, Apache-2.0, approved, #11130 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.21.15, Apache-2.0, approved, #11118 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.21.5, Apache-2.0, approved, #11118 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.21.15, Apache-2.0, approved, #11145 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.21.5, Apache-2.0, approved, #11145 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.21.15, Apache-2.0, approved, #11128 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.21.5, Apache-2.0, approved, #11128 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.21.15, Apache-2.0, approved, #11120 -maven/mavencentral/software.amazon.awssdk/http-auth/2.21.5, Apache-2.0, approved, #11120 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.21.15, Apache-2.0, approved, #11132 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.21.5, Apache-2.0, approved, #11132 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/iam/2.21.15, Apache-2.0, approved, #11138 maven/mavencentral/software.amazon.awssdk/identity-spi/2.21.15, Apache-2.0, approved, #11129 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.21.5, Apache-2.0, approved, #11129 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.21.15, Apache-2.0, approved, #11119 -maven/mavencentral/software.amazon.awssdk/json-utils/2.21.5, Apache-2.0, approved, #11119 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.21.15, Apache-2.0, approved, #11144 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.21.5, Apache-2.0, approved, #11144 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.21.15, Apache-2.0, approved, #11140 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.21.5, Apache-2.0, approved, #11140 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.21.15, Apache-2.0, approved, #11148 -maven/mavencentral/software.amazon.awssdk/profiles/2.21.5, Apache-2.0, approved, #11148 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.21.15, Apache-2.0, approved, #11141 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.21.5, Apache-2.0, approved, #11141 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.21.15, Apache-2.0, approved, #11142 -maven/mavencentral/software.amazon.awssdk/regions/2.21.5, Apache-2.0, approved, #11142 -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.21.5, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.21.15, Apache-2.0, approved, #11135 -maven/mavencentral/software.amazon.awssdk/s3/2.21.5, Apache-2.0, approved, #11135 +maven/mavencentral/software.amazon.awssdk/s3/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.21.15, Apache-2.0, approved, #11121 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.21.5, Apache-2.0, approved, #11121 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sts/2.21.15, Apache-2.0, approved, #11146 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.21.15, Apache-2.0, approved, #11127 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.21.5, Apache-2.0, approved, #11127 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.21.15, Apache-2.0, approved, #11136 -maven/mavencentral/software.amazon.awssdk/utils/2.21.5, Apache-2.0, approved, #11136 +maven/mavencentral/software.amazon.awssdk/utils/2.22.0, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 655186a11..a3f61d276 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.3.2" apache-sshd = "2.11.0" testcontainers = "1.19.3" -aws = "2.21.5" +aws = "2.22.0" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.24.2" From b6582509fc50cd78b25ef3c7f4c993fa578375e0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:40:54 +0100 Subject: [PATCH 18/83] chore(deps): bump io.rest-assured:rest-assured from 5.3.2 to 5.4.0 (#943) * chore(deps): bump io.rest-assured:rest-assured from 5.3.2 to 5.4.0 Bumps [io.rest-assured:rest-assured](https://github.com/rest-assured/rest-assured) from 5.3.2 to 5.4.0. - [Changelog](https://github.com/rest-assured/rest-assured/blob/master/changelog.txt) - [Commits](https://github.com/rest-assured/rest-assured/commits/rest-assured-5.4.0) --- updated-dependencies: - dependency-name: io.rest-assured:rest-assured dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 15 ++++++++------- gradle/libs.versions.toml | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 2e42b8929..5ec0962a9 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -177,10 +177,11 @@ maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.39, Apache-2.0 maven/mavencentral/io.projectreactor/reactor-core/3.4.31, Apache-2.0, approved, #7517 maven/mavencentral/io.projectreactor/reactor-core/3.4.33, Apache-2.0, approved, #7517 maven/mavencentral/io.projectreactor/reactor-core/3.4.34, Apache-2.0, approved, #7517 -maven/mavencentral/io.rest-assured/json-path/5.3.2, Apache-2.0, approved, #9261 -maven/mavencentral/io.rest-assured/rest-assured-common/5.3.2, Apache-2.0, approved, #9264 +maven/mavencentral/io.rest-assured/json-path/5.4.0, Apache-2.0, approved, #12042 +maven/mavencentral/io.rest-assured/rest-assured-common/5.4.0, Apache-2.0, approved, #12039 maven/mavencentral/io.rest-assured/rest-assured/5.3.2, Apache-2.0, approved, #9262 -maven/mavencentral/io.rest-assured/xml-path/5.3.2, Apache-2.0, approved, #9267 +maven/mavencentral/io.rest-assured/rest-assured/5.4.0, Apache-2.0, approved, #12040 +maven/mavencentral/io.rest-assured/xml-path/5.4.0, Apache-2.0, approved, #12038 maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.15, Apache-2.0, approved, #5947 maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.19, Apache-2.0, approved, #5947 @@ -223,10 +224,10 @@ maven/mavencentral/org.apache.commons/commons-compress/1.24.0, Apache-2.0 AND BS maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, CQ22642 maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-pool2/2.12.0, Apache-2.0 AND LicenseRef-Public-Domain, approved, #10843 -maven/mavencentral/org.apache.groovy/groovy-bom/4.0.11, Apache-2.0, approved, #9266 -maven/mavencentral/org.apache.groovy/groovy-json/4.0.11, Apache-2.0, approved, #7411 -maven/mavencentral/org.apache.groovy/groovy-xml/4.0.11, Apache-2.0, approved, #10179 -maven/mavencentral/org.apache.groovy/groovy/4.0.11, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 +maven/mavencentral/org.apache.groovy/groovy-bom/4.0.16, Apache-2.0, approved, #9266 +maven/mavencentral/org.apache.groovy/groovy-json/4.0.16, Apache-2.0, approved, #7411 +maven/mavencentral/org.apache.groovy/groovy-xml/4.0.16, Apache-2.0, approved, #10179 +maven/mavencentral/org.apache.groovy/groovy/4.0.16, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.13, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ23527 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.13, Apache-2.0, approved, CQ23528 maven/mavencentral/org.apache.httpcomponents/httpmime/4.5.13, Apache-2.0, approved, CQ11718 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a3f61d276..b8cf42775 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -12,7 +12,7 @@ okhttp = "4.12.0" mockwebserver = "5.0.0-alpha.11" bouncyCastle-jdk18on = "1.77" mockito = "5.2.0" -restAssured = "5.3.2" +restAssured = "5.4.0" apache-sshd = "2.11.0" testcontainers = "1.19.3" aws = "2.22.0" From 59d2654894779b36984bc0002a00e7e54daa6115 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 11:03:37 +0100 Subject: [PATCH 19/83] chore(deps): bump com.squareup.okhttp3:mockwebserver from 5.0.0-alpha.11 to 5.0.0-alpha.12 (#944) * chore(deps): bump com.squareup.okhttp3:mockwebserver Bumps [com.squareup.okhttp3:mockwebserver](https://github.com/square/okhttp) from 5.0.0-alpha.11 to 5.0.0-alpha.12. - [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md) - [Commits](https://github.com/square/okhttp/compare/jesse-5.0.0-alpha.11...parent-5.0.0-alpha.12) --- updated-dependencies: - dependency-name: com.squareup.okhttp3:mockwebserver dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 22 +++++++++------------- gradle/libs.versions.toml | 2 +- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 5ec0962a9..7f7d647c0 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -79,17 +79,17 @@ maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37, Apache-2.0, approved, #117 maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.2, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/10.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.puppycrawl.tools/checkstyle/10.0, LGPL-2.1-or-later, approved, #7936 -maven/mavencentral/com.squareup.okhttp3/mockwebserver/5.0.0-alpha.11, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.squareup.okhttp3/mockwebserver3/5.0.0-alpha.11, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.squareup.okhttp3/mockwebserver/5.0.0-alpha.12, , restricted, clearlydefined +maven/mavencentral/com.squareup.okhttp3/mockwebserver3/5.0.0-alpha.12, , restricted, clearlydefined maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 -maven/mavencentral/com.squareup.okhttp3/okhttp-jvm/5.0.0-alpha.11, Apache-2.0, approved, #9263 +maven/mavencentral/com.squareup.okhttp3/okhttp-jvm/5.0.0-alpha.12, Apache-2.0, approved, #9263 maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #11156 maven/mavencentral/com.squareup.okhttp3/okhttp/4.9.3, Apache-2.0 AND MPL-2.0, approved, #3225 -maven/mavencentral/com.squareup.okhttp3/okhttp/5.0.0-alpha.11, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.squareup.okio/okio-jvm/3.2.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.squareup.okhttp3/okhttp/5.0.0-alpha.12, , restricted, clearlydefined maven/mavencentral/com.squareup.okio/okio-jvm/3.6.0, Apache-2.0, approved, #11158 -maven/mavencentral/com.squareup.okio/okio/3.2.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.squareup.okio/okio-jvm/3.7.0, , restricted, clearlydefined maven/mavencentral/com.squareup.okio/okio/3.6.0, Apache-2.0, approved, #11155 +maven/mavencentral/com.squareup.okio/okio/3.7.0, , restricted, clearlydefined maven/mavencentral/com.sun.activation/jakarta.activation/2.0.0, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf maven/mavencentral/commons-beanutils/commons-beanutils/1.9.4, Apache-2.0, approved, CQ12654 maven/mavencentral/commons-codec/commons-codec/1.11, Apache-2.0 AND BSD-3-Clause, approved, CQ15971 @@ -416,20 +416,16 @@ maven/mavencentral/org.jacoco/org.jacoco.core/0.8.8, EPL-2.0, approved, CQ23283 maven/mavencentral/org.jacoco/org.jacoco.report/0.8.8, EPL-2.0 AND Apache-2.0, approved, CQ23284 maven/mavencentral/org.javassist/javassist/3.28.0-GA, Apache-2.0 OR LGPL-2.1-or-later OR MPL-1.1, approved, #327 maven/mavencentral/org.javassist/javassist/3.29.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.6.20, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.7.10, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.8.21, Apache-2.0, approved, #8910 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.10, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.7.10, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.8.0, Apache-2.0, approved, #8807 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.8.21, Apache-2.0, approved, #8807 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.9.10, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.6.20, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.7.10, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.8.0, Apache-2.0, approved, #8919 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.8.21, Apache-2.0, approved, #8919 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.9.10, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.7.10, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.8.21, Apache-2.0, approved, #8865 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.10, Apache-2.0, approved, #11827 +maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.21, Apache-2.0, approved, #11827 maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/17.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/24.0.1, Apache-2.0, approved, #7417 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b8cf42775..9e3e35238 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ nimbus = "9.37.2" azure-identity = "1.11.1" slf4j = "2.0.9" okhttp = "4.12.0" -mockwebserver = "5.0.0-alpha.11" +mockwebserver = "5.0.0-alpha.12" bouncyCastle-jdk18on = "1.77" mockito = "5.2.0" restAssured = "5.4.0" From c431a9c007ccd6e4b2563abf7fa47199520a7518 Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Wed, 20 Dec 2023 08:51:49 +0100 Subject: [PATCH 20/83] chore: Changed the state of the transfer process when EDR expires from Completed to Terminated (#948) --- .../edc/edr/core/manager/EdrManagerImpl.java | 12 ++++++------ .../TransferProcessLocalCallback.java | 4 ++-- .../tractusx/edc/lifecycle/Participant.java | 11 +++++++++++ .../edc/tests/edr/AbstractRenewalEdrTest.java | 19 ++++++++++++++++++- 4 files changed, 37 insertions(+), 9 deletions(-) diff --git a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java index bdeb95260..39042ac52 100644 --- a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java +++ b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java @@ -151,7 +151,7 @@ private void update(EndpointDataReferenceEntry edrEntry) { private ProcessorImpl processEdrInState(EndpointDataReferenceEntryStates state, Function function) { - var filter = new Criterion[] {hasState(state.code())}; + var filter = new Criterion[]{ hasState(state.code()) }; return processor(() -> edrCache.nextNotLeased(batchSize, filter), telemetry.contextPropagationMiddleware(function)); } @@ -222,7 +222,7 @@ private StatusResult checkExpiration(EndpointDataReferenceEntry entry) { return StatusResult.success(); } else { breakLease(entry); - return StatusResult.failure(ResponseStatus.ERROR_RETRY, "Not yet expired."); + return StatusResult.success(); } } @@ -302,6 +302,10 @@ private Builder() { edrManager = new EdrManagerImpl(); } + public static Builder newInstance() { + return new Builder(); + } + public Builder contractNegotiationService(ContractNegotiationService negotiationService) { edrManager.contractNegotiationService = negotiationService; return this; @@ -373,9 +377,5 @@ public EdrManagerImpl build() { return edrManager; } - - public static Builder newInstance() { - return new Builder(); - } } } diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java index 6d7774bf8..ad72a815d 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java @@ -151,8 +151,8 @@ private void cleanOldEdr(String assetId, String agreementId) { var transferProcess = transferProcessStore.findById(entry.getTransferProcessId()); - if (transferProcess != null && transferProcess.canBeCompleted()) { - transferProcess.transitionCompleting(); + if (transferProcess != null && transferProcess.canBeTerminated()) { + transferProcess.transitionTerminating(); transferProcessStore.save(transferProcess); } else { monitor.info(format("Cannot terminate transfer process with id: %s", entry.getTransferProcessId())); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java index cd1868528..69e18675d 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java @@ -290,6 +290,17 @@ public String requestTransfer(String dataRequestId, String contractId, String as } + public JsonArray getAllTransferProcess() { + return baseRequest() + .when() + .post("/v2/transferprocesses/request") + .then() + .statusCode(200) + .extract() + .body() + .as(JsonArray.class); + } + public String getTransferProcessState(String id) { return baseRequest() .when() diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java index 03778c31a..aad06babb 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java @@ -130,11 +130,28 @@ void negotiateEdr_shouldRenewTheEdr() throws IOException { .findFirst() .orElseThrow(); + // Check Termination on Sokrates await().pollInterval(fibonacci()) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { var tpState = SOKRATES.getTransferProcessState(transferProcessId); - assertThat(tpState).isNotNull().isEqualTo(TransferProcessStates.COMPLETED.toString()); + assertThat(tpState).isNotNull().isEqualTo(TransferProcessStates.TERMINATED.toString()); + }); + + + // Check Termination on Plato + await().pollInterval(fibonacci()) + .atMost(ASYNC_TIMEOUT) + .untilAsserted(() -> { + var tpState = PLATO.getAllTransferProcess() + .stream() + .filter(json -> json.asJsonObject().getJsonString("correlationId").getString().equals(transferProcessId)) + .map(json -> json.asJsonObject().getJsonString("state").getString()) + .findFirst(); + + assertThat(tpState) + .isPresent() + .hasValue(TransferProcessStates.TERMINATED.toString()); }); } From 69c6c8384cc2cec3efa12b348d007fb49bcbf3c4 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Wed, 20 Dec 2023 09:18:44 +0100 Subject: [PATCH 21/83] feat: switch assets_selector type from text to json --- ...actDefinition_Switch_Assets_Selector_Json.sql | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractdefinition/V0_0_8__Alter_ContractDefinition_Switch_Assets_Selector_Json.sql diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractdefinition/V0_0_8__Alter_ContractDefinition_Switch_Assets_Selector_Json.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractdefinition/V0_0_8__Alter_ContractDefinition_Switch_Assets_Selector_Json.sql new file mode 100644 index 000000000..037b2e6ae --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractdefinition/V0_0_8__Alter_ContractDefinition_Switch_Assets_Selector_Json.sql @@ -0,0 +1,16 @@ +-- +-- Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +-- + +-- switch assets_selector type to json +ALTER TABLE edc_contract_definitions + ALTER COLUMN assets_selector TYPE JSON USING assets_selector::JSON; From d016a5d4ae2907ce5f68569c4c40f3507920d0b2 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Wed, 20 Dec 2023 09:55:09 +0100 Subject: [PATCH 22/83] feat: add migrations for the policy-monitor sql schema --- .../templates/deployment-controlplane.yaml | 10 +++ .../templates/deployment-controlplane.yaml | 10 +++ edc-extensions/postgresql-migration/README.md | 15 ++-- .../AbstractPostgresqlMigrationExtension.java | 71 +++++++++---------- .../AssetPostgresqlMigrationExtension.java | 6 -- ...sinessGroupPostgresMigrationExtension.java | 10 +-- ...efinitionPostgresqlMigrationExtension.java | 6 -- ...gotiationPostgresqlMigrationExtension.java | 6 -- .../DriverManagerConnectionFactory.java | 7 ++ .../EdrPostgresqlMigrationExtension.java | 6 -- ...cyMonitorPostgresqlMigrationExtension.java | 23 ++++++ .../PolicyPostgresqlMigrationExtension.java | 6 -- ...erProcessPostgresqlMigrationExtension.java | 6 -- ...rg.eclipse.edc.spi.system.ServiceExtension | 1 + .../V0_0_1__Init_BusinessGroup_Schema.sql | 0 ..._1__Init_PolicyMonitor_Database_Schema.sql | 46 ++++++++++++ .../edc/lifecycle/PgParticipantRuntime.java | 37 +++------- 17 files changed, 151 insertions(+), 115 deletions(-) create mode 100644 edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java rename edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/{businessgroup => bpn}/V0_0_1__Init_BusinessGroup_Schema.sql (100%) create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy-monitor/V0_0_1__Init_PolicyMonitor_Database_Schema.sql diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml index 48c58f65a..deaf09d95 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml @@ -262,6 +262,16 @@ spec: - name: "EDC_DATASOURCE_EDR_URL" value: {{ tpl .Values.postgresql.jdbcUrl . | quote }} + # see extension https://github.com/eclipse-edc/Connector/tree/main/extensions/policy-monitor/store/sql/policy-monitor-store-sql + - name: "EDC_DATASOURCE_POLICY-MONITOR_NAME" + value: "policy-monitor" + - name: "EDC_DATASOURCE_POLICY-MONITOR_USER" + value: {{ .Values.postgresql.auth.username | required ".Values.postgresql.auth.username is required" | quote }} + - name: "EDC_DATASOURCE_POLICY-MONITOR_PASSWORD" + value: {{ .Values.postgresql.auth.password | required ".Values.postgresql.auth.password is required" | quote }} + - name: "EDC_DATASOURCE_POLICY-MONITOR_URL" + value: {{ tpl .Values.postgresql.jdbcUrl . | quote }} + # see extension https://github.com/eclipse-tractusx/tractusx-edc/tree/main/edc-extensions/bpn-validation/business-partner-store-sql - name: "EDC_DATASOURCE_BPN_NAME" value: "bpn" diff --git a/charts/tractusx-connector/templates/deployment-controlplane.yaml b/charts/tractusx-connector/templates/deployment-controlplane.yaml index d94abb9a4..b47c19b58 100644 --- a/charts/tractusx-connector/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector/templates/deployment-controlplane.yaml @@ -262,6 +262,16 @@ spec: - name: "EDC_DATASOURCE_EDR_URL" value: {{ tpl .Values.postgresql.jdbcUrl . | quote }} + # see extension https://github.com/eclipse-edc/Connector/tree/main/extensions/policy-monitor/store/sql/policy-monitor-store-sql + - name: "EDC_DATASOURCE_POLICY-MONITOR_NAME" + value: "policy-monitor" + - name: "EDC_DATASOURCE_POLICY-MONITOR_USER" + value: {{ .Values.postgresql.auth.username | required ".Values.postgresql.auth.username is required" | quote }} + - name: "EDC_DATASOURCE_POLICY-MONITOR_PASSWORD" + value: {{ .Values.postgresql.auth.password | required ".Values.postgresql.auth.password is required" | quote }} + - name: "EDC_DATASOURCE_POLICY-MONITOR_URL" + value: {{ tpl .Values.postgresql.jdbcUrl . | quote }} + # see extension https://github.com/eclipse-tractusx/tractusx-edc/tree/main/edc-extensions/bpn-validation/business-partner-store-sql - name: "EDC_DATASOURCE_BPN_NAME" value: "bpn" diff --git a/edc-extensions/postgresql-migration/README.md b/edc-extensions/postgresql-migration/README.md index 7a8b848c6..cf3c41db5 100644 --- a/edc-extensions/postgresql-migration/README.md +++ b/edc-extensions/postgresql-migration/README.md @@ -1,12 +1,14 @@ # Postgresql SQL Migration Extension -This extension applies SQL migrations to +This extension applies SQL migrations to these stores: -* the asset-index -* the contract-definition store -* contract-negotiation store -* policy store -* transfer-process store +* asset-index +* contract-definition +* contract-negotiation +* edr +* policy +* policy-monitor +* transfer-process ## Configuration @@ -17,5 +19,6 @@ This extension applies SQL migrations to | org.eclipse.tractusx.edc.postgresql.migration.contractnegotiation.enabled | Enable migration for contract negotiation tables | | true | | org.eclipse.tractusx.edc.postgresql.migration.edr.enabled | Enable migration for edr tables | | true | | org.eclipse.tractusx.edc.postgresql.migration.policy.enabled | Enable migration for policy tables | | true | +| org.eclipse.tractusx.edc.postgresql.migration.policy-monitor.enabled | Enable migration for policy monitor tables | | true | | org.eclipse.tractusx.edc.postgresql.migration.transferprocess.enabled | Enable migration for transfer process tables | | true | | org.eclipse.tractusx.edc.postgresql.migration.schema | The DB schema to be used during migration | | "public" | diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java index e069ca128..ff88d9a9f 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java @@ -20,73 +20,79 @@ package org.eclipse.tractusx.edc.postgresql.migration; +import org.eclipse.edc.runtime.metamodel.annotation.Setting; import org.eclipse.edc.spi.persistence.EdcPersistenceException; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.configuration.Config; import org.eclipse.edc.sql.datasource.ConnectionFactoryDataSource; import org.flywaydb.core.Flyway; import org.flywaydb.core.api.MigrationVersion; -import org.flywaydb.core.api.output.MigrateResult; import java.util.Objects; import java.util.Properties; abstract class AbstractPostgresqlMigrationExtension implements ServiceExtension { + private static final String EDC_DATASOURCE_PREFIX = "edc.datasource"; private static final String MIGRATION_LOCATION_BASE = String.format("classpath:%s", AbstractPostgresqlMigrationExtension.class.getPackageName().replace(".", "/")); - protected abstract String getDataSourceNameConfigurationKey(); + private static final String DEFAULT_MIGRATION_ENABLED_TEMPLATE = "true"; + @Setting(value = "Enable/disables subsystem schema migration", defaultValue = DEFAULT_MIGRATION_ENABLED_TEMPLATE, type = "boolean") + private static final String MIGRATION_ENABLED_TEMPLATE = "org.eclipse.tractusx.edc.postgresql.migration.%s.enabled"; + + private static final String DEFAULT_MIGRATION_SCHEMA = "public"; + @Setting(value = "Schema used for the migration", defaultValue = DEFAULT_MIGRATION_SCHEMA) + private static final String MIGRATION_SCHEMA = "org.eclipse.tractusx.edc.postgresql.migration.schema"; + + @Override + public String name() { + return "Postgresql schema migration for subsystem " + getSubsystemName(); + } protected abstract String getSubsystemName(); @Override public void initialize(final ServiceExtensionContext context) { - final String subSystemName = Objects.requireNonNull(getSubsystemName()); + var config = context.getConfig(); + + var subSystemName = Objects.requireNonNull(getSubsystemName()); + var enabled = config.getBoolean(MIGRATION_ENABLED_TEMPLATE.formatted(subSystemName), Boolean.valueOf(DEFAULT_MIGRATION_ENABLED_TEMPLATE)); - final String dataSourceName = - context.getConfig().getString(getDataSourceNameConfigurationKey(), null); - if (dataSourceName == null) { + if (!enabled) { return; } - boolean enabled = context.getConfig() - .getBoolean(String.format("org.eclipse.tractusx.edc.postgresql.migration.%s.enabled", subSystemName), true); - String schema = context.getConfig() - .getString("org.eclipse.tractusx.edc.postgresql.migration.schema", "public"); + var configGroup = "%s.%s".formatted(EDC_DATASOURCE_PREFIX, subSystemName); + var datasourceConfig = config.getConfig(configGroup); - if (!enabled) { + var dataSourceName = datasourceConfig.getString("name", null); + if (dataSourceName == null) { + context.getMonitor().warning("No 'name' setting in group %s found, no schema migrations will run for subsystem %s" + .formatted(configGroup, subSystemName)); return; } - Config datasourceConfiguration = context.getConfig(String.join(".", EDC_DATASOURCE_PREFIX, dataSourceName)); - - final String jdbcUrl = Objects.requireNonNull(datasourceConfiguration.getString("url")); - final Properties jdbcProperties = new Properties(); - jdbcProperties.putAll(datasourceConfiguration.getRelativeEntries()); - - final DriverManagerConnectionFactory driverManagerConnectionFactory = - new DriverManagerConnectionFactory(jdbcUrl, jdbcProperties); - final ConnectionFactoryDataSource dataSource = - new ConnectionFactoryDataSource(driverManagerConnectionFactory); + var jdbcUrl = datasourceConfig.getString("url"); + var jdbcProperties = new Properties(); + jdbcProperties.putAll(datasourceConfig.getRelativeEntries()); - final String schemaHistoryTableName = getSchemaHistoryTableName(subSystemName); - final String migrationsLocation = getMigrationsLocation(); + var driverManagerConnectionFactory = new DriverManagerConnectionFactory(jdbcUrl, jdbcProperties); + var dataSource = new ConnectionFactoryDataSource(driverManagerConnectionFactory); - final Flyway flyway = + var flyway = Flyway.configure() .baselineVersion(MigrationVersion.fromVersion("0.0.0")) .failOnMissingLocations(true) .dataSource(dataSource) - .table(schemaHistoryTableName) - .locations(migrationsLocation) - .defaultSchema(schema) + .table("flyway_schema_history_%s".formatted(subSystemName)) + .locations("%s/%s".formatted(MIGRATION_LOCATION_BASE, subSystemName)) + .defaultSchema(config.getString(MIGRATION_SCHEMA, DEFAULT_MIGRATION_SCHEMA)) .load(); flyway.baseline(); - final MigrateResult migrateResult = flyway.migrate(); + var migrateResult = flyway.migrate(); if (!migrateResult.success) { throw new EdcPersistenceException( @@ -96,11 +102,4 @@ public void initialize(final ServiceExtensionContext context) { } } - private String getMigrationsLocation() { - return String.join("/", MIGRATION_LOCATION_BASE, getSubsystemName()); - } - - private String getSchemaHistoryTableName(final String subSystemName) { - return String.format("flyway_schema_history_%s", subSystemName); - } } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java index ab3d6489a..cf1814a58 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java @@ -20,15 +20,9 @@ package org.eclipse.tractusx.edc.postgresql.migration; -import org.eclipse.edc.connector.store.sql.assetindex.ConfigurationKeys; - public class AssetPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { private static final String NAME_SUBSYSTEM = "asset"; - protected String getDataSourceNameConfigurationKey() { - return ConfigurationKeys.DATASOURCE_SETTING_NAME; - } - protected String getSubsystemName() { return NAME_SUBSYSTEM; } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java index 91125a930..01f5f6810 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java @@ -14,16 +14,8 @@ package org.eclipse.tractusx.edc.postgresql.migration; -import org.eclipse.edc.connector.store.sql.assetindex.ConfigurationKeys; - public class BusinessGroupPostgresMigrationExtension extends AbstractPostgresqlMigrationExtension { - private static final String NAME = "businessgroup"; - - - @Override - protected String getDataSourceNameConfigurationKey() { - return ConfigurationKeys.DATASOURCE_SETTING_NAME; - } + private static final String NAME = "bpn"; @Override protected String getSubsystemName() { diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java index 168814580..fe68a9c7f 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java @@ -23,12 +23,6 @@ public class ContractDefinitionPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { private static final String NAME_SUBSYSTEM = "contractdefinition"; - private static final String DATASOURCE_SETTING_NAME = "edc.datasource.contractdefinition.name"; - - protected String getDataSourceNameConfigurationKey() { - return DATASOURCE_SETTING_NAME; - } - protected String getSubsystemName() { return NAME_SUBSYSTEM; } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java index 760883b54..0ab3f38dd 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java @@ -23,12 +23,6 @@ public class ContractNegotiationPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { private static final String NAME_SUBSYSTEM = "contractnegotiation"; - private static final String DATASOURCE_SETTING_NAME = "edc.datasource.contractnegotiation.name"; - - protected String getDataSourceNameConfigurationKey() { - return DATASOURCE_SETTING_NAME; - } - protected String getSubsystemName() { return NAME_SUBSYSTEM; } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java index 9a273cccc..f4667de28 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java @@ -28,6 +28,13 @@ import java.util.Objects; import java.util.Properties; +/** + * From the EDC version after 0.4.1 this connection factory will be provided as injectable service, so this duplicate + * can be removed on the next version update. + * + * @deprecated will be removed on the next version + */ +@Deprecated(since = "0.6.0") class DriverManagerConnectionFactory implements ConnectionFactory { private final String jdbcUrl; private final Properties properties; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java index 2ebb12bb1..00e77c0d4 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java @@ -17,12 +17,6 @@ public class EdrPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { private static final String NAME_SUBSYSTEM = "edr"; - private static final String DATASOURCE_SETTING_NAME = "edc.datasource.edr.name"; - - protected String getDataSourceNameConfigurationKey() { - return DATASOURCE_SETTING_NAME; - } - protected String getSubsystemName() { return NAME_SUBSYSTEM; } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java new file mode 100644 index 000000000..ba6b71e4e --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.postgresql.migration; + +public class PolicyMonitorPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { + private static final String NAME_SUBSYSTEM = "policy-monitor"; + + protected String getSubsystemName() { + return NAME_SUBSYSTEM; + } +} diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java index 02c7a5314..4921e75ee 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java @@ -23,12 +23,6 @@ public class PolicyPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { private static final String NAME_SUBSYSTEM = "policy"; - private static final String DATASOURCE_SETTING_NAME = "edc.datasource.policy.name"; - - protected String getDataSourceNameConfigurationKey() { - return DATASOURCE_SETTING_NAME; - } - protected String getSubsystemName() { return NAME_SUBSYSTEM; } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java index f9d41b896..6ff1b12c4 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java @@ -23,12 +23,6 @@ public class TransferProcessPostgresqlMigrationExtension extends AbstractPostgresqlMigrationExtension { private static final String NAME_SUBSYSTEM = "transferprocess"; - private static final String DATASOURCE_SETTING_NAME = "edc.datasource.transferprocess.name"; - - protected String getDataSourceNameConfigurationKey() { - return DATASOURCE_SETTING_NAME; - } - protected String getSubsystemName() { return NAME_SUBSYSTEM; } diff --git a/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 9acab3b4d..aaa4c53b0 100644 --- a/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -21,6 +21,7 @@ org.eclipse.tractusx.edc.postgresql.migration.AssetPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.ContractDefinitionPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.ContractNegotiationPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.PolicyPostgresqlMigrationExtension +org.eclipse.tractusx.edc.postgresql.migration.PolicyMonitorPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.TransferProcessPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.EdrPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.BusinessGroupPostgresMigrationExtension diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/businessgroup/V0_0_1__Init_BusinessGroup_Schema.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/bpn/V0_0_1__Init_BusinessGroup_Schema.sql similarity index 100% rename from edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/businessgroup/V0_0_1__Init_BusinessGroup_Schema.sql rename to edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/bpn/V0_0_1__Init_BusinessGroup_Schema.sql diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy-monitor/V0_0_1__Init_PolicyMonitor_Database_Schema.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy-monitor/V0_0_1__Init_PolicyMonitor_Database_Schema.sql new file mode 100644 index 000000000..2e0fe0458 --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy-monitor/V0_0_1__Init_PolicyMonitor_Database_Schema.sql @@ -0,0 +1,46 @@ +-- +-- Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +-- + +-- Statements are designed for and tested with Postgres only! + + +CREATE TABLE IF NOT EXISTS edc_lease +( + leased_by VARCHAR NOT NULL, + leased_at BIGINT, + lease_duration INTEGER NOT NULL, + lease_id VARCHAR NOT NULL + CONSTRAINT lease_pk + PRIMARY KEY +); + +COMMENT ON COLUMN edc_lease.leased_at IS 'posix timestamp of lease'; +COMMENT ON COLUMN edc_lease.lease_duration IS 'duration of lease in milliseconds'; + +CREATE TABLE IF NOT EXISTS edc_policy_monitor +( + entry_id VARCHAR NOT NULL PRIMARY KEY, + state INTEGER NOT NULL , + created_at BIGINT NOT NULL , + updated_at BIGINT NOT NULL , + state_count INTEGER DEFAULT 0 NOT NULL, + state_time_stamp BIGINT, + trace_context JSON, + error_detail VARCHAR, + lease_id VARCHAR + CONSTRAINT policy_monitor_lease_lease_id_fk + REFERENCES edc_lease + ON DELETE SET NULL, + properties JSON, + contract_id VARCHAR +); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java index 8cd68ed4c..d427e5c78 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java @@ -28,6 +28,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Stream; import static java.lang.String.format; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.DB_SCHEMA_NAME; @@ -80,34 +81,14 @@ public Map postgresqlConfiguration(String name) { var jdbcUrl = jdbcUrl(name); return new HashMap<>() { { - put("edc.datasource.asset.name", "asset"); - put("edc.datasource.asset.url", jdbcUrl); - put("edc.datasource.asset.user", USER); - put("edc.datasource.asset.password", PASSWORD); - put("edc.datasource.contractdefinition.name", "contractdefinition"); - put("edc.datasource.contractdefinition.url", jdbcUrl); - put("edc.datasource.contractdefinition.user", USER); - put("edc.datasource.contractdefinition.password", PASSWORD); - put("edc.datasource.contractnegotiation.name", "contractnegotiation"); - put("edc.datasource.contractnegotiation.url", jdbcUrl); - put("edc.datasource.contractnegotiation.user", USER); - put("edc.datasource.contractnegotiation.password", PASSWORD); - put("edc.datasource.policy.name", "policy"); - put("edc.datasource.policy.url", jdbcUrl); - put("edc.datasource.policy.user", USER); - put("edc.datasource.policy.password", PASSWORD); - put("edc.datasource.transferprocess.name", "transferprocess"); - put("edc.datasource.transferprocess.url", jdbcUrl); - put("edc.datasource.transferprocess.user", USER); - put("edc.datasource.transferprocess.password", PASSWORD); - put("edc.datasource.edr.name", "edr"); - put("edc.datasource.edr.url", jdbcUrl); - put("edc.datasource.edr.user", USER); - put("edc.datasource.edr.password", PASSWORD); - put("edc.datasource.bpn.name", "bpn"); - put("edc.datasource.bpn.url", jdbcUrl); - put("edc.datasource.bpn.user", USER); - put("edc.datasource.bpn.password", PASSWORD); + Stream.of("asset", "contractdefinition", "contractnegotiation", "policy", "transferprocess", "edr", "bpn", "policy-monitor") + .forEach(context -> { + var group = "edc.datasource." + context; + put(group + ".name", context); + put(group + ".url", jdbcUrl); + put(group + ".user", USER); + put(group + ".password", PASSWORD); + }); // use non-default schema name to test usage of non-default schema put("org.eclipse.tractusx.edc.postgresql.migration.schema", DB_SCHEMA_NAME); } From 6012093cadf374cc92200dd51dd8c46a2248797d Mon Sep 17 00:00:00 2001 From: arnoweiss Date: Wed, 20 Dec 2023 19:42:19 +0100 Subject: [PATCH 23/83] docs: initial contribution of mgmt-api-walkthrough --- .../01_MGMT_API_Walkthrough/00_Intro.md | 115 ++++++++ .../01_MGMT_API_Walkthrough/01_assets.md | 111 +++++++ .../01_MGMT_API_Walkthrough/02_policies.md | 168 +++++++++++ .../03_contractdefinitions.md | 105 +++++++ .../01_MGMT_API_Walkthrough/04_catalog.md | 167 +++++++++++ .../05_contractnegotiations.md | 272 ++++++++++++++++++ .../06_transferprocesses.md | 154 ++++++++++ .../01_MGMT_API_Walkthrough/07_edrs.md | 140 +++++++++ .../08_contractagreements.md | 66 +++++ 9 files changed, 1298 insertions(+) create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/00_Intro.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/04_catalog.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/06_transferprocesses.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md create mode 100644 docs/kit/Development View/01_MGMT_API_Walkthrough/08_contractagreements.md diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/00_Intro.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/00_Intro.md new file mode 100644 index 000000000..aefe2e3b9 --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/00_Intro.md @@ -0,0 +1,115 @@ +# Management API Overview + +## Introduction + +This walkthrough attempts to be a reference for systems integrators attempting to expose APIs safely to the Catena-X +dataspace. +Please note that improper usage of the Management-API can lead to accidental exposure of competitively sensitive data +and trade secrets. The assumption is that the systems integrator has two tractusx-edc deployments of version 0.5.1 or +higher available (one acting as provider, one acting as consumer). + +The EDC +implements the [Dataspace Protocol (DSP)](https://docs.internationaldataspaces.org/dataspace-protocol/overview/readme), +as specified by the IDSA. As the DSP uses JSON-LD for all payloads, the EDC Management API reflects this as well, even +though it is not a part of the DSP. + +## Endpoints + +The `MANAGEMENT_URL` specifies the URL of the management API and the prefixes `v2` and `v3` respect the fact that the +endpoints are currently versioned independently of each other. + +| Resource | Endpoint | Involved Actors | +|----------------------------------------------------|--------------------------------------------|-------------------------------------------| +| [Asset](01_assets.md) | `/v3/assets` | Provider Admin & Provider EDC | +| [Policy Definition](02_policies.md) | `/v2/policydefinitions` | Provider Admin & Provider EDC | +| [Contract Definition](03_contractdefinitions.md) | `/v2/contractdefinitions` | Provider Admin & Provider EDC | +| [Catalog](04_catalog.md) | `/v2/catalog` | Consumer App, Consumer EDC & Provider EDC | +| [Contract Negotiation](05_contractnegotiations.md) | `/v2/contractnegotiations` | Consumer App, Consumer EDC & Provider EDC | +| [Contract Agreement](08_contractagreements.md) | `/v2/contractagreements` | Provider Admin & Provider EDC | +| [Transfer Process](06_transferprocesses.md) | `/v2/transferprocesses` | Consumer App, Consumer EDC & Provider EDC | +| [EDR](07_edrs.md) | `/edrs` | Consumer App, Consumer EDC & Provider EDC | +| Data Plane | `` | Consumer App & Provider EDC | + +## Brief JSON-LD Introduction + +JSON-LD (JSON for Linked Data) is an extension of JSON that introduces a set of principles and mechanisms to serialize +RDF-graphs and thus open new opportunities for interoperability. As such, there is a clear separation into identifiable +resources (IRIs) and Literals holding primitive data like strings or integers.For developers used to working with JSON, +JSON-LD can act in unexpected ways, for example a list with one entry will always unwrap to an object which may cause +schema validation to fail on the client side. Please also refer to +the [JSON-LD spec](https://www.w3.org/TR/json-ld11/) and try it out on +the [JSON-LD Playground](https://json-ld.org/playground/). + +### Keywords + +JSON-LD includes several important keywords that play a crucial role in defining the structure, semantics, and +relationships +within a JSON-LD document. Since some keys which are required in requests for the new management API aren't +self-explanatory +when you first see them, here are some of the most commonly used and important keywords in JSON-LD. +These keys are generally part of the JSON-LD spec and serve as identification on a larger scope. + +| Key | Description | +|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| @context | Specifies the context for interpreting the meaning of terms and properties within a JSON-LD document. It associates terms with namespaces, vocabularies, or URLs. | +| @vocab | Sets a default namespace or vocabulary for expanding terms within a JSON-LD document. It allows for a more concise representation of properties by omitting the namespace prefix for commonly used terms. | +| @id | Represents the unique identifier (URI or IRI) for a node or resource within a JSON-LD document. It allows for linking and referencing resources. | +| @type | Indicates the type(s) of a node or resource. It is used to specify the class or classes that the resource belongs to, typically using terms from a vocabulary or ontology. | + +### Namespaces + +A namespace is defined by associating a prefix with a URI or IRI in the @context of a JSON-LD document. The prefix is +typically a short string, while the URI or IRI represents a namespace or vocabulary where the terms or properties are +defined. + +Some namespaces are known to the EDC internally. That means that the EDC will resolve all resources to non-prefixed IRIs +given they are not part of the following list: + +| Key | Description | +|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| dct | Defines the prefix "dct" and associates it with the URI "". The prefix "dct" can now be used in the JSON-LD document to represent terms from the Dublin Core Metadata Terms vocabulary. | +| edc | Defines the prefix "edc" and associates it with the URI "". The prefix "edc" can now be used to represent terms from the EDC (Eclipse Dataspace Connect) vocabulary. | +| dcat | Defines the prefix "dcat" and associates it with the URI "". The prefix "dcat" can now be used to represent terms from the DCAT (Data Catalog Vocabulary) vocabulary. | +| odrl | Defines the prefix "odrl" and associates it with the URI "". The prefix "odrl" can now be used to represent terms from the ODRL (Open Digital Rights Language) vocabulary. | +| dspace | Defines the prefix "dspace" and associates it with the URI "". The prefix "dspace" can now be used to represent terms from the DSpace vocabulary. | + +> Please note: The namespace `edc` currently is only a placeholder and does not lead to any JSON-LD context definition +> or vocabulary. +> This may change at a later date. +> Please note: In our samples, except from `odrl` vocabulary terms that must override `edc` default prefixing, +> properties **WILL NOT** be explicitly namespaced, and internal nodes **WILL NOT** be typed, relying on `@vocab` +> prefixing and root schema type inheritance respectively. + +### More documentation and learning resources + +- Setup of EDC infrastructure: + - Read + the ["Connect" section of the E2E-Tutorial](https://eclipse-tractusx.github.io/docs/tutorials/e2e/connect/prepareInfrastructure) + for first steps. It provides an easy-to-start preconfigured deployment of critical Catena-X infrastructure + components. + - The [MXD documentation](https://eclipse-edc.github.io/docs/#/submodule/MinimumViableDataspace/docs/developer/continuous-deployment/continuous_deployment) has a similar section on its setup. + - To deploy and configure the Tractus-X EDC, check + its [documentation](https://github.com/eclipse-tractusx/tractusx-edc/blob/main/README.md). +- Exchanging data via two EDCs: + - Via API: ["Boost" section of the E2E-Tutorial](https://eclipse-tractusx.github.io/docs/tutorials/e2e/boost/). It + is + exemplary and non-comprehensive. + - Via + Frontend: [The MXD-Documentation ](https://eclipse-edc.github.io/docs/#/submodule/MinimumViableDataspace/docs/developer/?id=scenarios-covered) + explains how to use the open-source web-view. +- [Eclipse-EDC Samples](https://github.com/eclipse-edc/Samples): This repo includes a wide variety of setups - many of + which + go beyond this Kit in scope but not in detail. +- openApi-definitions + - [tractusx-edc](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1-SNAPSHOT) + - components-edc: There's separate pages for + the [Management-API](https://app.swaggerhub.com/apis/eclipse-edc-bot/management-api) and + the [Control-API](https://app.swaggerhub.com/apis/eclipse-edc-bot/control-api). + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md new file mode 100644 index 000000000..8061c0118 --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md @@ -0,0 +1,111 @@ +# Creating an Asset + +An Asset is the fundamental representation of an arbitrary backend interface in the EDC. The Data Provider registers it +with its Control Plane as a first step to expose it to the Dataspace via the Dataplane later on. This registration is +executed via the following Request: + +```http +POST /v3/assets HTTP/1.1 +Host: https://provider-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +```json +{ + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/", + "dct": "https://purl.org/dc/terms/" + }, + "@id": "", + "properties": { + "dct:type": { + "@id": "https://my-namespa.ce/my-asset-type" + } + }, + "privateProperties": { + "private-property": "" + }, + "dataAddress": { + "type": "" + } +} +``` + +The `@id` parameter will identify the configured endpoint access permanently. This is the same id that a +data consumer will see when being presented the corresponding data offers when retrieving the [catalog](04_catalog.md). +However, there it won't be styled as an `edc:asset` but as a `dcat:DataSet`. Additionally, there is the possibility to +add `properties` and `privateProperties` to the Asset. The former are exposed in the catalog to potential Data +Consumers. +Private properties, however, can only be seen by the Data Provider (for example via the /v3/assets/request endpoint) +along with the properties. There are conventions in the Catena-X Dataspace how Data Providers should set properties. This enables +Data Consumers to decide what Data Offers they want to negotiate for. This matters especially when the Data Consumer has to add URL-segements or +HTTP bodies to its requests. The value entered as the Asset's `@id` will automatically be added as a redundant `edc:id` +property. + +Most consequential however is the `dataAddress` section of the asset-APIs payload. It configures the Data Plane's +behavior. Depending on the protocol used for data exchange, an EDC will use different Data Planes. This is manifested by +the `type` property of the `dataAddress` object. There +may be arbitrary extensions extending the required parameters in the `dataAddress` section. That's why the following +examples are not complete but should rather be viewed as archetypes of established combinations of technologies. + +The effects of each parameter will be explained by the following examples. + +## HTTP Data Plane + +The HTTP Data Plane of the EDC will proxy an HTTP request that a Data Consumer sends via HTTP. However, the incoming +request will be manipulated by the Data Plane - to what degree depends on the configuration. Let's look at an example: + +```json +{ + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "cx-common": "https://w3id.org/catenax/ontology/common#", + "cx-taxo": "https://w3id.org/catenax/taxonomy#", + "dct": "https://purl.org/dc/terms/" + }, + "@id": "{% uuid 'v4' %}", + "properties": { + "dct:type": { + "@id": "{{ _.asset_type }}" + }, + "cx-common:version": "{{ _.asset_version }}" + }, + "dataAddress": { + "@type": "DataAddress", + "type": "HttpData", + "baseUrl": "https://mycorp.org/api", + "oauth2:tokenUrl": "{{ _.url_keycl_backend }}", + "oauth2:clientId": "{{ _.client_id_backend }}", + "oauth2:clientSecretKey": "{{ _.sec_name_vault }}", + "proxyQueryParams": "true", + "proxyPath": "false", + "proxyMethod": "true" + } +} +``` +The following table shall explain a selection of the parameters. There's a whole lot more in the source code but these +have proven to enable an integration that's quite complete from a functional view. + +| parameter | description | mandatory | default | +|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|---------| +| `baseUrl` | This parameter indicates the location of the backend data source. It's invisible to the Data Consumer and thus, the Data Plane will always resolve the contractId associated with the request's token to the baseUrl, forward the request and pass on the returned data. Thus, for the example above, a request to `https://data.plane` with a valid token attached will be forwarded to `https://mycorp.org/api`. | yes | - | +| `proxyPath` | This stinrg determines whether the Data Plane allows the Data Consumer to attach additional URL-segments to the request. Can be either `"true"` or `"false"`. If this parameter is set `"true"`, the a request `https://data.plane/resources/abcd` will be forwarded to https://mycorp.org/api/resources/abcd. | no | false | +| `path` | If `proxyPath` is false, this parameter can be used to add an additional path to the request when it passes the Data Plane. | no | null | +| `proxyMethod` | This string determines whether the Data Plane allows incoming requests to use HTTP-verbs that are not GET. Can be either `"true"` or `"false"`. If this parameter is set `"false"`, the Data Plane will rewrite `POST https://data.plane` to `GET https://mycorp.org/api` | no | false | +| `method` | If `proxyMethod` is false, this parameter can be used to change the HTTP verb that the Http Data Plane will forward to the backend. | no | "GET" | +| `proxyBody` | This string determines whether the Data Plane forwards the Data Plane request's body to the backend. Can be either `"true"` or `"false"`. | no | false | +| `body` | If `proxyBody` is false, this parameter can be used to set a fixed request body that the Http Data Plane will forward to the backend. | no | null | +| `proxyQueryParams` | This string determines whether the Data Plane forwards the headers that a request has attached. Thus, if `"true"`, a request `GET https://data.plane?q=z` will be rewritten to "https://mycorp.org/api?q=z". Can be either `"true"` or `"false"`. | no | false | +| `queryParams` | Independently of `proxyQueryParams`, this string may include fixed headers that the Data Plane will attach to the incoming request and forward to the backend. | no | null | +| `oauth2:tokenUrl` | If the backend is secured by an oauth2 authentication mechanism, the Data Plane will request an access token at this URL. | no | null | +| `oauth2:clientId` | This is the clientId of the (technical) user that the credential was created for by the backend application. | no | null | +| `oauth2:clientSecretKey` | The Data Provider must store his backend-issued client-secret in a Vault. The key under which the Data Plane can retrieve the secret's value is configured in this field. | no | null | + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md new file mode 100644 index 000000000..50ebe7293 --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md @@ -0,0 +1,168 @@ +# Creating a Policy Definition + +A policy is a declaration of a Data Consumer's rights and duties. Policies themselves make no statements about the +object that they may grant access and usage permission to. They are created at the EDC like this: + +```http +POST /v3/assets HTTP/1.1 +Host: https://provider-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +```json +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "@type": "PolicyDefinitionRequestDto", + "@id": "", + "policy": { + "@type": "Policy", + "odrl:permission": [ + { + "odrl:action": "USE", + "odrl:constraint": { + "@type": "Constraint", + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "" + } + } + ] + } +} + +``` + +In the EDC, policies are pure [ODRL (Open Digital Rights Language)](https://www.w3.org/TR/odrl-model/). +Like the payloads of the [Dataspace Protocol](1-management-api-overview), they are written in JSON-LD. Even if the user +only has rudimentary knowledge of JSON-LD, the [policy playground](https://eclipse-tractusx.github.io/tutorial-resources/policy-playground/) +will provide a good starting point to start writing policies. It is important to keep in mind that the extensive ODRL- +context (that the EDC is aware of) allows for ergonomic reuse of the vocabulary in individual policies. + +## Writing Policies for the EDC + +ODRL's model and expressiveness surpass the EDC's current ability to interpret the policies and derive behavior from +them. This must be kept in mind even when Data Offers based on policies are not yet published to the Dataspace. Here again, +configuring the wrong policies is a risk for unsafe and non-compliant behavior. This is exacerbated by the fact that +the EDC interprets policies it can't evaluate as true by default. A couple of examples: + +### Let all pass +```json +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "@type": "PolicyDefinitionRequest", + "@id": "{% uuid 'v4' %}", + "policy": { + "@type": "Policy", + "odrl:permission": [ + { + "odrl:action": "USE" + } + ] + } +} +``` + +### Only let a Business Partner Group pass + +A Business Partner Group is a group of BPNs that are allowed to pass this constraint. A BPN can be added +to a group even after a Contract Offer for a certain BPN-Group was published. The groups are persisted and maintained +in the Provider's Control Plane. The EDC-Management-API's `/business-partner-groups` endpoint offers CRUD-operations for +it. + +```json +{ + "@context": { + "tx": "https://w3id.org/tractusx/v0.0.1/ns/" + }, + "@type": "PolicyDefinitionRequest", + "@id": "{% uuid 'v4' %}", + "policy": { + "@type": "Set", + "@context": "http://www.w3.org/ns/odrl.jsonld", + "permission": [ + { + "action": "use", + "constraint": [ + { + "leftOperand": "tx:BusinessPartnerGroup", + "operator": "isPartOf", + "rightOperand": "" + } + ] + } + ] + } +} + +``` + +### Chaining Constraints + +Constraints can be chained together via logical constraints. This is currently implemented for `odrl:and`, `odrl:or` +and `odrl:xone` (exactly one constraint evaluates to `true`). + +```json +{ + "@context": { + "tx": "https://w3id.org/tractusx/v0.0.1/ns/" + }, + "@type": "PolicyDefinitionRequest", + "@id": "{{POLICY_ID}}", + "policy": { + "@type": "Set", + "@context": "http://www.w3.org/ns/odrl.jsonld", + "permission": [ + { + "action": "use", + "constraint": [ + { + "@type": "LogicalConstraint", + "and": [ + { + "leftOperand": { + "@value": "" + }, + "operator": "eq", + "rightOperand": "" + }, + { + "leftOperand": "tx:BusinessPartnerGroup", + "operator": "isPartOf", + "rightOperand": "" + } + ] + } + ] + } + ] + } +} +``` + +Some permission-constraints trigger specific behavior in the EDC. That should be kept in mind when designing policies +and requires an understanding of how the EDC evaluates and acts upon them. + +| `leftOperand` | `rightOperand` | usage in
[Contract Definition](03_contractdefinitions.md) | description | +|--------------------------------------------------------------|--------------------------------------------------|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `BusinessPartnerNumber` | a BPNL | access or contract | _This function is deprecated._
The leftOperand "BusinessPartnerNumber" will trigger a check against the property in a Consumer's Verfifiable Credential (VC) that holds said BPNL. | +| `https://w3id.org/tractusx/v0.0.1/ns/BusinessPartnerGroup` | a Business Partner Group | access or contract | see [above](#only-let-pass-a-business-partner-group). The `leftOperand` is in this case not queried from the Consumer's VC but acts as a signal to check the Consumer's BPN for membership in the designated Business Partner Group. | +| `https://w3id.org/edc/v0.0.1/ns/InForceDate` | json-object with properties `@value` and `@type` | contract | If the negotiation via either [Contract Negotiation](6-contract-negotiation.md) or the [EDR process](8-edr.md) is successful, the EDC will only renew short-lived Data-Plane tokens for a contract if the contract is still valid (in force). Start and end dates can be set with absolute timestamps or relative to the time of the contract agreement. For exact syntax, visit the [playground](https://eclipse-tractusx.github.io/tutorial-resources/policy-playground/). | +| `https://w3id.org/tractusx/v0.0.1/ns/FrameworkAgreement.pcf` | "active" | access or contract | Framework agreements in Catena-X are legal documents signed by a Business Partner to participate in a Business Scenario. In return, her credential is enhanced with a reference to the corresponding framework agreement - like in this case `pcf`. A complete list of framework agreements is maintained by the Catena-X association in standards CX-0049 and -0050. | + +For more on the integration of Verifiable Credentials and the EDC in Catena-X, see the [specification of the Identity +and Trust Protocol (IATP)](https://github.com/eclipse-tractusx/identity-trust). + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md new file mode 100644 index 000000000..062566d2d --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md @@ -0,0 +1,105 @@ +# Creating a Contract Definition + +A Contract Definition is the connection between a set of [Assets](2-assets.md) with one Access Policy and one Contract +Policy. The two policies are both policies as explained [previously](3-policy-definitions.md) but checked in different +stages of communication between Data Provider and Data Consumer. The creation request looks like this: + +```http +POST /v2/contractdefinitions HTTP/1.1 +Host: https://provider-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +```json +{ + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "ContractDefinition", + "@id": "myContractDefinitionId", + "accessPolicyId": "myAccessPolicyId", + "contractPolicyId": "myContractPolicyId", + "assetsSelector": + { + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/id", + "operator": "=", + "operandRight": "myAssetId" + } + +} +``` +`accessPolicyId` and `contractPolicyId` are the identifiers of the [policies](3-policy-definitions.md) used in the contract +definition. On creation, the EDC does not automatically check if a policy with the corresponding `@id` exists - the call +sequence will fail later when the Data Consumer attempts to find the offer in the [catalog-request](5-catalog.md). + +## assetsSelector + +The `assetsSelector` is a EDC-Criterion. This class specifies filters over a set of objects, Assets in this case. The +concept is functionally similar to the `odrl:Constraint` in a [Policy](3-policy-definitions.md) but syntactically different. +- `operandLeft` is a property in the Entity (`edc:Asset` in this case) that is assigned a value. If the property is nested, + traversion can be achieved by chaining the properties like `"'https://w3id.org/edc/v0.0.1/ns/nested'.'https://w3id.org/edc/v0.0.1/ns/key'"` + Note that this function is namespace-aware so the `operandLeft` must either be written in extended form (see above) + or in a prefixed form with a corresponding entry in the `@context`. +- `operator` is the logical operation that will be used to compare the `operandLeft` with the `operandRight`. The possible + values are `=` (equivalence), `in` (existence in a list) and `like` (regex match). +- `operandRight` is the constant that the dynamically retrieved value of `operandLeft` will be compared to via the `operator`. + +This mechanism allows the administrator to bind the same policies to multiple assets. The example on the top of this page +will only match a single Asset as the `edc:id` will be unique as it's derived from the Asset's `@id`. It is however possible +to match multiple Assets if they share a common property: + +```json +{ + "assetsSelector": { + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/myCommonProperty", + "operator": "=", + "operandRight": "sharedValue" + } +} +``` +These can also be chained together with a logical AND: + +```json +{ + "assetsSelector": [ + { + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/myCommonProperty", + "operator": "=", + "operandRight": "sharedValue" + }, + { + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/myOtherProperty", + "operator": "=", + "operandRight": "otherSharedValue" + } + ] +} +``` + +The `edc:Criterion` mechanism is used as well in the provider-internal request-endpoints where it's +part of the `edc:QuerySpec` objects that also allow pagination: + +- `POST /v3/assets/request` +- `POST /v2/policydefinitions/request` +- `POST /v2/contractdefinitions/request` + +## Side-Effects + +The [Adoption View](../01_domain_model.md) shows the basic connection between the core concepts of +the EDC. Contract Offers for a particular Data Consumer are created dynamically from the Contract Definitions created +by a Data Provider. The mechanics are explained in the section on the [catalog-API](04_catalog.md). But already at this +stage, Data Providers must be aware that creating a Contract Definition is sufficient to expose a Backend System +(as defined in the [Asset](01_assets.md)) to the Dataspace and let third parties access it. +After contract definition, an EDC will automatically allow data access if a requesting party passes the policies. + +Contract Definitions thus must be created with great care. It is essential to align the backend-credentials with the +Access and Contract Policies to manage access consistently from the Dataspace to the backend data. + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/04_catalog.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/04_catalog.md new file mode 100644 index 000000000..e384e6d50 --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/04_catalog.md @@ -0,0 +1,167 @@ +# Fetching a Provider's Catalog + +The catalog API is the first request in this sequence that passes through the Dataspace. It is executed by the Data +Consumer against their own Control Plane and triggers the retrieval of a catalog from a specified Data Provider. The request +looks like this: + +```http +POST /v2/catalog/request HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` +```json +{ + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "@type": "edc:CatalogRequest", + "counterPartyAddress": "https://provider-control.plane/api/v1/dsp", + "protocol": "dataspace-protocol-http", + "querySpec": { + "@type": "edc:QuerySpec", + "offset": 0, + "limit": 50, + "sortField": "https://purl.org/dc/terms/type", + "sortOrder": "ASC", + "filterExpression": [ + { + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "edc:Criterion", + "operandLeft": "edc:someProperty", + "operator": "=", + "operandRight": "value" + } + ] + } +} +``` +The request body is lean. Mandatory properties are: +- `counterPartyAddress` (formerly `providerUrl`): This property points to the DSP-endpoint of the Data Provider's Control + Plane. Usually this ends on `/api/v1/dsp`. +- `protocol`: must be `"dataspace-protocol-http"`. + +The `querySpec` section is optional and allows the Data Consumer to specify what entries from the catalog shall be returned. +How to write proper `filterExpression`s was previously [explained](03_contractdefinitions.md#assetsselector). + +## What happens in the background + +In this walkthrough's sequence of API-calls, this is the first that triggers interaction between two EDCs. The Consumer +requests the Provider's catalog of Data Offers. Partners in the Dataspace are authenticated via Verifiable Credentials (VC). +These can broadly be conceptualized as another JSON-LD document that holds information on a business partner's identity. +It follows an aligned schema and is extensible with properties relevant to the Dataspace. For more info, see +[the documentation](https://github.com/eclipse-tractusx/ssi-docu/blob/main/docs/credentials/summary/summary.vc.md) +of the currently used Summary Credential used in Catena-X. + +When the Consumer makes a catalog-request to the Provider, the provider collects the Consumer's VC and checks it against +each of the `accessPolicies` defined in his [Contract Definitions](03_contractdefinitions.md). If the VC passes the +`accessPolicy`, the Contract Definition is transformed to a Data Offer and added to the catalog. If the content of the VC +does not fulfil the `accessPolicy`, the Contract Definition is invisible for the requesting Data Consumer - rendering +any further communication between the Business Partners useless. + +## Returned Payload + +The returned payload is a `dcat:Catalog` as required by the [DSP-Specification v0.8](https://docs.internationaldataspaces.org/ids-knowledgebase/v/dataspace-protocol/catalog/catalog.protocol). + +```json +{ + "@id": "10b1b0f3-5a67-4eee-9404-5a300356a50d", + "@type": "dcat:Catalog", + "dcat:dataset": [ + { + "@id": "", + "@type": "dcat:Dataset", + "odrl:hasPolicy": { + "@id": "Y29udHJhY3QtZ2V0LTE=:anNvbi1nZXQtMQ==:MDEwODg2ZTItZDhmNi00Y2NjLWFhMWYtY2U2Y2JmYjlmMWQz", + "@type": "odrl:Set", + "odrl:permission": { + "odrl:target": "", + "odrl:action": { + "odrl:type": "http://www.w3.org/ns/odrl/2/use" + }, + "odrl:constraint": { + "odrl:leftOperand": "https://w3id.org/tractusx/v0.0.1/ns/Membership", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "active" + } + }, + "odrl:prohibition": [], + "odrl:obligation": [], + "odrl:target": "" + }, + "dcat:distribution": [ + { + "@type": "dcat:Distribution", + "dct:format": { + "@id": "HttpProxy" + }, + "dcat:accessService": "b4f2c6b6-d3d1-46e2-a517-6912b7f8a509" + }, + { + "@type": "dcat:Distribution", + "dct:format": { + "@id": "AmazonS3" + }, + "dcat:accessService": "b4f2c6b6-d3d1-46e2-a517-6912b7f8a509" + } + ], + "edc:description": "Json Get Asset", + "edc:id": "", + "dct:type": { + "@id": "https://my-namespa.ce/my-asset-type" + } + } + ], + "dcat:service": { + "@id": "b4f2c6b6-d3d1-46e2-a517-6912b7f8a509", + "@type": "dcat:DataService", + "dct:terms": "connector", + "dct:endpointUrl": "https://provider-data.plane/api/v1/dsp" + }, + "edc:participantId": "", + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + } +} +``` +In the payload above, some properties are meta-data that's independent of whether the Provider extends any Data Offers +to the Consumer. + +- The `@id` is the identifier for this catalog. As the catalog is created dynamically, the id is a UUID regenerated for each + request to the Provider's catalog. +- `dcat:service` holds data about the Provider's connector that the Consumer's connector communicated with. +- `edc:participantId` signifies the BPN of the Provider. This is specific to the EDC and not mandated by the DSP-spec. +- `@context` is part of every JSON-LD document. + +The Data Offers are hidden in the `dcat:dataset` section, grouped by the [Asset](01_assets.md) that the offer is made for. +Consequently, if there may be more than one offer for the same Asset, requiring a Data Consumer to select based on the +policies included. + +- The `@id` corresponds to the id of the Asset that can be negotiated for. +- `dcat:Distribution` makes statements over which Data Planes an Asset's data can be retrieved. Currently, the EDC always + returns `HttpProxy` and `AmazonS3` even though not all EDC-deployments have both capabilities. +- `dcat:hasPolicy` holds the Data Offer that is relevant for the Consumer. + - `@id` is the identifier for the Data Offer. The EDC composes this id by concatenating three identifiers in base64-encoding. + separated with `:` (colons). The format is `base64(contractDefinitionId):base64(assetId):base64(newUuidV4)`. The last + of three UUIDs changes with every request as every /v2/catalog/request call yields a new catalog with new Data Offers. + - The `odrl:target` properties in the Data Offer always hold the Asset's id. + - The `odrl:permission`, `odrl:prohibition` and `odrl:obligation` will hold the content of the contractPolicy configured + in the [Contract Definition](03_contractdefinitions.md) the Contract Offer was derived from. + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md new file mode 100644 index 000000000..b692767fe --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md @@ -0,0 +1,272 @@ +--- +id: Contract Negotiation +title: Contract Negotiation +description: 'Connector Kit' +sidebar_position: 6 +--- + +# Initiating a Contract Negotiation + +Contract Negotiation is the second check a Data Consumer has to pass before getting access rights to a backend resource. +It includes + +- a check of the Consumer's VC against the Offer's `contractPolicy`. +- a check of the `contractPolicy` against the policy the Data Consumer signals in the negotiation request to. + +## Creating a new Contract Negotiation + +To trigger the process, the Data Consumer POSTs against their own Control Plane. + +```http +POST /v2/contractnegotiations HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +```json +{ + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "https://w3id.org/edc/v0.0.1/ns/ContractRequest", + "connectorAddress": "https://provider-control.plane/api/v1/dsp", + "protocol": "dataspace-protocol-http", + "providerId": "", + "connectorId": "", + "offer": { + "offerId": "", + "assetId": "", + "policy": { + "@context": "http://www.w3.org/ns/odrl.jsonld", + "@type": "Set", + "@id": "", + "action": "use" + } + ] + } + }, + "callbackAddresses": [ + { + "transactional": false, + "uri": "http://callback/url", + "events": [ + "contract.negotiation" + ], + "authKey": "auth-key", + "authCodeId": "auth-code-id" + } + ] +} + +``` +- `edc:connectorAddress` sets the coordinates for the connector that the Consumer-EDC shall negotiate with (Provider + EDC). + It will usually end on /api/v1/dsp +- `edc:protocol` must be "dataspace-protocol-http" +- `providerId` is the Data Provider's BPN +- `edc:assetId` and all `odrl:target` properties must be the id of the EDC-Asset/dcat:DataSet that the offer was made + for. +- `edc:connectorId` and `edc:providerId` must both hold the correct BPN for the `edc:connectorAddress`. +- In the `edc:offer` section, the Data Consumer specifies the Data Offer for the negotiation. As there may be multiple + Data Offers for the same DataSet, the Data Consumer must choose one. + - `edc:offerId` is the id of the entry in the [catalog-response](04_catalog.md) that the Consumer wants to negotiate + for. + It will usually be a concatenation of three base64-encoded ids. + - `edc:policy` must hold an identical copy of the Data Offer's contract policy as provided via the catalog-API in + the + `odrl:hasPolicy` field. +- `callbackAddresses` is a list of Consumer-side endpoints that the Provider's Data Plane writes events to. + - `uri` is the http endpoint of the token repository. Mandatory. + - `events` is a list of the strings, signifying for what callbacks the specified API shall be used. They are + structured hierarchically, so if a Consumer is interested in all events about status changes, the + `contract.negotiation` marker can be added. If only events about the `requested` stage of a transfer are relevant, + they can be subscribed via `transfer.process.requested`. This enables the consumer to wait for arrival of a + relevant event instead of having to poll for transition into a desired state. + - `transactional` Optional, default false. + - `authCodeId` is the key of a secret stored in the Consumer's vault that can be used to unlock the callback API if + it is protected. Optional. + - `authKey` Key of the HTTP-header that will be sent to the callbackAddress for authentication. Optional. If + `authCodeId` is set and `authKey` isn't, it defaults to `Authorization`. + +This call does not yet return a negotiation result but rather a server-side generated id for the contract negotiation in +the `@id` property. + +```json +{ + "@type": "edc:IdResponse", + "@id": "773b8795-45f2-4c57-a020-dc04e639baf3", + "edc:createdAt": 1701289079455, + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + } +} +``` + +## Checking for Completion + +### Polling + +```http +GET /v2/contractnegotiation/773b8795-45f2-4c57-a020-dc04e639baf3 HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +This request (holding the previously returned `contractNegotiationId` in its path) returns details on the negotiation +that will look like this: + +```json +{ + "@type": "edc:ContractNegotiation", + "@id": "50bf14b9-8f6e-4975-8ada-6f24379a58a2", + "edc:type": "CONSUMER", + "edc:protocol": "dataspace-protocol-http", + "edc:state": "REQUESTING", + "edc:counterPartyId": "", + "edc:counterPartyAddress": "https://provider-control.plane/api/v1/dsp", + "callbackAddresses": [ + { + "transactional": false, + "uri": "http://call.back/url", + "events": [ + "contract.negotiation" + ], + "authKey": "auth-key", + "authCodeId": "auth-code-id" + } + ], + "edc:createdAt": 1701351116766, + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + } +} +``` + +The Contract Negotiation was successful when `edc:state == FINALIZED`. + +### Callbacks + +As shown in the example above, state transitions can also be subscribed to by adding a `callbackAddress`. A typical +callback message will hold the relevant information in the `type` property. The value of the `type` property will always +hold a string following the schema `ContractNegotiation` appended by the new state like `Verified` yielding `ContractNegotiationVerified` +The state-machine for the Contract Negotiation process is [visualized in the documentation](https://eclipse-edc.github.io/docs/#/submodule/Connector/docs/developer/contracts?id=state-machine) +of the eclipse-edc/connector. The diagram only visualizes the transitions while the callbacks are fired when such a +transition is done yielding a new state. + +Be aware that (unlike most other messages) this is not JSON-LD and thus does not require prefix/context handling. +Here's an example: + +```json +{ + "id": "5e6b1a66-c0a8-4189-bbb8-305e3bdbeddd", + "at": 1701441001897, + "payload": { + "contractNegotiationId": "019488e0-f242-4c12-8314-610927b09e96", + "counterPartyAddress": "", + "counterPartyId": "", + "callbackAddresses": [ + { + "transactional": false, + "uri": "http://call.back/url", + "events": [ + "contract.negotiation" + ], + "authKey": "auth-key", + "authCodeId": "auth-code-id" + } + ], + "contractOffers": [ + { + "id": "", + "policy": { + "permissions": [ + { + "edctype": "dataspaceconnector:permission", + "target": "", + "action": { + "type": "http://www.w3.org/ns/odrl/2/use", + "includedIn": null, + "constraint": null + }, + "assignee": null, + "assigner": null, + "constraints": [], + "duties": [] + } + ], + "prohibitions": [], + "obligations": [], + "extensibleProperties": {}, + "inheritsFrom": null, + "assigner": null, + "assignee": null, + "target": "", + "@type": { + "@policytype": "set" + } + }, + "assetId": "" + } + ], + "protocol": "dataspace-protocol-http", + "lastContractOffer": { + "id": "", + "policy": { + "permissions": [ + { + "edctype": "dataspaceconnector:permission", + "target": "", + "action": { + "type": "http://www.w3.org/ns/odrl/2/use", + "includedIn": null, + "constraint": null + }, + "assignee": null, + "assigner": null, + "constraints": [], + "duties": [] + } + ], + "prohibitions": [], + "obligations": [], + "extensibleProperties": {}, + "inheritsFrom": null, + "assigner": null, + "assignee": null, + "target": "", + "@type": { + "@policytype": "set" + } + }, + "assetId": "" + } + }, + "type": "ContractNegotiationRequested" +} +``` + +As soon as `"type": "ContractNegotiationFinalized"`, a `contractAgreement` will be added holding additional context +like the `contractSigningDate`. + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/06_transferprocesses.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/06_transferprocesses.md new file mode 100644 index 000000000..defce1eeb --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/06_transferprocesses.md @@ -0,0 +1,154 @@ +# Initiation a Transfer Process + +Despite the naming, the Transfer Process is not the step that transmits the backend's data from the Provider to the +Consumer. What this API does instead is trigger the Transfer of a Data Plane token from the Provider Control Plane to +the Consumer Control Plane and in turn to a location specified by the Data Consumer. + +To trigger this process, the Consumer app makes a request to its EDC's Control Plane: +```http +POST /v2/transferprocesses HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` +```json +{ + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/", + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "assetId": "", + "connectorAddress": "", + "contractId": "", + "dataDestination": { + "type": "" + }, + "managedResources": false, + "privateProperties": { + "receiverHttpEndpoint": "" + }, + "protocol": "dataspace-protocol-http", + "callbackAddresses": [ + { + "transactional": false, + "uri": "http://call.back/url", + "events": [ + "transfer.process" + ], + "authKey": "auth-key", + "authCodeId": "auth-code-id" + } + ] +} +``` + +- `assetId` is the id of the [asset](01_assets.md) that a transfer process should be triggered for. +- `connectorAddress` is the DSP-endpoint of the Data Provider (usually ending on /api/v1/dsp). +- `contractId` represents the Contract Agreement that the Provider and Consumer agreed on during the [Contract Negotiation](05_contractnegotiations.md) + phase. +- `dataDestination` will in the case of an HTTP-based transfer of the Token be a `DataAddress` object, holding exclusively + the `edc:type` property that must be set to `"HttpProxy"`. +- `managedResources` is a boolean (not a string like in the [assets-API](01_assets.md#http-data-plane)). +- `privateProperties` can be filled with arbitrary data (like in the [assets-API](01_assets.md)). However, there is one property + that will cause changes in EDC behavior: + - `receiverHttpEndpoint` is interpreted by the EDC as the URL that it shall write the Data Plane token to. These messages + will be transmitted via HTTP POST holding plain JSON where the Data Plane Token is written to the property `authCode`. + The Consumer Control Plane will use authentication headers that must be configured during deployment. +- `protocol` describes the protocol between the EDCs and will always be `dataspace-protocol-http`. +- `callbackAddresses`: Like the [Contract Negotiation API](05_contractnegotiations.md), an application can also register + a callback listener to get updates on the Transfer Process state. The relevant signal is `contract.negotiation`. + +This call also returns an id, that can be used to monitor the progress. + +```json +{ + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@id": "177aba51-52d7-44dc-beab-fd6151147024", + "createdAt": 1688465655 +} +``` + +## Checking for Completion + +### Token Transfer + +As described in the `receiverHttpEndpoint` section, on a successful Transfer Process, a message will be transmitted to +the specified address holding the Data Plane Token. That's not only the goal of EDC-interaction but also the sign for +a completed process. Here's an example for such a message: + +```json +{ + "id": "177aba51-52d7-44dc-beab-fd6151147024", + "endpoint": "https://provider-data.plane/", + "authKey": "Authorization", + "authCode": "", + "properties": {} +} +``` + +### Polling + +The state of a given Transfer Process can be requested like this: + +```http +GET /v2/transferprocesses/177aba51-52d7-44dc-beab-fd6151147024 HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +yielding + +```json +{ + "@context": { + "edc": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "https://w3id.org/edc/v0.0.1/ns/TransferProcess", + "@id": "process-id", + "correlationId": "correlation-id", + "type": "PROVIDER", + "state": "STARTED", + "stateTimestamp": 1688465655, + "assetId": "asset-id", + "connectorId": "connectorId", + "contractId": "contractId", + "dataDestination": { + "type": "HttpProxy" + }, + "privateProperties": { + "receiverHttpEndpoint": "private-value" + }, + "errorDetail": "eventual-error-detail", + "createdAt": 1688465655, + "callbackAddresses": [ + { + "transactional": false, + "uri": "http://call.back/url", + "events": [ + "transfer.process" + ], + "authKey": "auth-key", + "authCodeId": "auth-code-id" + } + ] +} + +``` +Note that the property `errorDetails` will only be returned in certain states and may contain hints to where the communication +between the Data Planes failed. The state-machine for the Transfer Process is [documented here](https://eclipse-edc.github.io/docs/#/submodule/Connector/docs/developer/data-transfer?id=transfer-process-state-machine). + +### Callbacks + +The callback process works similarly to the known one from the Contract Negotiation. The `"TransferProcessStarted"` message +will already contain the `authCode`. + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md new file mode 100644 index 000000000..de7f26300 --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md @@ -0,0 +1,140 @@ +# Fetching a Data Plane Token via EDR + +EDR is short for Endpoint Data Reference. It describes a more ergonomic process for the Data Consumer +to negotiate access to a Data Offer and receive the corresponding token for the HTTP Data Plane. Unlike the process via +[Contract-Negotiation](6-contract-negotiation.md)- and [Transfer-Process](06_transferprocesses.md)-APIs, the EDR-process does not require a Consumer to operate a +separate service that receives the Tokens from the Provider Control Plane. Instead, the Consumer Control Plane receives +and stores the Data Plane Tokens. Consumer Applications query it for valid tokens and use these for Data Plane calls. +As a consumer-side abstraction, the checks of the Contract Negotiation and Transfer Process phases are still executed +between the Business Partners' EDCs. + +## Initiate Negotiation & Token Transfer + +```http +POST /edrs HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +```json +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "NegotiationInitiateRequest", + "edc:connectorAddress": "https://provider-control.plane/api/v1/dsp", + "edc:protocol": "dataspace-protocol-http", + "edc:connectorId": "", + "edc:providerId": "", + "edc:offer": { + "edc:offerId": "", + "edc:assetId": "", + "edc:policy": { + "@type": "odrl:Set", + "odrl:target": "", + "odrl:permission": { + "odrl:target": "", + "odrl:action": { + "odrl:type": "USE" + }, + "odrl:constraint": { + "odrl:and": { + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "" + } + } + }, + "odrl:prohibition": [], + "odrl:obligation": [] + } + } +} +``` +- `edc:connectorAddress` sets the coordinates for the connector that the Consumer-EDC shall negotiate with (Provider EDC). + It will usually end in `/api/v1/dsp` +- `edc:protocol` must be `dataspace-protocol-http` +- `edc:assetId` and all `odrl:target` properties must be the id of the EDC-Asset/dcat:DataSet that the offer was made for. +- `edc:connectorId` and `edc:providerId` must both hold the correct BPN for the `edc:connectorAddress`. +- In the `edc:offer` section, the Data Consumer specifies the Data Offer for the negotiation. As there may be multiple + Data Offers for the same DataSet, the Data Consumer must choose one. + - `edc:offerId` is the id of the entry in the [catalog-response](04_catalog.md) that the Consumer wants to negotiate for. + It will usually be a concatenation of three base64-encoded ids. + - `edc:policy` must hold an identical copy of the Data Offer's contract policy as provided via the catalog-API in the + `odrl:hasPolicy` field. + +This request synchronously returns a server-generated `negotiationId` that could be used to get the state of the negotiation. + +```http +POST /v2/contractnegotiations HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` +When the `edc:state` in the response is `"FINALIZED"`, the Consumer can proceed. + +## Retrieving the Data Plane Token from the Consumer Control Plane + +The Consumer Control Plane can be queried for EDRs by the ids of the [Assets](01_assets.md). + +```http +GET /edrs?assetId=myAssetId HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +It returns a set of EDR entries holding meta-data including two new IDs per entry: +- `edc:transferProcessId`: This is the ID of the [Transfer Process](06_transferprocesses.md) that was implicitly initiated + by the POST `/edrs` request. +- `edc:agreementId`: This is the ID of the agreement that the two EDCs have made in the [Contract Negotiation](05_contractnegotiations.md) + phase of their EDR-interaction. + +One of the essential features of the EDR-API is the automatic retrieval of new short-lived Data Plane tokens for an +agreed Contract Agreement. When choosing the route via [the negotiation-](05_contractnegotiations.md) and [transfer-APIs](06_transferprocesses.md), +the transfer process would have to be initiated for every new token. + +The EDR mechanism stores the Data Plane tokens. Finally, after first obtaining them from the Provider Control Plane and +then locating in the Consumer Control Plane's cache, they can be retrieved using the `transferProcessId`. + +```http +GET /edrs/myTransferProcessId HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +The interesting field is `edc:authCode`. It holds a short-lived token that the Consumer can use to unlock the HTTP Data Plane +that is located at `edc:endpoint`. + +```json +{ + "@type": "edc:DataAddress", + "edc:type": "EDR", + "edc:authCode": "myAuthCode", + "edc:endpoint": "https://provider-data.plane/api/public", + "edc:id": "someServer-GeneratedId", + "edc:authKey": "Authorization", + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + } +} +``` + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/08_contractagreements.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/08_contractagreements.md new file mode 100644 index 000000000..e721b15da --- /dev/null +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/08_contractagreements.md @@ -0,0 +1,66 @@ +# Checking existing Contract Agreements + +The Management API has a provider-internal endpoint to retrieve existing Contract Agreements. It also exposes a `/request` +endpoint (to be used with the previously explained `QuerySpec` object) but allows retrieval of single agreements by id +like this: + +```http +GET /v2/contractagreements/{{agreementId}} HTTP/1.1 +Host: https://consumer-control.plane/api/management +X-Api-Key: password +Content-Type: application/json +``` + +A Contract Agreement looks like this: + +```json +{ + "@type": "edc:ContractAgreement", + "@id": "", + "edc:assetId": "", + "edc:policy": { + "@id": "", + "@type": "odrl:Set", + "odrl:permission": { + "odrl:target": "", + "odrl:action": { + "odrl:type": "USE" + }, + "odrl:constraint": { + "odrl:and": { + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "" + } + } + }, + "odrl:prohibition": [], + "odrl:obligation": [], + "odrl:target": ">ASSET_ID>" + }, + "edc:contractSigningDate": 1697720380, + "edc:consumerId": "", + "edc:providerId": "", + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + } +} +``` + +Most of this data should already be known to the Data Provider from the negotiation and transfer processes but can be +retrieved at a glance via this API. + +## Notice + +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2023 Contributors of the Eclipse Foundation +- Source URL: [https://github.com/eclipse-tractusx/tractusx-edc](https://github.com/eclipse-tractusx/tractusx-edc) \ No newline at end of file From 96531d83e5ff1702e29b3174ed4b4bc1b6bbafe1 Mon Sep 17 00:00:00 2001 From: arnoweiss Date: Wed, 20 Dec 2023 19:55:43 +0100 Subject: [PATCH 24/83] docs: update internal links --- .../01_MGMT_API_Walkthrough/03_contractdefinitions.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md index 062566d2d..b2cb25d9b 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md @@ -1,7 +1,7 @@ # Creating a Contract Definition -A Contract Definition is the connection between a set of [Assets](2-assets.md) with one Access Policy and one Contract -Policy. The two policies are both policies as explained [previously](3-policy-definitions.md) but checked in different +A Contract Definition is the connection between a set of [Assets](01_assets.md) with one Access Policy and one Contract +Policy. The two policies are both policies as explained [previously](02_policies.md) but checked in different stages of communication between Data Provider and Data Consumer. The creation request looks like this: ```http @@ -29,9 +29,9 @@ Content-Type: application/json } ``` -`accessPolicyId` and `contractPolicyId` are the identifiers of the [policies](3-policy-definitions.md) used in the contract +`accessPolicyId` and `contractPolicyId` are the identifiers of the [policies](02_policies.md) used in the contract definition. On creation, the EDC does not automatically check if a policy with the corresponding `@id` exists - the call -sequence will fail later when the Data Consumer attempts to find the offer in the [catalog-request](5-catalog.md). +sequence will fail later when the Data Consumer attempts to find the offer in the [catalog-request](04_catalog.md). ## assetsSelector From 051f1d16c239b222362d52941e060e4a4fc34517 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 08:40:59 +0100 Subject: [PATCH 25/83] chore(deps): bump com.bmuschko.docker-remote-api from 9.3.6 to 9.4.0 (#954) Bumps com.bmuschko.docker-remote-api from 9.3.6 to 9.4.0. --- updated-dependencies: - dependency-name: com.bmuschko.docker-remote-api 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> --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 51f4f5db0..cb55da8a1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -26,7 +26,7 @@ plugins { `maven-publish` `jacoco-report-aggregation` id("com.github.johnrengelman.shadow") version "8.1.1" - id("com.bmuschko.docker-remote-api") version "9.3.6" + id("com.bmuschko.docker-remote-api") version "9.4.0" id("io.github.gradle-nexus.publish-plugin") version "1.3.0" } From 88962261252c876bcdc254f8383c061d763ff85d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 09:48:33 +0100 Subject: [PATCH 26/83] chore(deps): bump com.nimbusds:nimbus-jose-jwt from 9.37.2 to 9.37.3 (#955) * chore(deps): bump com.nimbusds:nimbus-jose-jwt from 9.37.2 to 9.37.3 Bumps [com.nimbusds:nimbus-jose-jwt](https://bitbucket.org/connect2id/nimbus-jose-jwt) from 9.37.2 to 9.37.3. - [Changelog](https://bitbucket.org/connect2id/nimbus-jose-jwt/src/master/CHANGELOG.txt) - [Commits](https://bitbucket.org/connect2id/nimbus-jose-jwt/branches/compare/9.37.3..9.37.2) --- updated-dependencies: - dependency-name: com.nimbusds:nimbus-jose-jwt dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 2 +- gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 7f7d647c0..cc10a6c41 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -76,7 +76,7 @@ maven/mavencentral/com.nimbusds/content-type/2.2, Apache-2.0, approved, clearlyd maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.30.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37, Apache-2.0, approved, #11701 -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.2, Apache-2.0, approved, #11701 +maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/10.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.puppycrawl.tools/checkstyle/10.0, LGPL-2.1-or-later, approved, #7936 maven/mavencentral/com.squareup.okhttp3/mockwebserver/5.0.0-alpha.12, , restricted, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9e3e35238..f17ffe7ae 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ format.version = "1.1" edc = "0.4.1" postgres = "42.7.1" awaitility = "4.2.0" -nimbus = "9.37.2" +nimbus = "9.37.3" azure-identity = "1.11.1" slf4j = "2.0.9" okhttp = "4.12.0" From 20cd3ff010e8624ece0ec27dbd03852d4131d2e5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 10:44:08 +0100 Subject: [PATCH 27/83] chore(deps): bump aws from 2.22.0 to 2.22.6 (#959) * chore(deps): bump aws from 2.22.0 to 2.22.6 Bumps `aws` from 2.22.0 to 2.22.6. Updates `software.amazon.awssdk:s3` from 2.22.0 to 2.22.6 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.22.0 to 2.22.6 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index cc10a6c41..2e8377972 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -489,58 +489,58 @@ maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-C maven/mavencentral/org.yaml/snakeyaml/2.1, Apache-2.0, approved, #9847 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.21.15, Apache-2.0, approved, #11137 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.21.15, Apache-2.0, approved, #11133 -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.21.15, Apache-2.0, approved, #11143 -maven/mavencentral/software.amazon.awssdk/arns/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.21.15, Apache-2.0, approved, #11139 -maven/mavencentral/software.amazon.awssdk/auth/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.21.15, Apache-2.0, approved, #11126 -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.21.15, Apache-2.0, approved, #11123 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.21.15, Apache-2.0, approved, #11124 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.21.15, Apache-2.0, approved, #11131 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.21.15, Apache-2.0, approved, #11134 -maven/mavencentral/software.amazon.awssdk/checksums/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.21.15, Apache-2.0, approved, #11130 -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.21.15, Apache-2.0, approved, #11118 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.21.15, Apache-2.0, approved, #11145 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.21.15, Apache-2.0, approved, #11128 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.21.15, Apache-2.0, approved, #11120 -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.21.15, Apache-2.0, approved, #11132 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/iam/2.21.15, Apache-2.0, approved, #11138 maven/mavencentral/software.amazon.awssdk/identity-spi/2.21.15, Apache-2.0, approved, #11129 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.21.15, Apache-2.0, approved, #11119 -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.21.15, Apache-2.0, approved, #11144 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.21.15, Apache-2.0, approved, #11140 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.21.15, Apache-2.0, approved, #11148 -maven/mavencentral/software.amazon.awssdk/profiles/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.21.15, Apache-2.0, approved, #11141 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.21.15, Apache-2.0, approved, #11142 -maven/mavencentral/software.amazon.awssdk/regions/2.22.0, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.21.15, Apache-2.0, approved, #11135 -maven/mavencentral/software.amazon.awssdk/s3/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.21.15, Apache-2.0, approved, #11121 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sts/2.21.15, Apache-2.0, approved, #11146 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.21.15, Apache-2.0, approved, #11127 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.21.15, Apache-2.0, approved, #11136 -maven/mavencentral/software.amazon.awssdk/utils/2.22.0, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f17ffe7ae..ee92cdb3f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.11.0" testcontainers = "1.19.3" -aws = "2.22.0" +aws = "2.22.6" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.24.2" From 406a03c8a6f1ff15df93461d86cedfc58248c955 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 27 Dec 2023 11:24:11 +0100 Subject: [PATCH 28/83] chore(deps): bump com.google.crypto.tink:tink from 1.11.0 to 1.12.0 (#957) * chore(deps): bump com.google.crypto.tink:tink from 1.11.0 to 1.12.0 Bumps [com.google.crypto.tink:tink](https://github.com/tink-crypto/tink-java) from 1.11.0 to 1.12.0. - [Release notes](https://github.com/tink-crypto/tink-java/releases) - [Commits](https://github.com/tink-crypto/tink-java/compare/v1.11.0...v1.12.0) --- updated-dependencies: - dependency-name: com.google.crypto.tink:tink dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 6 +++--- gradle/libs.versions.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 2e8377972..647b44177 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -60,14 +60,14 @@ maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.4, Apache-2. maven/mavencentral/com.github.stephenc.jcip/jcip-annotations/1.0-1, Apache-2.0, approved, CQ21949 maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0, approved, #20 maven/mavencentral/com.google.code.gson/gson/2.10.1, Apache-2.0, approved, #6159 -maven/mavencentral/com.google.crypto.tink/tink/1.11.0, Apache-2.0, approved, #10719 -maven/mavencentral/com.google.errorprone/error_prone_annotations/2.18.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.google.crypto.tink/tink/1.12.0, Apache-2.0, approved, #12041 +maven/mavencentral/com.google.errorprone/error_prone_annotations/2.22.0, Apache-2.0, approved, #10661 maven/mavencentral/com.google.errorprone/error_prone_annotations/2.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/failureaccess/1.0.1, Apache-2.0, approved, CQ22654 maven/mavencentral/com.google.guava/guava/31.0.1-jre, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 maven/mavencentral/com.google.j2objc/j2objc-annotations/1.3, Apache-2.0, approved, CQ21195 -maven/mavencentral/com.google.protobuf/protobuf-java/3.19.6, BSD-3-Clause, approved, clearlydefined +maven/mavencentral/com.google.protobuf/protobuf-java/3.24.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j-persistence-extension/1.2.0, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.13.9, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.14.0, MIT, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ee92cdb3f..9da4f5773 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,7 +22,7 @@ assertj = "3.24.2" titanium = "1.3.3" jackson = "2.15.3" jakarta-json = "2.0.1" -tink = "1.11.0" +tink = "1.12.0" iron-vc = "0.8.1" [libraries] From c6452dec333ccf0248212e8df626acc8c6377e89 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 10:32:05 +0100 Subject: [PATCH 29/83] chore(deps): bump aws from 2.22.6 to 2.22.9 (#965) * chore(deps): bump aws from 2.22.6 to 2.22.9 Bumps `aws` from 2.22.6 to 2.22.9. Updates `software.amazon.awssdk:s3` from 2.22.6 to 2.22.9 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.22.6 to 2.22.9 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 64 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 33 insertions(+), 33 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 647b44177..1ed2f8066 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -79,17 +79,17 @@ maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37, Apache-2.0, approved, #117 maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/10.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.puppycrawl.tools/checkstyle/10.0, LGPL-2.1-or-later, approved, #7936 -maven/mavencentral/com.squareup.okhttp3/mockwebserver/5.0.0-alpha.12, , restricted, clearlydefined -maven/mavencentral/com.squareup.okhttp3/mockwebserver3/5.0.0-alpha.12, , restricted, clearlydefined +maven/mavencentral/com.squareup.okhttp3/mockwebserver/5.0.0-alpha.12, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.squareup.okhttp3/mockwebserver3/5.0.0-alpha.12, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 maven/mavencentral/com.squareup.okhttp3/okhttp-jvm/5.0.0-alpha.12, Apache-2.0, approved, #9263 maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #11156 maven/mavencentral/com.squareup.okhttp3/okhttp/4.9.3, Apache-2.0 AND MPL-2.0, approved, #3225 -maven/mavencentral/com.squareup.okhttp3/okhttp/5.0.0-alpha.12, , restricted, clearlydefined +maven/mavencentral/com.squareup.okhttp3/okhttp/5.0.0-alpha.12, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okio/okio-jvm/3.6.0, Apache-2.0, approved, #11158 -maven/mavencentral/com.squareup.okio/okio-jvm/3.7.0, , restricted, clearlydefined +maven/mavencentral/com.squareup.okio/okio-jvm/3.7.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okio/okio/3.6.0, Apache-2.0, approved, #11155 -maven/mavencentral/com.squareup.okio/okio/3.7.0, , restricted, clearlydefined +maven/mavencentral/com.squareup.okio/okio/3.7.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.sun.activation/jakarta.activation/2.0.0, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf maven/mavencentral/commons-beanutils/commons-beanutils/1.9.4, Apache-2.0, approved, CQ12654 maven/mavencentral/commons-codec/commons-codec/1.11, Apache-2.0 AND BSD-3-Clause, approved, CQ15971 @@ -489,58 +489,58 @@ maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-C maven/mavencentral/org.yaml/snakeyaml/2.1, Apache-2.0, approved, #9847 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.21.15, Apache-2.0, approved, #11137 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.21.15, Apache-2.0, approved, #11133 -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.21.15, Apache-2.0, approved, #11143 -maven/mavencentral/software.amazon.awssdk/arns/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.21.15, Apache-2.0, approved, #11139 -maven/mavencentral/software.amazon.awssdk/auth/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.21.15, Apache-2.0, approved, #11126 -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.21.15, Apache-2.0, approved, #11123 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.21.15, Apache-2.0, approved, #11124 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.21.15, Apache-2.0, approved, #11131 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.21.15, Apache-2.0, approved, #11134 -maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.21.15, Apache-2.0, approved, #11130 -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.21.15, Apache-2.0, approved, #11118 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.21.15, Apache-2.0, approved, #11145 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.21.15, Apache-2.0, approved, #11128 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.21.15, Apache-2.0, approved, #11120 -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.21.15, Apache-2.0, approved, #11132 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/iam/2.21.15, Apache-2.0, approved, #11138 maven/mavencentral/software.amazon.awssdk/identity-spi/2.21.15, Apache-2.0, approved, #11129 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.21.15, Apache-2.0, approved, #11119 -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.21.15, Apache-2.0, approved, #11144 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.21.15, Apache-2.0, approved, #11140 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.21.15, Apache-2.0, approved, #11148 -maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.21.15, Apache-2.0, approved, #11141 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.21.15, Apache-2.0, approved, #11142 -maven/mavencentral/software.amazon.awssdk/regions/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.21.15, Apache-2.0, approved, #11135 -maven/mavencentral/software.amazon.awssdk/s3/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.21.15, Apache-2.0, approved, #11121 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sts/2.21.15, Apache-2.0, approved, #11146 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.21.15, Apache-2.0, approved, #11127 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.21.15, Apache-2.0, approved, #11136 -maven/mavencentral/software.amazon.awssdk/utils/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9da4f5773..b6852a5c7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.11.0" testcontainers = "1.19.3" -aws = "2.22.6" +aws = "2.22.9" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.24.2" From 86fd01855917d985205716f6be344cc31810d8a2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 12:34:00 +0100 Subject: [PATCH 30/83] chore(deps): bump org.slf4j:slf4j-api from 2.0.9 to 2.0.10 (#966) * chore(deps): bump org.slf4j:slf4j-api from 2.0.9 to 2.0.10 Bumps org.slf4j:slf4j-api from 2.0.9 to 2.0.10. --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 2 +- build.gradle.kts | 2 +- gradle/libs.versions.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 1ed2f8066..dc8abf4e1 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -471,8 +471,8 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.32, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.35, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 +maven/mavencentral/org.slf4j/slf4j-api/2.0.10, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 -maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/database-commons/1.19.2, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/database-commons/1.19.3, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/jdbc/1.19.2, Apache-2.0, approved, #10348 diff --git a/build.gradle.kts b/build.gradle.kts index cb55da8a1..9ebf54de4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -59,7 +59,7 @@ allprojects { mavenCentral() } dependencies { - implementation("org.slf4j:slf4j-api:2.0.9") + implementation("org.slf4j:slf4j-api:2.0.10") // this is used to counter version conflicts between the JUnit version pulled in by the plugin, // and the one expected by IntelliJ testImplementation(platform("org.junit:junit-bom:5.10.1")) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b6852a5c7..d7291a967 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.3" azure-identity = "1.11.1" -slf4j = "2.0.9" +slf4j = "2.0.10" okhttp = "4.12.0" mockwebserver = "5.0.0-alpha.12" bouncyCastle-jdk18on = "1.77" From d72a3b8b6eff8def073826a1608c563f3863a888 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 14:23:07 +0100 Subject: [PATCH 31/83] chore(deps): bump com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp from 2.15.3 to 2.16.1 (#967) * chore(deps): bump com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp Bumps [com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp](https://github.com/FasterXML/jackson-datatypes-misc) from 2.15.3 to 2.16.1. - [Commits](https://github.com/FasterXML/jackson-datatypes-misc/compare/jackson-datatypes-misc-parent-2.15.3...jackson-datatypes-misc-parent-2.16.1) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 19 ++++++++++++------- gradle/libs.versions.toml | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index dc8abf4e1..fe1d553c1 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -24,35 +24,41 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.14.1, Apache maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.14.2, Apache-2.0, approved, #5303 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.1, Apache-2.0, approved, #7947 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.3, Apache-2.0, approved, #7947 +maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.1, Apache-2.0, approved, #11606 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.13.5, Apache-2.0, approved, #2133 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.14.2, Apache-2.0 AND MIT, approved, #4303 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.1, MIT AND Apache-2.0, approved, #7932 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.3, MIT AND Apache-2.0, approved, #7932 +maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.1, Apache-2.0 AND MIT, approved, #11602 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.4.2, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.5, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.1, Apache-2.0, approved, #4105 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.2, Apache-2.0, approved, #4105 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.1, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.3, Apache-2.0, approved, #7934 +maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.1, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #9160 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.3, Apache-2.0, approved, #9160 +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, , restricted, clearlydefined maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.14.2, Apache-2.0, approved, #4300 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.15.3, Apache-2.0, approved, #9237 +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1, Apache-2.0, approved, #12438 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.1, Apache-2.0, approved, #8802 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.3, Apache-2.0, approved, #8802 +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.16.1, Apache-2.0, approved, #11855 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.15.3, Apache-2.0, approved, #9179 +maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.16.1, Apache-2.0, approved, #11854 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.13.5, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.14.2, Apache-2.0, approved, #4699 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.1, Apache-2.0, approved, #7930 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.3, Apache-2.0, approved, #7930 -maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/2.15.3, Apache-2.0, approved, #9235 +maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.1, Apache-2.0, approved, #11853 +maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/2.16.1, Apache-2.0, approved, #11851 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.15.1, Apache-2.0, approved, #9236 -maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.15.3, Apache-2.0, approved, #9236 +maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.16.1, Apache-2.0, approved, #11858 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.14.1, Apache-2.0, approved, #5308 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.15.3, Apache-2.0, approved, #9241 +maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.16.1, Apache-2.0, approved, #11856 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.1, Apache-2.0, approved, #7929 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.3, Apache-2.0, approved, #7929 +maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.16.1, Apache-2.0, approved, #11852 maven/mavencentral/com.fasterxml.woodstox/woodstox-core/6.5.1, Apache-2.0, approved, #7950 maven/mavencentral/com.github.docker-java/docker-java-api/3.3.4, Apache-2.0, approved, #10346 maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.3.4, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #7946 @@ -486,7 +492,6 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.2, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 -maven/mavencentral/org.yaml/snakeyaml/2.1, Apache-2.0, approved, #9847 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.21.15, Apache-2.0, approved, #11137 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, , restricted, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d7291a967..60749ea9b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.24.2" titanium = "1.3.3" -jackson = "2.15.3" +jackson = "2.16.1" jakarta-json = "2.0.1" tink = "1.12.0" iron-vc = "0.8.1" From dfb083bbdf62303769d8b9652dcce05959783998 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Jan 2024 15:22:37 +0100 Subject: [PATCH 32/83] chore(deps): bump org.assertj:assertj-core from 3.24.2 to 3.25.0 (#964) * chore(deps): bump org.assertj:assertj-core from 3.24.2 to 3.25.0 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.24.2 to 3.25.0. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.24.2...assertj-build-3.25.0) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: update dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 2 ++ gradle/libs.versions.toml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index fe1d553c1..37aafb2a9 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -218,6 +218,7 @@ maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.1, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy/1.12.21, Apache-2.0 AND BSD-3-Clause, approved, #1811 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.1, Apache-2.0 AND BSD-3-Clause, approved, #7163 +maven/mavencentral/net.bytebuddy/byte-buddy/1.14.11, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.java.dev.jna/jna-platform/5.13.0, Apache-2.0 OR LGPL-2.1-or-later, approved, #6707 maven/mavencentral/net.java.dev.jna/jna-platform/5.6.0, Apache-2.0 OR LGPL-2.1-or-later, approved, CQ22390 maven/mavencentral/net.java.dev.jna/jna/5.13.0, Apache-2.0 AND LGPL-2.1-or-later, approved, #6709 @@ -242,6 +243,7 @@ maven/mavencentral/org.apache.sshd/sshd-core/2.11.0, Apache-2.0, approved, #1110 maven/mavencentral/org.apache.sshd/sshd-sftp/2.11.0, Apache-2.0, approved, #11103 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 +maven/mavencentral/org.assertj/assertj-core/3.25.0, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.76, MIT, approved, #9825 maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 60749ea9b..9ad4a839c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ testcontainers = "1.19.3" aws = "2.22.9" rsApi = "3.1.0" jupiter = "5.10.0" -assertj = "3.24.2" +assertj = "3.25.0" titanium = "1.3.3" jackson = "2.16.1" jakarta-json = "2.0.1" From c8475e30d1d887e4e9c6a2cee201fcbff072254a Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Wed, 3 Jan 2024 11:06:01 +0100 Subject: [PATCH 33/83] feat: introduce TxParticipant + E2E tests fix (#968) * feat: introduce TxParticipant + E2E tests fix * chore: cleanup stub url * chore: dependencies file * chore: javadocs * pr suggestions --- DEPENDENCIES | 446 ++++++++-------- .../edc/edr/core/manager/EdrManagerImpl.java | 1 - .../vault/memory/VaultSeedExtensionTest.java | 5 +- .../edc-dataplane-base/build.gradle.kts | 3 +- .../encryption/TxEncryptorExtensionTest.java | 5 +- ...dpointDataReferenceCacheExtensionTest.java | 3 +- .../callback/ContractNegotiationCallback.java | 1 - .../TransferProcessLocalCallback.java | 6 +- .../ContractNegotiationCallbackTest.java | 21 +- .../TransferProcessLocalCallbackTest.java | 12 +- .../AbstractPostgresqlMigrationExtension.java | 13 +- .../DriverManagerConnectionFactory.java | 55 -- .../policy/V0_0_4__Add_Private_Properties.sql | 15 + ..._Alter_TransferProcess_AddTransferType.sql | 15 + .../iam/ssi/identity/SsiIdentityService.java | 3 +- .../SsiIdentityServiceExtensionTest.java | 3 +- .../miw/SsiMiwConfigurationExtensionTest.java | 3 +- .../miw/SsiMiwOauth2ClientExtensionTest.java | 5 +- ...SsiCredentialIssuerValidationRuleTest.java | 2 +- ...CredentialSubjectIdValidationRuleTest.java | 2 +- .../edc/helpers/PolicyHelperFunctions.java | 49 +- .../tractusx/edc/lifecycle/Participant.java | 482 ------------------ .../edc/lifecycle/PgParticipantRuntime.java | 2 +- .../lifecycle/TestRuntimeConfiguration.java | 152 +----- .../edc/lifecycle/tx/ParticipantDataApi.java | 138 +++++ .../edc/lifecycle/tx/ParticipantEdrApi.java | 181 +++++++ .../edc/lifecycle/tx/TxParticipant.java | 277 ++++++++++ .../tests/catalog/AbstractCatalogTest.java | 89 ++-- .../tests/catalog/CatalogInMemoryTest.java | 19 +- .../tests/catalog/CatalogPostgresqlTest.java | 19 +- .../edc/tests/catalog/MiwSsiCatalogTest.java | 44 +- .../edc/tests/edr/AbstractDeleteEdrTest.java | 48 +- .../tests/edr/AbstractNegotiateEdrTest.java | 56 +- .../edc/tests/edr/AbstractRenewalEdrTest.java | 51 +- .../edc/tests/edr/DeleteEdrInMemoryTest.java | 20 +- .../tests/edr/DeleteEdrPostgresqlTest.java | 20 +- .../tests/edr/NegotiateEdrInMemoryTest.java | 19 +- ...otiateEdrPostgresqlHashicorpVaultTest.java | 19 +- .../tests/edr/NegotiateEdrPostgresqlTest.java | 19 +- .../edc/tests/edr/RenewalEdrInMemoryTest.java | 20 +- .../tests/edr/RenewalEdrPostgresqlTest.java | 20 +- .../tractusx/edc/tests/edr/TestFunctions.java | 22 +- .../AbstractContractNegotiateTest.java | 50 +- .../SsiContractNegotiationInMemoryTest.java | 49 +- .../policy/AbstractPolicyMonitorTest.java | 36 +- .../policy/PolicyMonitorInMemoryTest.java | 19 +- .../policy/PolicyMonitorPostgresqlTest.java | 19 +- .../proxy/AbstractDataPlaneProxyTest.java | 187 +++---- .../proxy/DataPlaneProxyInMemoryTest.java | 19 +- .../proxy/DataPlaneProxyPostgresqlTest.java | 19 +- ...AbstractHttpConsumerPullWithProxyTest.java | 81 ++- .../AbstractHttpProviderPushTest.java | 38 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 19 +- ...tpConsumerPullWithProxyPostgresqlTest.java | 19 +- .../HttpProviderPushInMemoryTest.java | 19 +- .../HttpProviderPushInPostgresqlTest.java | 19 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 52 +- .../edc/token/MockBpnIdentityService.java | 3 +- .../resources/summary-vc-no-dismantler.json | 4 +- .../src/test/resources/summary-vc.json | 4 +- gradle/libs.versions.toml | 9 +- spi/ssi-spi/build.gradle.kts | 1 + .../iam/ssi/spi/jsonld/SummaryCredential.java | 14 +- 63 files changed, 1404 insertions(+), 1661 deletions(-) delete mode 100644 edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy/V0_0_4__Add_Private_Properties.sql create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_12__Alter_TransferProcess_AddTransferType.sql delete mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java diff --git a/DEPENDENCIES b/DEPENDENCIES index 37aafb2a9..0ab3ea8d9 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -2,62 +2,51 @@ maven/mavencentral/com.apicatalog/carbon-did/0.0.2, Apache-2.0, approved, #9239 maven/mavencentral/com.apicatalog/iron-verifiable-credentials/0.8.1, Apache-2.0, approved, #9234 maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.1, Apache-2.0, approved, #8912 -maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.2, Apache-2.0, approved, #8912 maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.3, Apache-2.0, approved, #8912 maven/mavencentral/com.azure/azure-core-http-netty/1.13.11, MIT AND Apache-2.0, approved, #7948 -maven/mavencentral/com.azure/azure-core-http-netty/1.13.7, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.9, MIT AND Apache-2.0, approved, #7948 -maven/mavencentral/com.azure/azure-core/1.43.0, MIT AND Apache-2.0, approved, #10548 maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 -maven/mavencentral/com.azure/azure-identity/1.10.1, MIT AND Apache-2.0, approved, #10086 maven/mavencentral/com.azure/azure-identity/1.11.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 -maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.0, MIT, approved, #10868 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.3, MIT, approved, #10868 maven/mavencentral/com.azure/azure-storage-blob/12.24.1, MIT, approved, #10568 maven/mavencentral/com.azure/azure-storage-common/12.23.1, MIT, approved, #10569 maven/mavencentral/com.azure/azure-storage-internal-avro/12.9.1, MIT, approved, #10560 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.10.3, Apache-2.0, approved, CQ21280 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.13.5, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.14.1, Apache-2.0, approved, #5303 -maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.14.2, Apache-2.0, approved, #5303 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.1, Apache-2.0, approved, #7947 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.3, Apache-2.0, approved, #7947 +maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.0, Apache-2.0, approved, #11606 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.1, Apache-2.0, approved, #11606 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.13.5, Apache-2.0, approved, #2133 -maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.14.2, Apache-2.0 AND MIT, approved, #4303 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.1, MIT AND Apache-2.0, approved, #7932 -maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.3, MIT AND Apache-2.0, approved, #7932 +maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.0, Apache-2.0 AND MIT, approved, #11602 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.1, Apache-2.0 AND MIT, approved, #11602 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.4.2, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.5, Apache-2.0, approved, #2134 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.1, Apache-2.0, approved, #4105 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.2, Apache-2.0, approved, #4105 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.1, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.3, Apache-2.0, approved, #7934 +maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.0, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.1, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #9160 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, , restricted, clearlydefined maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.14.2, Apache-2.0, approved, #4300 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1, Apache-2.0, approved, #12438 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.1, Apache-2.0, approved, #8802 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.16.1, Apache-2.0, approved, #11855 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.15.3, Apache-2.0, approved, #9179 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.16.1, Apache-2.0, approved, #11854 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.13.5, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.14.2, Apache-2.0, approved, #4699 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.1, Apache-2.0, approved, #7930 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.3, Apache-2.0, approved, #7930 +maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.0, Apache-2.0, approved, #11853 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.1, Apache-2.0, approved, #11853 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/2.16.1, Apache-2.0, approved, #11851 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.15.1, Apache-2.0, approved, #9236 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.16.1, Apache-2.0, approved, #11858 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.14.1, Apache-2.0, approved, #5308 +maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.15.3, Apache-2.0, approved, #9241 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.16.1, Apache-2.0, approved, #11856 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.1, Apache-2.0, approved, #7929 -maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.3, Apache-2.0, approved, #7929 +maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.16.0, Apache-2.0, approved, #11852 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.16.1, Apache-2.0, approved, #11852 maven/mavencentral/com.fasterxml.woodstox/woodstox-core/6.5.1, Apache-2.0, approved, #7950 maven/mavencentral/com.github.docker-java/docker-java-api/3.3.4, Apache-2.0, approved, #10346 @@ -75,13 +64,11 @@ maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-confl maven/mavencentral/com.google.j2objc/j2objc-annotations/1.3, Apache-2.0, approved, CQ21195 maven/mavencentral/com.google.protobuf/protobuf-java/3.24.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j-persistence-extension/1.2.0, MIT, approved, clearlydefined -maven/mavencentral/com.microsoft.azure/msal4j/1.13.9, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.14.0, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.4.0, MIT, approved, clearlydefined maven/mavencentral/com.nimbusds/content-type/2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.30.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/10.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.puppycrawl.tools/checkstyle/10.0, LGPL-2.1-or-later, approved, #7936 @@ -107,90 +94,65 @@ maven/mavencentral/dev.failsafe/failsafe/3.3.1, Apache-2.0, approved, #9268 maven/mavencentral/dev.failsafe/failsafe/3.3.2, Apache-2.0, approved, #9268 maven/mavencentral/info.picocli/picocli/4.6.3, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.classgraph/classgraph/4.8.154, MIT, approved, CQ22530 -maven/mavencentral/io.micrometer/micrometer-commons/1.12.0, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 -maven/mavencentral/io.micrometer/micrometer-core/1.12.0, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 -maven/mavencentral/io.micrometer/micrometer-observation/1.12.0, Apache-2.0, approved, #11680 +maven/mavencentral/io.micrometer/micrometer-commons/1.12.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 +maven/mavencentral/io.micrometer/micrometer-core/1.12.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 +maven/mavencentral/io.micrometer/micrometer-observation/1.12.1, Apache-2.0, approved, #11680 maven/mavencentral/io.netty/netty-buffer/4.1.100.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-buffer/4.1.101.Final, Apache-2.0, approved, CQ21842 -maven/mavencentral/io.netty/netty-buffer/4.1.94.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-codec-dns/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-dns/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-dns/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-http/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-http2/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-http2/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-socks/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec-socks/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec-socks/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-codec/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-codec/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-common/4.1.100.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-common/4.1.101.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 -maven/mavencentral/io.netty/netty-common/4.1.94.Final, Apache-2.0 AND MIT AND CC0-1.0, approved, CQ21843 maven/mavencentral/io.netty/netty-handler-proxy/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler-proxy/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-handler-proxy/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-handler/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-handler/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.100.Final, Apache-2.0, approved, #6367 maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.101.Final, Apache-2.0, approved, #6367 -maven/mavencentral/io.netty/netty-resolver-dns-classes-macos/4.1.94.Final, Apache-2.0, approved, #6367 maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.100.Final, Apache-2.0, approved, #7004 maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.101.Final, Apache-2.0, approved, #7004 -maven/mavencentral/io.netty/netty-resolver-dns-native-macos/4.1.94.Final, Apache-2.0, approved, #7004 maven/mavencentral/io.netty/netty-resolver-dns/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver-dns/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-resolver-dns/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-resolver/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-resolver/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.61.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 maven/mavencentral/io.netty/netty-tcnative-boringssl-static/2.0.62.Final, Apache-2.0 OR LicenseRef-Public-Domain OR BSD-2-Clause OR MIT, approved, CQ15280 -maven/mavencentral/io.netty/netty-tcnative-classes/2.0.61.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/io.netty/netty-tcnative-classes/2.0.62.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.100.Final, Apache-2.0, approved, #6366 maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.101.Final, Apache-2.0, approved, #6366 -maven/mavencentral/io.netty/netty-transport-classes-epoll/4.1.94.Final, Apache-2.0, approved, #6366 maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.100.Final, Apache-2.0, approved, #4107 maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.101.Final, Apache-2.0, approved, #4107 -maven/mavencentral/io.netty/netty-transport-classes-kqueue/4.1.94.Final, Apache-2.0, approved, #4107 maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-native-epoll/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-native-kqueue/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport-native-unix-common/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 maven/mavencentral/io.netty/netty-transport/4.1.101.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.netty/netty-transport/4.1.94.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 -maven/mavencentral/io.opentelemetry.instrumentation/opentelemetry-instrumentation-annotations/1.31.0, Apache-2.0, approved, #11085 -maven/mavencentral/io.opentelemetry/opentelemetry-api/1.31.0, Apache-2.0, approved, #11087 -maven/mavencentral/io.opentelemetry/opentelemetry-context/1.31.0, Apache-2.0, approved, #11088 -maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.34, Apache-2.0, approved, #9687 +maven/mavencentral/io.opentelemetry.instrumentation/opentelemetry-instrumentation-annotations/1.32.0, Apache-2.0, approved, #11684 +maven/mavencentral/io.opentelemetry/opentelemetry-api/1.32.0, Apache-2.0, approved, #11682 +maven/mavencentral/io.opentelemetry/opentelemetry-context/1.32.0, Apache-2.0, approved, #11683 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.38, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.39, Apache-2.0, approved, #9687 -maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.34, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.38, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.39, Apache-2.0, approved, #11661 -maven/mavencentral/io.projectreactor/reactor-core/3.4.31, Apache-2.0, approved, #7517 maven/mavencentral/io.projectreactor/reactor-core/3.4.33, Apache-2.0, approved, #7517 maven/mavencentral/io.projectreactor/reactor-core/3.4.34, Apache-2.0, approved, #7517 maven/mavencentral/io.rest-assured/json-path/5.4.0, Apache-2.0, approved, #12042 maven/mavencentral/io.rest-assured/rest-assured-common/5.4.0, Apache-2.0, approved, #12039 -maven/mavencentral/io.rest-assured/rest-assured/5.3.2, Apache-2.0, approved, #9262 maven/mavencentral/io.rest-assured/rest-assured/5.4.0, Apache-2.0, approved, #12040 maven/mavencentral/io.rest-assured/xml-path/5.4.0, Apache-2.0, approved, #12038 maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.15, Apache-2.0, approved, #5947 -maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.19, Apache-2.0, approved, #5947 +maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.20, Apache-2.0, approved, #5947 maven/mavencentral/io.swagger.core.v3/swagger-annotations/2.2.15, Apache-2.0, approved, #11362 maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.15, Apache-2.0, approved, #5929 maven/mavencentral/io.swagger.core.v3/swagger-core/2.2.15, Apache-2.0, approved, #9265 @@ -216,8 +178,10 @@ maven/mavencentral/javax.servlet/javax.servlet-api/3.1.0, (CDDL-1.1 OR GPL-2.0-o maven/mavencentral/javax.ws.rs/javax.ws.rs-api/2.1, (CDDL-1.1 OR GPL-2.0 WITH Classpath-exception-2.0) AND Apache-2.0, approved, CQ18121 maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.1, Apache-2.0, approved, #7164 +maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.10, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy/1.12.21, Apache-2.0 AND BSD-3-Clause, approved, #1811 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.1, Apache-2.0 AND BSD-3-Clause, approved, #7163 +maven/mavencentral/net.bytebuddy/byte-buddy/1.14.10, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.11, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.java.dev.jna/jna-platform/5.13.0, Apache-2.0 OR LGPL-2.1-or-later, approved, #6707 maven/mavencentral/net.java.dev.jna/jna-platform/5.6.0, Apache-2.0 OR LGPL-2.1-or-later, approved, CQ22390 @@ -245,174 +209,171 @@ maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.assertj/assertj-core/3.25.0, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.76, MIT, approved, #9825 maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 -maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.76, MIT AND CC0-1.0, approved, #9827 maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.77, MIT AND CC0-1.0, approved, #11595 -maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.76, MIT, approved, #9828 maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.77, MIT, approved, #11596 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.41.0, MIT, approved, #12032 maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 -maven/mavencentral/org.eclipse.edc/api-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/api-observability/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-index-sql/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/autodoc-processor/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-test/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-blob-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-test/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-api-configuration/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-client/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-client/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-util/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/iam-mock/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/junit/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-configuration/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/micrometer-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-client/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-lease/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/state-machine/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-local/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-api/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-core/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-azure/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.4.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.4.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-observability/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-index-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/autodoc-processor/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-test/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-blob-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-test/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-client/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-util/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/iam-mock/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/junit/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/micrometer-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-client/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-lease/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/state-machine/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-local/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-azure/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.flywaydb/flyway-core/9.22.3, Apache-2.0, approved, #10349 -maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish +maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish +maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish +maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish +maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/osgi-resource-locator/1.0.3, CDDL-1.0, approved, CQ10889 -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey maven/mavencentral/org.glassfish/jakarta.json/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/org.hamcrest/hamcrest-core/1.3, BSD-2-Clause, approved, CQ11429 maven/mavencentral/org.hamcrest/hamcrest/2.1, BSD-3-Clause, approved, clearlydefined @@ -436,15 +397,13 @@ maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.10, Apache-2.0, approv maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.21, Apache-2.0, approved, #11827 maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/17.0.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.jetbrains/annotations/24.0.1, Apache-2.0, approved, #7417 -maven/mavencentral/org.junit-pioneer/junit-pioneer/2.1.0, EPL-2.0, approved, #10550 +maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.junit-pioneer/junit-pioneer/2.2.0, EPL-2.0, approved, #11857 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.0, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.1, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.9.3, EPL-2.0, approved, #3133 -maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.0, EPL-2.0, approved, #9711 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.1, EPL-2.0, approved, #9711 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.9.3, EPL-2.0, approved, #3125 -maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.0, EPL-2.0, approved, #9708 maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #9708 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.0, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.1, EPL-2.0, approved, #9715 @@ -456,6 +415,7 @@ maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, BSD-2-Clause, approved, CQ17408 maven/mavencentral/org.mockito/mockito-core/5.2.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #7401 +maven/mavencentral/org.mockito/mockito-core/5.8.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #11787 maven/mavencentral/org.mockito/mockito-inline/5.2.0, MIT, approved, clearlydefined maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 @@ -467,7 +427,7 @@ maven/mavencentral/org.ow2.asm/asm-tree/9.6, BSD-3-Clause, approved, #10773 maven/mavencentral/org.ow2.asm/asm/9.2, BSD-3-Clause, approved, CQ23635 maven/mavencentral/org.ow2.asm/asm/9.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 -maven/mavencentral/org.postgresql/postgresql/42.6.0, BSD-2-Clause AND Apache-2.0, approved, #9159 +maven/mavencentral/org.postgresql/postgresql/42.7.0, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.postgresql/postgresql/42.7.1, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.reactivestreams/reactive-streams/1.0.4, CC0-1.0, approved, CQ16332 maven/mavencentral/org.reflections/reflections/0.10.2, Apache-2.0 AND WTFPL, approved, clearlydefined @@ -481,73 +441,67 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 maven/mavencentral/org.slf4j/slf4j-api/2.0.10, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 -maven/mavencentral/org.testcontainers/database-commons/1.19.2, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/database-commons/1.19.3, Apache-2.0, approved, #10345 -maven/mavencentral/org.testcontainers/jdbc/1.19.2, Apache-2.0, approved, #10348 maven/mavencentral/org.testcontainers/jdbc/1.19.3, Apache-2.0, approved, #10348 -maven/mavencentral/org.testcontainers/junit-jupiter/1.19.1, MIT, approved, #10344 -maven/mavencentral/org.testcontainers/junit-jupiter/1.19.2, MIT, approved, #10344 maven/mavencentral/org.testcontainers/junit-jupiter/1.19.3, MIT, approved, #10344 -maven/mavencentral/org.testcontainers/postgresql/1.19.2, MIT, approved, #10350 maven/mavencentral/org.testcontainers/postgresql/1.19.3, MIT, approved, #10350 -maven/mavencentral/org.testcontainers/testcontainers/1.19.2, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.21.15, Apache-2.0, approved, #11137 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.21.15, Apache-2.0, approved, #11133 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.21.15, Apache-2.0, approved, #11143 +maven/mavencentral/software.amazon.awssdk/arns/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.21.15, Apache-2.0, approved, #11139 +maven/mavencentral/software.amazon.awssdk/auth/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.21.15, Apache-2.0, approved, #11126 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.21.15, Apache-2.0, approved, #11123 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.21.15, Apache-2.0, approved, #11124 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.21.15, Apache-2.0, approved, #11131 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.21.15, Apache-2.0, approved, #11134 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.21.15, Apache-2.0, approved, #11130 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.21.15, Apache-2.0, approved, #11118 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.21.15, Apache-2.0, approved, #11145 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.21.15, Apache-2.0, approved, #11128 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.21.15, Apache-2.0, approved, #11120 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.21.15, Apache-2.0, approved, #11132 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/iam/2.21.15, Apache-2.0, approved, #11138 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.21.15, Apache-2.0, approved, #11129 +maven/mavencentral/software.amazon.awssdk/iam/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.21.15, Apache-2.0, approved, #11119 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.21.15, Apache-2.0, approved, #11144 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.21.15, Apache-2.0, approved, #11140 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.21.15, Apache-2.0, approved, #11148 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.21.15, Apache-2.0, approved, #11141 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.21.15, Apache-2.0, approved, #11142 +maven/mavencentral/software.amazon.awssdk/regions/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.21.15, Apache-2.0, approved, #11135 +maven/mavencentral/software.amazon.awssdk/s3/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.21.15, Apache-2.0, approved, #11121 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sts/2.21.15, Apache-2.0, approved, #11146 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.21.15, Apache-2.0, approved, #11127 +maven/mavencentral/software.amazon.awssdk/sts/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.21.15, Apache-2.0, approved, #11136 +maven/mavencentral/software.amazon.awssdk/utils/2.22.6, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.22.9, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java index 39042ac52..d78b3d9ea 100644 --- a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java +++ b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java @@ -247,7 +247,6 @@ private StatusResult fireTransferProcess(EndpointDataReferenceEntry entry) var transferRequest = TransferRequest.Builder.newInstance() .assetId(dataRequest.getAssetId()) - .connectorId(dataRequest.getConnectorId()) .contractId(dataRequest.getContractId()) .protocol(dataRequest.getProtocol()) .counterPartyAddress(dataRequest.getConnectorAddress()) diff --git a/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java b/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java index e0ffd32cd..f7f1287db 100644 --- a/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java +++ b/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java @@ -30,7 +30,6 @@ import static org.mockito.Mockito.anyString; import static org.mockito.Mockito.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -43,7 +42,7 @@ class VaultSeedExtensionTest { @BeforeEach void setup(ServiceExtensionContext context, ObjectFactory factory) { - this.context = spy(context); + this.context = context; monitor = mock(Monitor.class); context.registerService(Monitor.class, monitor); context.registerService(Vault.class, new InMemoryVault(monitor)); @@ -56,7 +55,7 @@ void name() { } @ParameterizedTest - @ValueSource(strings = {"key1:", "key1:value1", "key1:value1;", ";key1:value1", ";sdf;key1:value1"}) + @ValueSource(strings = { "key1:", "key1:value1", "key1:value1;", ";key1:value1", ";sdf;key1:value1" }) void createInMemVault_validString(String secret) { when(context.getSetting(eq(VaultSeedExtension.VAULT_MEMORY_SECRETS_PROPERTY), eq(null))).thenReturn(secret); extension.createInMemVault(context); diff --git a/edc-dataplane/edc-dataplane-base/build.gradle.kts b/edc-dataplane/edc-dataplane-base/build.gradle.kts index 021e4a254..53a5ce480 100644 --- a/edc-dataplane/edc-dataplane-base/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-base/build.gradle.kts @@ -38,7 +38,8 @@ dependencies { runtimeOnly(libs.edc.dpf.core) runtimeOnly(libs.edc.controlplane.apiclient) - runtimeOnly(libs.edc.dpf.api) + runtimeOnly(libs.edc.dpf.api.control) + runtimeOnly(libs.edc.dpf.api.public) runtimeOnly(libs.edc.core.connector) runtimeOnly(libs.edc.boot) diff --git a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java index 1b3cbdc2c..080308cd4 100644 --- a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java +++ b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java @@ -35,7 +35,6 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.startsWith; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -49,7 +48,7 @@ class TxEncryptorExtensionTest { @BeforeEach void setup(ObjectFactory factory, ServiceExtensionContext c) { c.registerService(Monitor.class, monitor); - context = spy(c); + context = c; when(context.getSetting(ENCRYPTION_KEY_ALIAS, null)).thenReturn("test-key"); extension = factory.constructInstance(TxEncryptorExtension.class); } @@ -76,7 +75,7 @@ void createEncryptor_withPropertyEqualsAes() { } @ParameterizedTest - @ValueSource(strings = {CACHING_ENABLED, CACHING_SECONDS}) + @ValueSource(strings = { CACHING_ENABLED, CACHING_SECONDS }) void verifyDeprecationWarnings(String deprecatedSetting) { when(context.getSetting(eq(deprecatedSetting), any())).thenReturn("doesn't matter"); extension.createEncryptor(context); diff --git a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java index 0bc1446a9..dfc13befa 100644 --- a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java +++ b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java @@ -29,7 +29,6 @@ import static org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCacheExtension.DEFAULT_DATASOURCE_NAME; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -42,7 +41,7 @@ public class SqlEndpointDataReferenceCacheExtensionTest { @BeforeEach void setUp(ObjectFactory factory, ServiceExtensionContext context) { - this.context = spy(context); + this.context = context; context.registerService(TypeManager.class, new TypeManager()); context.registerService(DataSourceRegistry.class, mock(DataSourceRegistry.class)); extension = factory.constructInstance(SqlEndpointDataReferenceCacheExtension.class); diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java index 031e75c3c..f09a7c682 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java @@ -54,7 +54,6 @@ private Result initiateTransfer(ContractNegotiationFinalized negotiationFi .id(UUID.randomUUID().toString()) .assetId(negotiationFinalized.getContractAgreement().getAssetId()) .contractId(negotiationFinalized.getContractAgreement().getId()) - .connectorId(negotiationFinalized.getCounterPartyId()) .counterPartyAddress(negotiationFinalized.getCounterPartyAddress()) .protocol(negotiationFinalized.getProtocol()) .dataDestination(DATA_DESTINATION) diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java index ad72a815d..7337f59d2 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java @@ -95,7 +95,9 @@ private Result storeEdr(EndpointDataReference edr) { if (contractNegotiation != null) { contractNegotiationId = contractNegotiation.getId(); } else { - monitor.warning(format("Contract negotiation for agreement with id: %s is missing.", transferProcess.getContractId())); + var msg = format("Contract negotiation for agreement with id: %s is missing.", transferProcess.getContractId()); + monitor.warning(msg); + return Result.failure(msg); } var expirationTime = extractExpirationTime(edr); @@ -106,7 +108,7 @@ private Result storeEdr(EndpointDataReference edr) { .transferProcessId(transferProcess.getId()) .assetId(transferProcess.getDataRequest().getAssetId()) .agreementId(transferProcess.getDataRequest().getContractId()) - .providerId(transferProcess.getDataRequest().getConnectorId()) + .providerId(contractNegotiation.getCounterPartyId()) .state(EndpointDataReferenceEntryStates.NEGOTIATED.code()) .expirationTimestamp(expirationTime.getContent()) .contractNegotiationId(contractNegotiationId) diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java index bc3d81448..9d43d352d 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java @@ -63,6 +63,16 @@ public class ContractNegotiationCallbackTest { ContractNegotiationCallback callback; + private static > B baseBuilder(B builder) { + var callbacks = List.of(CallbackAddress.Builder.newInstance().uri("http://local").events(Set.of("test")).build()); + return builder + .contractNegotiationId("id") + .protocol("test") + .callbackAddresses(callbacks) + .counterPartyAddress("addr") + .counterPartyId("provider"); + } + @BeforeEach void setup() { callback = new ContractNegotiationCallback(transferProcessService, monitor); @@ -92,7 +102,6 @@ void invoke_shouldStartTransferProcess() { assertThat(tp.getContractId()).isEqualTo(event.getContractAgreement().getId()); assertThat(tp.getAssetId()).isEqualTo(event.getContractAgreement().getAssetId()); assertThat(tp.getCounterPartyAddress()).isEqualTo(event.getCounterPartyAddress()); - assertThat(tp.getConnectorId()).isEqualTo(event.getCounterPartyId()); assertThat(tp.getProtocol()).isEqualTo(event.getProtocol()); assertThat(tp.getDataDestination()).usingRecursiveComparison().isEqualTo(DATA_DESTINATION); }); @@ -140,16 +149,6 @@ void invoke_whenFinalized() { verify(transferProcessService).initiateTransfer(any(TransferRequest.class)); } - private static > B baseBuilder(B builder) { - var callbacks = List.of(CallbackAddress.Builder.newInstance().uri("http://local").events(Set.of("test")).build()); - return builder - .contractNegotiationId("id") - .protocol("test") - .callbackAddresses(callbacks) - .counterPartyAddress("addr") - .counterPartyId("provider"); - } - private static class EventInstances implements ArgumentsProvider { @Override diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java index 84dc5eb0a..60c8ecad6 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java @@ -14,6 +14,7 @@ package org.eclipse.tractusx.edc.callback; +import org.eclipse.edc.connector.contract.spi.types.negotiation.ContractNegotiation; import org.eclipse.edc.connector.spi.contractagreement.ContractAgreementService; import org.eclipse.edc.connector.transfer.spi.event.TransferProcessCompleted; import org.eclipse.edc.connector.transfer.spi.event.TransferProcessDeprovisioned; @@ -108,11 +109,20 @@ void invoke_shouldStoreTheEdrInCache_whenDataAddressIsPresent() { var edrEntry = EndpointDataReferenceEntry.Builder.newInstance() .agreementId(contractId) .transferProcessId(transferProcessId) - .assetId(assetId).build(); + .assetId(assetId) + .build(); + + var negotiation = ContractNegotiation.Builder.newInstance() + .id(contractId) + .counterPartyId("providerId") + .counterPartyAddress("http://test") + .protocol("protocol") + .build(); when(transformerRegistry.transform(any(DataAddress.class), eq(EndpointDataReference.class))).thenReturn(Result.success(edr)); when(transferProcessStore.findForCorrelationId(edr.getId())).thenReturn(transferProcess); when(transferProcessStore.findById(transferProcessId)).thenReturn(transferProcess); + when(agreementService.findNegotiation(contractId)).thenReturn(negotiation); when(edrCache.queryForEntries(any())).thenReturn(Stream.of(edrEntry)); diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java index ff88d9a9f..fa86a86c5 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java @@ -24,6 +24,7 @@ import org.eclipse.edc.spi.persistence.EdcPersistenceException; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.sql.DriverManagerConnectionFactory; import org.eclipse.edc.sql.datasource.ConnectionFactoryDataSource; import org.flywaydb.core.Flyway; import org.flywaydb.core.api.MigrationVersion; @@ -32,7 +33,7 @@ import java.util.Properties; abstract class AbstractPostgresqlMigrationExtension implements ServiceExtension { - + private static final String EDC_DATASOURCE_PREFIX = "edc.datasource"; private static final String MIGRATION_LOCATION_BASE = String.format("classpath:%s", AbstractPostgresqlMigrationExtension.class.getPackageName().replace(".", "/")); @@ -50,12 +51,10 @@ public String name() { return "Postgresql schema migration for subsystem " + getSubsystemName(); } - protected abstract String getSubsystemName(); - @Override public void initialize(final ServiceExtensionContext context) { var config = context.getConfig(); - + var subSystemName = Objects.requireNonNull(getSubsystemName()); var enabled = config.getBoolean(MIGRATION_ENABLED_TEMPLATE.formatted(subSystemName), Boolean.valueOf(DEFAULT_MIGRATION_ENABLED_TEMPLATE)); @@ -77,8 +76,8 @@ public void initialize(final ServiceExtensionContext context) { var jdbcProperties = new Properties(); jdbcProperties.putAll(datasourceConfig.getRelativeEntries()); - var driverManagerConnectionFactory = new DriverManagerConnectionFactory(jdbcUrl, jdbcProperties); - var dataSource = new ConnectionFactoryDataSource(driverManagerConnectionFactory); + var driverManagerConnectionFactory = new DriverManagerConnectionFactory(); + var dataSource = new ConnectionFactoryDataSource(driverManagerConnectionFactory, jdbcUrl, jdbcProperties); var flyway = Flyway.configure() @@ -102,4 +101,6 @@ public void initialize(final ServiceExtensionContext context) { } } + protected abstract String getSubsystemName(); + } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java deleted file mode 100644 index f4667de28..000000000 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/DriverManagerConnectionFactory.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH - * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - */ - -package org.eclipse.tractusx.edc.postgresql.migration; - -import org.eclipse.edc.spi.persistence.EdcPersistenceException; -import org.eclipse.edc.sql.ConnectionFactory; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.util.Objects; -import java.util.Properties; - -/** - * From the EDC version after 0.4.1 this connection factory will be provided as injectable service, so this duplicate - * can be removed on the next version update. - * - * @deprecated will be removed on the next version - */ -@Deprecated(since = "0.6.0") -class DriverManagerConnectionFactory implements ConnectionFactory { - private final String jdbcUrl; - private final Properties properties; - - DriverManagerConnectionFactory(final String jdbcUrl, final Properties properties) { - this.jdbcUrl = Objects.requireNonNull(jdbcUrl); - this.properties = Objects.requireNonNull(properties); - } - - @Override - public Connection create() { - try { - return DriverManager.getConnection(jdbcUrl, properties); - } catch (Exception exception) { - throw new EdcPersistenceException(exception.getMessage(), exception); - } - } -} diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy/V0_0_4__Add_Private_Properties.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy/V0_0_4__Add_Private_Properties.sql new file mode 100644 index 000000000..283ec3f02 --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/policy/V0_0_4__Add_Private_Properties.sql @@ -0,0 +1,15 @@ +-- +-- Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +-- + +-- add columns +ALTER TABLE edc_policydefinitions ADD COLUMN private_properties JSON; \ No newline at end of file diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_12__Alter_TransferProcess_AddTransferType.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_12__Alter_TransferProcess_AddTransferType.sql new file mode 100644 index 000000000..121fc7235 --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_12__Alter_TransferProcess_AddTransferType.sql @@ -0,0 +1,15 @@ +-- +-- Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +-- + +-- add column +ALTER TABLE edc_transfer_process ADD COLUMN transfer_type VARCHAR; diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java index 199600929..ac634d7ae 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java @@ -19,6 +19,7 @@ import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.iam.TokenParameters; import org.eclipse.edc.spi.iam.TokenRepresentation; +import org.eclipse.edc.spi.iam.VerificationContext; import org.eclipse.edc.spi.result.Result; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; @@ -39,7 +40,7 @@ public Result obtainClientCredentials(TokenParameters param } @Override - public Result verifyJwtToken(TokenRepresentation tokenRepresentation, String audience) { + public Result verifyJwtToken(TokenRepresentation tokenRepresentation, VerificationContext verificationContext) { return tokenValidationService.validate(tokenRepresentation); } } diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java index 42a88786c..3255f83b3 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java @@ -28,7 +28,6 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.eclipse.tractusx.edc.iam.ssi.identity.SsiIdentityServiceExtension.ENDPOINT_AUDIENCE; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -41,7 +40,7 @@ public class SsiIdentityServiceExtensionTest { @BeforeEach void setup(ObjectFactory factory, ServiceExtensionContext context) { - this.context = spy(context); + this.context = context; context.registerService(SsiCredentialClient.class, mock(SsiCredentialClient.class)); extension = factory.constructInstance(SsiIdentityServiceExtension.class); } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java index 140de3a53..838146279 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java @@ -31,7 +31,6 @@ import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -44,7 +43,7 @@ public class SsiMiwConfigurationExtensionTest { @BeforeEach void setup(ObjectFactory factory, ServiceExtensionContext context) { - this.context = spy(context); + this.context = context; extension = factory.constructInstance(SsiMiwConfigurationExtension.class); } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java index 474e84b02..acecfbdf6 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java @@ -33,7 +33,6 @@ import static org.eclipse.tractusx.edc.iam.ssi.miw.SsiMiwOauth2ClientExtension.CLIENT_SECRET_ALIAS; import static org.eclipse.tractusx.edc.iam.ssi.miw.SsiMiwOauth2ClientExtension.TOKEN_URL; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -48,7 +47,7 @@ public class SsiMiwOauth2ClientExtensionTest { @BeforeEach void setup(ObjectFactory factory, ServiceExtensionContext context) { - this.context = spy(context); + this.context = context; context.registerService(MiwApiClient.class, mock(MiwApiClient.class)); context.registerService(TypeManager.class, new TypeManager()); context.registerService(Vault.class, vault); @@ -85,7 +84,7 @@ void initialize_withTrailingUrl() { .extracting(MiwOauth2ClientImpl::getConfiguration) .extracting(MiwOauth2ClientConfiguration::getTokenUrl) .isEqualTo("http://localhost:8080"); - + verify(config).getString(TOKEN_URL); verify(config).getString(CLIENT_ID); verify(config).getString(CLIENT_SECRET_ALIAS); diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java index 34afa8c57..3784c9b81 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java @@ -39,7 +39,7 @@ public class SsiCredentialIssuerValidationRuleTest { @Test void checkRule() throws JsonProcessingException { - validationRule = new SsiCredentialIssuerValidationRule("did:web:issuer-a016-203-129-213-99.ngrok-free.app:BPNL000000000000", mock(Monitor.class)); + validationRule = new SsiCredentialIssuerValidationRule("did:web:issuer-example.com", mock(Monitor.class)); var vp = expand(createObjectMapper().readValue(SUMMARY_VP, JsonObject.class), CONTEXT_CACHE); var claimToken = ClaimToken.Builder.newInstance().claim(VP_PROPERTY, vp).build(); var result = validationRule.checkRule(claimToken, Map.of()); diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java index 7fefd00fb..411b15367 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java @@ -43,7 +43,7 @@ void checkRule() throws JsonProcessingException { var vp = expand(createObjectMapper().readValue(SUMMARY_VP, JsonObject.class), CONTEXT_CACHE); var claimToken = ClaimToken.Builder.newInstance() .claim(VP_PROPERTY, vp) - .claim(ISSUER, "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000").build(); + .claim(ISSUER, "did:web:example.com").build(); var result = validationRule.checkRule(claimToken, Map.of()); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java index 4c933fb1b..c592de742 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java @@ -43,6 +43,7 @@ public class PolicyHelperFunctions { public static final String TX_NAMESPACE = "https://w3id.org/tractusx/v0.0.1/ns/"; + private static final String ODRL_JSONLD = "http://www.w3.org/ns/odrl.jsonld"; private static final String BUSINESS_PARTNER_EVALUATION_KEY = "BusinessPartnerNumber"; public static final String BUSINESS_PARTNER_LEGACY_EVALUATION_KEY = TX_NAMESPACE + BUSINESS_PARTNER_EVALUATION_KEY; @@ -51,23 +52,9 @@ public class PolicyHelperFunctions { private static final ObjectMapper MAPPER = JacksonJsonLd.createObjectMapper(); - /** - * Creates a {@link PolicyDefinition} using the given ID, that contains equality constraints for each of the given BusinessPartnerNumbers: - * each BPN is converted into an {@link AtomicConstraint} {@code BusinessPartnerNumber EQ [BPN]}. - * - * @deprecated This method creates a policy that is compliant with the old/legacy BPN validation. Please use {@link PolicyHelperFunctions#businessPartnerGroupPolicy(String, Operator, String...)} instead. - */ - @Deprecated - public static JsonObject businessPartnerNumberPolicy(String id, String... bpns) { - return policyDefinitionBuilder(bnpPolicy(bpns)) - .add(ID, id) - .build(); - } - public static JsonObject businessPartnerGroupPolicy(String id, Operator operator, String... allowedGroups) { - return policyDefinitionBuilder(bpnGroupPolicy(operator.getOdrlRepresentation(), allowedGroups)) - .add(ID, id) - .build(); + public static JsonObject bpnGroupPolicy(Operator operator, String... allowedGroups) { + return bpnGroupPolicy(operator.getOdrlRepresentation(), allowedGroups); } private static JsonObject bpnGroupPolicy(String operator, String... allowedGroups) { @@ -75,7 +62,7 @@ private static JsonObject bpnGroupPolicy(String operator, String... allowedGroup var groupConstraint = atomicConstraint(BUSINESS_PARTNER_CONSTRAINT_KEY, operator, Arrays.asList(allowedGroups)); var permission = Json.createObjectBuilder() - .add("action", "USE") + .add("action", "use") .add("constraint", Json.createObjectBuilder() .add(TYPE, ODRL_LOGICAL_CONSTRAINT_TYPE) .add("or", groupConstraint) @@ -83,7 +70,7 @@ private static JsonObject bpnGroupPolicy(String operator, String... allowedGroup .build(); return Json.createObjectBuilder() - .add(CONTEXT, "http://www.w3.org/ns/odrl.jsonld") + .add(CONTEXT, ODRL_JSONLD) .add("permission", permission) .build(); } @@ -132,21 +119,9 @@ public static JsonObjectBuilder policyDefinitionBuilder(JsonObject policy) { .add(EDC_NAMESPACE + "policy", policy); } - public static JsonObject noConstraintPolicyDefinition(String id) { - return policyDefinitionBuilder(noConstraintPolicy()) - .add(ID, id) - .build(); - } - - private static JsonObject noConstraintPolicy() { - return Json.createObjectBuilder() - .add(TYPE, "use") - .build(); - } - - private static JsonObject bnpPolicy(String... bnps) { + public static JsonObject bnpPolicy(String... bnps) { return Json.createObjectBuilder() - .add(CONTEXT, "http://www.w3.org/ns/odrl.jsonld") + .add(CONTEXT, ODRL_JSONLD) .add("permission", Json.createArrayBuilder() .add(permission(bnps))) .build(); @@ -155,11 +130,11 @@ private static JsonObject bnpPolicy(String... bnps) { private static JsonObject permission(String... bpns) { var bpnConstraints = Stream.of(bpns) - .map(bpn -> atomicConstraint(BUSINESS_PARTNER_EVALUATION_KEY, "eq", bpn)) + .map(bpn -> atomicConstraint(TX_NAMESPACE + BUSINESS_PARTNER_EVALUATION_KEY, "eq", bpn)) .collect(Json::createArrayBuilder, JsonArrayBuilder::add, JsonArrayBuilder::add); return Json.createObjectBuilder() - .add("action", "USE") + .add("action", "use") .add("constraint", Json.createObjectBuilder() .add(TYPE, ODRL_LOGICAL_CONSTRAINT_TYPE) .add("or", bpnConstraints) @@ -167,9 +142,9 @@ private static JsonObject permission(String... bpns) { .build(); } - private static JsonObject frameworkPolicy(Map permissions) { + public static JsonObject frameworkPolicy(Map permissions) { return Json.createObjectBuilder() - .add(CONTEXT, "http://www.w3.org/ns/odrl.jsonld") + .add(CONTEXT, ODRL_JSONLD) .add("permission", Json.createArrayBuilder() .add(frameworkPermission(permissions))) .build(); @@ -182,7 +157,7 @@ private static JsonObject frameworkPermission(Map permissions) { .collect(Json::createArrayBuilder, JsonArrayBuilder::add, JsonArrayBuilder::add); return Json.createObjectBuilder() - .add("action", "USE") + .add("action", "use") .add("constraint", Json.createObjectBuilder() .add(TYPE, ODRL_LOGICAL_CONSTRAINT_TYPE) .add("or", constraints) diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java deleted file mode 100644 index 69e18675d..000000000 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/Participant.java +++ /dev/null @@ -1,482 +0,0 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation - * - */ - -package org.eclipse.tractusx.edc.lifecycle; - -import com.fasterxml.jackson.databind.ObjectMapper; -import io.restassured.response.Response; -import io.restassured.response.ValidatableResponse; -import io.restassured.specification.RequestSpecification; -import jakarta.json.Json; -import jakarta.json.JsonArray; -import jakarta.json.JsonObject; -import jakarta.json.JsonValue; -import org.eclipse.edc.jsonld.TitaniumJsonLd; -import org.eclipse.edc.jsonld.spi.JsonLd; -import org.eclipse.edc.jsonld.util.JacksonJsonLd; -import org.eclipse.edc.spi.EdcException; -import org.eclipse.edc.spi.monitor.Monitor; -import org.eclipse.edc.spi.types.domain.edr.EndpointDataReference; -import org.eclipse.tractusx.edc.helpers.AssetHelperFunctions; -import org.eclipse.tractusx.edc.helpers.ContractDefinitionHelperFunctions; - -import java.net.URI; -import java.util.Arrays; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.atomic.AtomicReference; - -import static io.restassured.RestAssured.given; -import static io.restassured.http.ContentType.JSON; -import static java.lang.String.format; -import static org.assertj.core.api.Assertions.assertThat; -import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.connector.contract.spi.types.negotiation.ContractNegotiationStates.FINALIZED; -import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; -import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATASET_ATTRIBUTE; -import static org.eclipse.tractusx.edc.helpers.AssetHelperFunctions.createDataAddressBuilder; -import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.createCatalogRequest; -import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetAssetId; -import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetContractId; -import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetFirstPolicy; -import static org.eclipse.tractusx.edc.helpers.ContractNegotiationHelperFunctions.createNegotiationRequest; -import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createEdrNegotiationRequest; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; -import static org.eclipse.tractusx.edc.helpers.TransferProcessHelperFunctions.createTransferRequest; -import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; -import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; -import static org.mockito.Mockito.mock; - -public class Participant { - - private static final String PROXY_SUBPATH = "proxy/aas/request"; - - private final String managementUrl; - private final String apiKey; - private final String dspEndpoint; - - private final String gatewayEndpoint; - - private final String runtimeName; - private final String bpn; - private final String backend; - private final JsonLd jsonLd; - - private final ObjectMapper objectMapper = JacksonJsonLd.createObjectMapper(); - private final String proxyUrl; - - public Participant(String runtimeName, String bpn, Map properties) { - this.managementUrl = URI.create(format("http://localhost:%s%s", properties.get("web.http.management.port"), properties.get("web.http.management.path"))).toString(); - this.dspEndpoint = URI.create(format("http://localhost:%s%s", properties.get("web.http.protocol.port"), properties.get("web.http.protocol.path"))).toString(); - this.apiKey = properties.get("edc.api.auth.key"); - this.gatewayEndpoint = URI.create(format("http://localhost:%s/api/gateway", properties.get("web.http.port"))).toString(); - this.proxyUrl = URI.create(format("http://localhost:%s", properties.get("tx.dpf.consumer.proxy.port"))).toString(); - this.bpn = bpn; - this.runtimeName = runtimeName; - this.backend = properties.get("edc.receiver.http.dynamic.endpoint"); - jsonLd = new TitaniumJsonLd(mock(Monitor.class)); - } - - /** - * Creates an asset with the given ID and props using the participant's Data Management API - */ - public void createAsset(String id, JsonObject properties) { - createAsset(id, properties, createDataAddressBuilder("test-type").build()); - } - - /** - * Creates an asset with the given ID and props using the participant's Data Management API - */ - public void createAsset(String id) { - createAsset(id, Json.createObjectBuilder().build(), createDataAddressBuilder("test-type").build()); - } - - /** - * Creates an asset with the given ID and props using the participant's Data Management API - */ - public void createAsset(String id, JsonObject assetProperties, JsonObject dataAddress) { - var asset = AssetHelperFunctions.createAsset(id, assetProperties, dataAddress); - - baseRequest() - .body(asset) - .when() - .post("/v3/assets") - .then() - .log().ifError() - .statusCode(200) - .contentType(JSON); - } - - /** - * Creates a {@link org.eclipse.edc.connector.contract.spi.types.offer.ContractDefinition} using the participant's Data Management API - */ - public void createContractDefinition(String assetId, String definitionId, String accessPolicyId, String contractPolicyId) { - var requestBody = ContractDefinitionHelperFunctions.createContractDefinition(assetId, definitionId, accessPolicyId, contractPolicyId); - - baseRequest() - .contentType(JSON) - .body(requestBody) - .when() - .post("/v2/contractdefinitions") - .then() - .statusCode(200) - .contentType(JSON); - } - - public String createPolicy(JsonObject policyDefinition) { - return baseRequest() - .contentType(JSON) - .body(policyDefinition) - .when() - .post("/v2/policydefinitions") - .then() - .log().ifError() - .statusCode(200) - .contentType(JSON) - .extract() - .path("@id"); - } - - public void storeBusinessPartner(String bpn, String... groups) { - var body = Json.createObjectBuilder() - .add(ID, bpn) - .add(TX_NAMESPACE + "groups", Json.createArrayBuilder(Arrays.asList(groups))) - .build(); - baseRequest() - .contentType(JSON) - .body(body) - .when() - .post("/business-partner-groups") - .then() - .statusCode(204); - } - - public String negotiateContract(Participant other, String assetId) { - var dataset = getDatasetForAsset(other, assetId); - assertThat(dataset).withFailMessage("Catalog received from " + other.runtimeName + " was empty!").isNotEmpty(); - - var policy = getDatasetFirstPolicy(dataset); - var requestBody = createNegotiationRequest(other.dspEndpoint, other.getBpn(), policy); - var response = baseRequest() - .when() - .body(requestBody) - .post("/v2/contractnegotiations") - .then(); - - var body = response.extract().body().asString(); - assertThat(response.extract().statusCode()).withFailMessage(body).isBetween(200, 299); - - return response.extract().jsonPath().getString(ID); - } - - public String negotiateEdr(Participant other, String assetId, JsonArray callbacks) { - var dataset = getDatasetForAsset(other, assetId); - assertThat(dataset).withFailMessage("Catalog received from " + other.runtimeName + " was empty!").isNotEmpty(); - - var policy = getDatasetFirstPolicy(dataset); - var contractId = getDatasetContractId(dataset); - - var requestBody = createEdrNegotiationRequest(other.dspEndpoint, other.getBpn(), contractId.toString(), contractId.assetIdPart(), policy, callbacks); - - - var response = baseRequest() - .when() - .body(requestBody) - .post("/edrs") - .then(); - - var body = response.extract().body().asString(); - assertThat(response.extract().statusCode()).withFailMessage(body).isBetween(200, 299); - - return response.extract().jsonPath().getString(ID); - } - - public String getNegotiationState(String negotiationId) { - return baseRequest() - .when() - .get("/v2/contractnegotiations/{id}/state", negotiationId) - .then() - .statusCode(200) - .extract().body().jsonPath().getString("'state'"); - } - - public String getContractAgreementId(String negotiationId) { - return getContractNegotiationField(negotiationId, "contractAgreementId"); - } - - public String getContractNegotiationError(String negotiationId) { - return getContractNegotiationField(negotiationId, "errorDetail"); - } - - public JsonObject getEdr(String transferProcessId) { - return getEdrRequest(transferProcessId) - .statusCode(200) - .extract() - .body() - .as(JsonObject.class); - } - - public ValidatableResponse getEdrRequest(String transferProcessId) { - return baseRequest() - .when() - .get("/edrs/{id}", transferProcessId) - .then(); - } - - public JsonArray getEdrEntriesByAssetId(String assetId) { - return baseRequest() - .when() - .get("/edrs?assetId={assetId}", assetId) - .then() - .statusCode(200) - .extract() - .body() - .as(JsonArray.class); - } - - public JsonArray getEdrEntriesByContractNegotiationId(String contractNegotiationId) { - return baseRequest() - .when() - .get("/edrs?contractNegotiationId={contractNegotiationId}", contractNegotiationId) - .then() - .statusCode(200) - .extract() - .body() - .as(JsonArray.class); - } - - public JsonArray getEdrEntriesByAgreementId(String agreementId) { - return baseRequest() - .when() - .get("/edrs?agreementId={agreementId}", agreementId) - .then() - .statusCode(200) - .extract() - .body() - .as(JsonArray.class); - } - - /** - * Returns this participant's BusinessPartnerNumber (=BPN). This is constructed of the runtime name plus "-BPN" - */ - public String getBpn() { - return bpn; - } - - public String requestTransfer(String dataRequestId, String contractId, String assetId, Participant other, JsonObject destination) { - - var request = createTransferRequest(dataRequestId, other.dspEndpoint, contractId, assetId, false, destination); - var response = baseRequest() - .when() - .body(request) - .post("/v2/transferprocesses") - .then(); - - var body = response.extract().body().asString(); - assertThat(response.extract().statusCode()).withFailMessage(body).isBetween(200, 299); - - return response.extract().jsonPath().getString(ID); - - } - - public JsonArray getAllTransferProcess() { - return baseRequest() - .when() - .post("/v2/transferprocesses/request") - .then() - .statusCode(200) - .extract() - .body() - .as(JsonArray.class); - } - - public String getTransferProcessState(String id) { - return baseRequest() - .when() - .get("/v2/transferprocesses/{id}/state", id) - .then() - .statusCode(200) - .extract().body().jsonPath().getString("'state'"); - } - - public EndpointDataReference getDataReference(String dataRequestId) { - var dataReference = new AtomicReference(); - - var result = given() - .when() - .get(backend + "/{id}", dataRequestId) - .then() - .statusCode(200) - .extract() - .body() - .as(EndpointDataReference.class); - dataReference.set(result); - - return dataReference.get(); - } - - public String pullData(EndpointDataReference edr, Map queryParams) { - var response = given() - .baseUri(edr.getEndpoint()) - .header(edr.getAuthKey(), edr.getAuthCode()) - .queryParams(queryParams) - .when() - .get(); - assertThat(response.statusCode()).isBetween(200, 300); - return response.body().asString(); - } - - public JsonArray getCatalogDatasets(Participant provider) { - return getCatalogDatasets(provider, null); - } - - public JsonArray getCatalogDatasets(Participant provider, JsonObject querySpec) { - var datasetReference = new AtomicReference(); - - var requestBody = createCatalogRequest(querySpec, provider.dspEndpoint); - - await().pollInterval(ASYNC_POLL_INTERVAL).atMost(ASYNC_TIMEOUT).untilAsserted(() -> { - System.out.println("REQUEST CATALOG"); - var response = baseRequest() - .contentType(JSON) - .when() - .body(requestBody) - .post("/v2/catalog/request") - .then() - .log().ifError() - .statusCode(200) - .extract().body().asString(); - - var responseBody = objectMapper.readValue(response, JsonObject.class); - var catalog = jsonLd.expand(responseBody).orElseThrow(f -> new EdcException(f.getFailureDetail())); - - var datasets = catalog.getJsonArray(DCAT_DATASET_ATTRIBUTE); - assertThat(datasets).hasSizeGreaterThan(0); - - datasetReference.set(datasets); - }); - - return datasetReference.get(); - } - - /** - * Request a provider asset: - * - retrieves the contract definition associated with the asset, - * - handles the contract negotiation, - * - initiate the data transfer. - * - * @param provider data provider - * @param assetId asset id - * @param destination data destination - * @return transfer process id. - */ - public String requestAsset(Participant provider, String assetId, JsonObject destination) { - var negotiationId = negotiateContract(provider, assetId); - var contractAgreementId = waitForAgreementId(negotiationId); - var transferProcessId = requestTransfer(UUID.randomUUID().toString(), contractAgreementId, assetId, provider, destination); - assertThat(transferProcessId).isNotNull(); - return transferProcessId; - } - - - public String waitForAgreementId(String negotiationId) { - await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { - var state = getContractNegotiationField(negotiationId, "state"); - assertThat(state).isEqualTo(FINALIZED.name()); - }); - - return getContractAgreementId(negotiationId); - } - - - public String pullProxyDataByAssetId(Participant provider, String assetId) { - var body = Map.of("assetId", assetId, "endpointUrl", format("%s/aas/test", provider.gatewayEndpoint)); - return getProxyData(body); - } - - - public String pullProviderDataPlaneDataByAssetId(Participant provider, String assetId) { - var body = Map.of("assetId", assetId); - return getProxyData(body); - } - - public String pullProviderDataPlaneDataByAssetIdAndCustomProperties(Participant provider, String assetId, String path, String params) { - var body = Map.of("assetId", assetId, "pathSegments", path, "queryParams", params); - return getProxyData(body); - } - - public Response pullProxyDataResponseByAssetId(Participant provider, String assetId) { - var body = Map.of("assetId", assetId, - "endpointUrl", format("%s/aas/test", provider.gatewayEndpoint), - "providerId", provider.bpn); - return proxyRequest(body); - } - - public String pullProxyDataByTransferProcessId(Participant provider, String transferProcessId) { - var body = Map.of("transferProcessId", transferProcessId, - "endpointUrl", format("%s/aas/test", provider.gatewayEndpoint)); - return getProxyData(body); - - } - - public String pullProviderDataPlaneDataByTransferProcessId(Participant provider, String transferProcessId) { - var body = Map.of("transferProcessId", transferProcessId); - return getProxyData(body); - - } - - public JsonObject getDatasetForAsset(Participant provider, String assetId) { - var datasets = getCatalogDatasets(provider); - return datasets.stream() - .map(JsonValue::asJsonObject) - .filter(it -> assetId.equals(getDatasetAssetId(it))) - .findFirst() - .orElseThrow(() -> new EdcException(format("No dataset for asset %s in the catalog", assetId))); - } - - private String getContractNegotiationField(String negotiationId, String fieldName) { - return baseRequest() - .when() - .get("/v2/contractnegotiations/{id}", negotiationId) - .then() - .statusCode(200) - .extract().body().jsonPath() - .getString(format("'%s'", fieldName)); - } - - private String getProxyData(Map body) { - return proxyRequest(body) - .then() - .assertThat().statusCode(200) - .extract().body().asString(); - } - - private Response proxyRequest(Map body) { - return given() - .baseUri(proxyUrl) - .header("x-api-key", apiKey) - .contentType("application/json") - .body(body) - .post(PROXY_SUBPATH); - } - - private RequestSpecification baseRequest() { - return given() - .baseUri(managementUrl) - .header("x-api-key", apiKey) - .contentType(JSON); - } - - -} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java index d427e5c78..437ace8b9 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java @@ -73,7 +73,7 @@ public void afterAll(ExtensionContext context) throws Exception { @Override protected void bootExtensions(ServiceExtensionContext context, List> serviceExtensions) { PostgresqlLocalInstance helper = new PostgresqlLocalInstance(postgreSqlContainer.getUsername(), postgreSqlContainer.getPassword(), baseJdbcUrl(), postgreSqlContainer.getDatabaseName()); - helper.createDatabase(dbName); + helper.createDatabase(); super.bootExtensions(context, serviceExtensions); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java index a22e7f75f..2870b6d52 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java @@ -14,163 +14,13 @@ package org.eclipse.tractusx.edc.lifecycle; -import java.util.HashMap; -import java.util.Map; - -import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; - public class TestRuntimeConfiguration { - - + public static final String BPN_SUFFIX = "-BPN"; public static final String SOKRATES_NAME = "SOKRATES"; public static final String SOKRATES_BPN = SOKRATES_NAME + BPN_SUFFIX; public static final String PLATO_NAME = "PLATO"; public static final String PLATO_BPN = PLATO_NAME + BPN_SUFFIX; - public static final Integer PLATO_PROXIED_AAS_BACKEND_PORT = getFreePort(); - - public static final String PROXIED_PATH = "/events"; - - public static final int MIW_PLATO_PORT = getFreePort(); - - public static final int MIW_SOKRATES_PORT = getFreePort(); - - public static final int OAUTH_PORT = getFreePort(); - - static final String DSP_PATH = "/api/v1/dsp"; - static final int PLATO_CONNECTOR_PORT = getFreePort(); - static final int PLATO_MANAGEMENT_PORT = getFreePort(); - static final String PLATO_CONNECTOR_PATH = "/api"; - static final String PLATO_MANAGEMENT_PATH = "/api/v1/management"; - static final int PLATO_DSP_API_PORT = getFreePort(); - public static final String PLATO_DSP_CALLBACK = "http://localhost:" + PLATO_DSP_API_PORT + DSP_PATH; - static final int SOKRATES_CONNECTOR_PORT = getFreePort(); - static final int SOKRATES_MANAGEMENT_PORT = getFreePort(); - static final int SOKRATES_GATEWAY_PORT = getFreePort(); - static final String SOKRATES_CONNECTOR_PATH = "/api"; - static final String SOKRATES_MANAGEMENT_PATH = "/api/v1/management"; - static final String SOKRATES_GATEWAY_PATH = "/api/v1/gateway"; - static final int SOKRATES_DSP_API_PORT = getFreePort(); - public static final String SOKRATES_DSP_CALLBACK = "http://localhost:" + SOKRATES_DSP_API_PORT + DSP_PATH; - static final String SOKRATES_PUBLIC_API_PORT = String.valueOf(getFreePort()); - static final String PLATO_PUBLIC_API_PORT = String.valueOf(getFreePort()); - static final String PLATO_DATAPLANE_CONTROL_PORT = String.valueOf(getFreePort()); - static final String PLATO_DATAPLANE_PROXY_PORT = String.valueOf(getFreePort()); - static final String SOKRATES_DATAPLANE_CONTROL_PORT = String.valueOf(getFreePort()); - static final String SOKRATES_DATAPLANE_PROXY_PORT = String.valueOf(getFreePort()); static final String DB_SCHEMA_NAME = "testschema"; - static final String MIW_SOKRATES_URL = "http://localhost:" + MIW_SOKRATES_PORT; - - static final String MIW_PLATO_URL = "http://localhost:" + MIW_PLATO_PORT; - - static final String OAUTH_TOKEN_URL = "http://localhost:" + OAUTH_PORT; - - public static Map sokratesSsiConfiguration() { - var ssiConfiguration = new HashMap() { - { - put("tx.ssi.miw.url", MIW_SOKRATES_URL); - put("tx.ssi.oauth.token.url", OAUTH_TOKEN_URL); - put("tx.ssi.oauth.client.id", "client_id"); - put("tx.ssi.oauth.client.secret.alias", "client_secret_alias"); - put("tx.ssi.miw.authority.id", "authorityId"); - put("tx.ssi.miw.authority.issuer", "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000"); - put("tx.vault.seed.secrets", "client_secret_alias:client_secret"); - put("tx.ssi.endpoint.audience", SOKRATES_DSP_CALLBACK); - } - }; - var baseConfiguration = sokratesConfiguration(); - ssiConfiguration.putAll(baseConfiguration); - return ssiConfiguration; - } - - public static Map sokratesConfiguration() { - return new HashMap<>() { - { - put("edc.connector.name", "sokrates"); - put("edc.participant.id", SOKRATES_BPN); - put("web.http.port", String.valueOf(SOKRATES_CONNECTOR_PORT)); - put("web.http.path", SOKRATES_CONNECTOR_PATH); - put("web.http.management.port", String.valueOf(SOKRATES_MANAGEMENT_PORT)); - put("web.http.management.path", SOKRATES_MANAGEMENT_PATH); - put("web.http.protocol.port", String.valueOf(SOKRATES_DSP_API_PORT)); - put("web.http.protocol.path", DSP_PATH); - put("edc.dsp.callback.address", SOKRATES_DSP_CALLBACK); - put("edc.api.auth.key", "testkey"); - put("web.http.public.path", "/api/public"); - put("web.http.public.port", SOKRATES_PUBLIC_API_PORT); - put("web.http.gateway.path", SOKRATES_GATEWAY_PATH); - put("web.http.gateway.port", String.valueOf(SOKRATES_GATEWAY_PORT)); - - put("edc.transfer.send.retry.limit", "1"); - put("edc.transfer.send.retry.base-delay.ms", "100"); - // embedded dataplane config - put("web.http.control.path", "/api/dataplane/control"); - put("web.http.control.port", SOKRATES_DATAPLANE_CONTROL_PORT); - put("tx.dpf.consumer.proxy.port", SOKRATES_DATAPLANE_PROXY_PORT); - put("edc.dataplane.token.validation.endpoint", "http://localhost:" + SOKRATES_DATAPLANE_CONTROL_PORT + "/api/dataplane/control/token"); - put("edc.dataplane.selector.httpplane.url", "http://localhost:" + SOKRATES_DATAPLANE_CONTROL_PORT + "/api/dataplane/control"); - put("edc.dataplane.selector.httpplane.sourcetypes", "HttpData"); - put("edc.dataplane.selector.httpplane.destinationtypes", "HttpProxy"); - put("edc.dataplane.selector.httpplane.properties", "{\"publicApiUrl\":\"http://localhost:" + SOKRATES_PUBLIC_API_PORT + "/api/public\"}"); - put("edc.receiver.http.dynamic.endpoint", "http://localhost:" + SOKRATES_CONNECTOR_PORT + "/api/consumer/datareference"); - put("tractusx.businesspartnervalidation.log.agreement.validation", "true"); - put("edc.agent.identity.key", "BusinessPartnerNumber"); - put("edc.data.encryption.keys.alias", "test-alias"); - } - }; - } - - public static Map platoConfiguration() { - return new HashMap<>() { - { - put("edc.connector.name", "plato"); - put("edc.participant.id", PLATO_BPN); - put("web.http.port", String.valueOf(PLATO_CONNECTOR_PORT)); - put("web.http.path", PLATO_CONNECTOR_PATH); - put("web.http.management.port", String.valueOf(PLATO_MANAGEMENT_PORT)); - put("web.http.management.path", PLATO_MANAGEMENT_PATH); - put("web.http.protocol.port", String.valueOf(PLATO_DSP_API_PORT)); - put("web.http.protocol.path", DSP_PATH); - put("edc.dsp.callback.address", PLATO_DSP_CALLBACK); - put("edc.api.auth.key", "testkey"); - put("web.http.public.port", PLATO_PUBLIC_API_PORT); - put("web.http.public.path", "/api/public"); - put("edc.transfer.send.retry.limit", "1"); - put("edc.transfer.send.retry.base-delay.ms", "100"); - // embedded dataplane config - put("web.http.control.path", "/api/dataplane/control"); - put("web.http.control.port", PLATO_DATAPLANE_CONTROL_PORT); - put("tx.dpf.consumer.proxy.port", PLATO_DATAPLANE_PROXY_PORT); - put("edc.dataplane.token.validation.endpoint", "http://localhost:" + PLATO_DATAPLANE_CONTROL_PORT + "/api/dataplane/control/token"); - put("edc.dataplane.selector.httpplane.url", "http://localhost:" + PLATO_DATAPLANE_CONTROL_PORT + "/api/dataplane/control"); - put("edc.dataplane.selector.httpplane.sourcetypes", "HttpData"); - put("edc.dataplane.selector.httpplane.destinationtypes", "HttpProxy"); - put("edc.dataplane.selector.httpplane.properties", "{\"publicApiUrl\":\"http://localhost:" + PLATO_PUBLIC_API_PORT + "/api/public\"}"); - put("tractusx.businesspartnervalidation.log.agreement.validation", "true"); - put("edc.agent.identity.key", "BusinessPartnerNumber"); - put("tx.dpf.proxy.gateway.aas.proxied.path", "http://localhost:" + PLATO_PROXIED_AAS_BACKEND_PORT + PROXIED_PATH); - put("tx.dpf.proxy.gateway.aas.authorization.type", "none"); - put("edc.data.encryption.keys.alias", "test-alias"); - } - }; - } - - public static Map platoSsiConfiguration() { - var ssiConfiguration = new HashMap() { - { - put("tx.ssi.miw.url", MIW_PLATO_URL); - put("tx.ssi.oauth.token.url", OAUTH_TOKEN_URL); - put("tx.ssi.oauth.client.id", "client_id"); - put("tx.ssi.oauth.client.secret.alias", "client_secret_alias"); - put("tx.ssi.miw.authority.id", "authorityId"); - put("tx.ssi.miw.authority.issuer", "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000"); - put("tx.vault.seed.secrets", "client_secret_alias:client_secret"); - put("tx.ssi.endpoint.audience", PLATO_DSP_CALLBACK); - } - }; - var baseConfiguration = platoConfiguration(); - ssiConfiguration.putAll(baseConfiguration); - return ssiConfiguration; - } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java new file mode 100644 index 000000000..f90984003 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.lifecycle.tx; + +import io.restassured.response.Response; +import org.eclipse.edc.spi.types.domain.edr.EndpointDataReference; + +import java.util.Map; + +import static io.restassured.RestAssured.given; +import static java.lang.String.format; +import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant.API_KEY; +import static org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant.PROXY_SUBPATH; + + +/** + * E2E test helper for fetching the data + */ +public class ParticipantDataApi { + + private final TxParticipant participant; + + public ParticipantDataApi(TxParticipant participant) { + this.participant = participant; + } + + /** + * Pull the data using the Consumer DataPlane and the provider's gateway with an asset id + * + * @return the data + */ + public String pullProxyDataByAssetId(TxParticipant provider, String assetId) { + var body = Map.of("assetId", assetId, "endpointUrl", format("%s/gateway/aas/test", provider.gatewayEndpoint())); + return getProxyData(body); + } + + /** + * Pull the data using the Consumer DataPlane and the provider's gateway with an transfer process id + * + * @return the data + */ + public String pullProxyDataByTransferProcessId(TxParticipant provider, String transferProcessId) { + var body = Map.of("transferProcessId", transferProcessId, + "endpointUrl", format("%s/gateway/aas/test", provider.gatewayEndpoint())); + return getProxyData(body); + + } + + /** + * Pull the data using the Consumer DataPlane and the provider's gateway with an asset id + * + * @return the data + */ + public Response pullProxyDataResponseByAssetId(TxParticipant provider, String assetId) { + var body = Map.of("assetId", assetId, + "endpointUrl", format("%s/gateway/aas/test", provider.gatewayEndpoint()), + "providerId", provider.getBpn()); + return proxyRequest(body); + } + + /** + * Pull the data using the Consumer DataPlane with an asset id + * + * @return the data + */ + public String pullProviderDataPlaneDataByAssetId(TxParticipant provider, String assetId) { + var body = Map.of("assetId", assetId); + return getProxyData(body); + } + + /** + * Pull the data using the Consumer DataPlane with an asset id and additional parameters + * + * @return the data + */ + public String pullProviderDataPlaneDataByAssetIdAndCustomProperties(TxParticipant provider, String assetId, String path, String params) { + var body = Map.of("assetId", assetId, "pathSegments", path, "queryParams", params); + return getProxyData(body); + } + + /** + * Pull the data using the Consumer DataPlane + * + * @return the data + */ + public String pullProviderDataPlaneDataByTransferProcessId(TxParticipant provider, String transferProcessId) { + var body = Map.of("transferProcessId", transferProcessId); + return getProxyData(body); + + } + + /** + * Pull the data with an {@link EndpointDataReference} + * + * @param edr The edr + * @param queryParams additional params + * @return the data + */ + public String pullData(EndpointDataReference edr, Map queryParams) { + var response = given() + .baseUri(edr.getEndpoint()) + .header(edr.getAuthKey(), edr.getAuthCode()) + .queryParams(queryParams) + .when() + .get(); + assertThat(response.statusCode()).isBetween(200, 300); + return response.body().asString(); + } + + private String getProxyData(Map body) { + return proxyRequest(body) + .then() + .assertThat().statusCode(200) + .extract().body().asString(); + } + + private Response proxyRequest(Map body) { + return given() + .baseUri(participant.dataPlaneProxy().toString()) + .header("x-api-key", API_KEY) + .contentType("application/json") + .body(body) + .post(PROXY_SUBPATH); + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java new file mode 100644 index 000000000..9ba913891 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java @@ -0,0 +1,181 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.lifecycle.tx; + +import io.restassured.response.ValidatableResponse; +import io.restassured.specification.RequestSpecification; +import jakarta.json.JsonArray; +import jakarta.json.JsonObject; +import org.eclipse.edc.spi.types.domain.edr.EndpointDataReference; +import org.eclipse.edc.test.system.utils.Participant; + +import java.net.URI; +import java.util.concurrent.atomic.AtomicReference; + +import static io.restassured.RestAssured.given; +import static io.restassured.http.ContentType.JSON; +import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; +import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetContractId; +import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetFirstPolicy; +import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createEdrNegotiationRequest; + +/** + * E2E test helper for the EDR APIs + */ +public class ParticipantEdrApi { + + private final TxParticipant participant; + private final URI edrBackend; + + public ParticipantEdrApi(TxParticipant participant, Participant.Endpoint managementEndpoint, URI edrBackend) { + this.participant = participant; + this.edrBackend = edrBackend; + } + + /** + * Get the cached EDR for a transfer process + * + * @param transferProcessId The transfer process id + * @return The EDR + */ + public JsonObject getEdr(String transferProcessId) { + return getEdrRequest(transferProcessId) + .statusCode(200) + .extract() + .body() + .as(JsonObject.class); + } + + /** + * Get the cached EDR for a transfer process cached in a backend + * + * @param transferProcessId The transfer process id + * @return The EDR + */ + public EndpointDataReference getDataReferenceFromBackend(String transferProcessId) { + var dataReference = new AtomicReference(); + + var result = given() + .when() + .get(edrBackend + "/{id}", transferProcessId) + .then() + .statusCode(200) + .extract() + .body() + .as(EndpointDataReference.class); + dataReference.set(result); + + return dataReference.get(); + } + + /** + * Get the cached EDR for a transfer process as {@link ValidatableResponse} + * + * @param transferProcessId The transfer process id + * @return The {@link ValidatableResponse} + */ + public ValidatableResponse getEdrRequest(String transferProcessId) { + return baseEdrRequest() + .when() + .get("/edrs/{id}", transferProcessId) + .then(); + } + + /** + * Start an EDR negotiation using the EDRs API. + * + * @param other The provider + * @param assetId The asset ID + * @param callbacks The callbacks + * @return The contract negotiation id + */ + public String negotiateEdr(TxParticipant other, String assetId, JsonArray callbacks) { + var dataset = participant.getDatasetForAsset(other, assetId); + assertThat(dataset).withFailMessage("Catalog received from " + other.getName() + " was empty!").isNotEmpty(); + + var policy = getDatasetFirstPolicy(dataset); + var contractId = getDatasetContractId(dataset); + + var requestBody = createEdrNegotiationRequest(other.getProtocolEndpoint().getUrl().toString(), other.getBpn(), contractId.toString(), contractId.assetIdPart(), policy, callbacks); + + + var response = baseEdrRequest() + .when() + .body(requestBody) + .post("/edrs") + .then(); + + var body = response.extract().body().asString(); + assertThat(response.extract().statusCode()).withFailMessage(body).isBetween(200, 299); + + return response.extract().jsonPath().getString(ID); + } + + /** + * Get the cached EDRs for a contract negotiation + * + * @param contractNegotiationId The contract negotiation id + * @return The EDRs + */ + public JsonArray getEdrEntriesByContractNegotiationId(String contractNegotiationId) { + return baseEdrRequest() + .when() + .get("/edrs?contractNegotiationId={contractNegotiationId}", contractNegotiationId) + .then() + .statusCode(200) + .extract() + .body() + .as(JsonArray.class); + } + + /** + * Get the cached EDRs for a contract agreement + * + * @param agreementId The contract agreement id + * @return The EDRs + */ + public JsonArray getEdrEntriesByAgreementId(String agreementId) { + return baseEdrRequest() + .when() + .get("/edrs?agreementId={agreementId}", agreementId) + .then() + .statusCode(200) + .extract() + .body() + .as(JsonArray.class); + } + + /** + * Get the cached EDRs for an asset + * + * @param assetId The asset id + * @return The EDRs + */ + public JsonArray getEdrEntriesByAssetId(String assetId) { + return baseEdrRequest() + .when() + .get("/edrs?assetId={assetId}", assetId) + .then() + .statusCode(200) + .extract() + .body() + .as(JsonArray.class); + } + + private RequestSpecification baseEdrRequest() { + return participant.getManagementEndpoint().baseRequest().contentType(JSON); + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java new file mode 100644 index 000000000..5ad1b3015 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java @@ -0,0 +1,277 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.lifecycle.tx; + +import com.fasterxml.jackson.annotation.JsonCreator; +import io.restassured.specification.RequestSpecification; +import jakarta.json.Json; +import jakarta.json.JsonObject; +import org.eclipse.edc.test.system.utils.Participant; + +import java.net.URI; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static io.restassured.http.ContentType.JSON; +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID; +import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; +import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; + +/** + * Implementation for TX of a {@link Participant} + */ +public class TxParticipant extends Participant { + + public static final String API_KEY = "testkey"; + public static final String PROXY_SUBPATH = "proxy/aas/request"; + private final URI controlPlaneDefault = URI.create("http://localhost:" + getFreePort()); + private final URI controlPlaneControl = URI.create("http://localhost:" + getFreePort() + "/control"); + private final URI gateway = URI.create("http://localhost:" + getFreePort() + "/api/gateway"); + private final URI backendProviderProxy = URI.create("http://localhost:" + getFreePort() + "/events"); + private final URI dataPlaneProxy = URI.create("http://localhost:" + getFreePort()); + private final URI dataPlanePublic = URI.create("http://localhost:" + getFreePort() + "/public"); + private final URI miwUri = URI.create("http://localhost:" + getFreePort()); + private final URI oauthTokenUri = URI.create("http://localhost:" + getFreePort()); + private final URI backend = URI.create("http://localhost:" + controlPlaneDefault.getPort() + "/api/consumer/datareference"); + private ParticipantEdrApi edrs; + private ParticipantDataApi data; + + /** + * Creates an asset with the given ID and props using the participant's Data Management API + */ + public void createAsset(String id) { + createAsset(id, new HashMap<>(), Map.of("type", "test-type")); + } + + /** + * Stores BPN groups + */ + public void storeBusinessPartner(String bpn, String... groups) { + var body = Json.createObjectBuilder() + .add(ID, bpn) + .add(TX_NAMESPACE + "groups", Json.createArrayBuilder(Arrays.asList(groups))) + .build(); + managementEndpoint.baseRequest() + .contentType(JSON) + .body(body) + .when() + .post("/business-partner-groups") + .then() + .statusCode(204); + } + + /** + * The BPN/ID of the participant + * + * @return The bpn + */ + + public String getBpn() { + return id; + } + + + /** + * Returns the client API for interacting with EDRs + */ + public ParticipantEdrApi edrs() { + return edrs; + } + + /** + * Returns the client API for fetching data + */ + public ParticipantDataApi data() { + return data; + } + + /** + * Creates a policy definition + */ + public String createPolicy(JsonObject policyDefinition) { + return managementRequest() + .contentType(JSON) + .body(policyDefinition) + .when() + .post("/v2/policydefinitions") + .then() + .log().ifError() + .statusCode(200) + .contentType(JSON) + .extract() + .path("@id"); + } + + /** + * Get current error if any of a contract negotiation. + * + * @param negotiationId contract negotiation id + * @return error of the contract negotiation. + */ + public String getContractNegotiationError(String negotiationId) { + return getContractNegotiationField(negotiationId, "errorDetail"); + } + + /** + * Returns the base configuration + */ + public Map getConfiguration() { + return new HashMap<>() { + { + put("edc.connector.name", name); + put("edc.participant.id", id); + put("web.http.port", String.valueOf(controlPlaneDefault.getPort())); + put("web.http.path", "/api"); + put("web.http.protocol.port", String.valueOf(protocolEndpoint.getUrl().getPort())); + put("web.http.protocol.path", protocolEndpoint.getUrl().getPath()); + put("web.http.management.port", String.valueOf(managementEndpoint.getUrl().getPort())); + put("web.http.management.path", managementEndpoint.getUrl().getPath()); + put("web.http.control.port", String.valueOf(controlPlaneControl.getPort())); + put("web.http.control.path", controlPlaneControl.getPath()); + put("edc.dsp.callback.address", protocolEndpoint.getUrl().toString()); + put("edc.api.auth.key", "testkey"); + put("web.http.public.path", "/api/public"); + put("web.http.public.port", String.valueOf(dataPlanePublic.getPort())); + put("web.http.gateway.path", gateway.getPath()); + put("web.http.gateway.port", String.valueOf(gateway.getPort())); + + put("edc.transfer.send.retry.limit", "1"); + put("edc.transfer.send.retry.base-delay.ms", "100"); + put("tx.dpf.consumer.proxy.port", String.valueOf(dataPlaneProxy.getPort())); + put("edc.dataplane.token.validation.endpoint", controlPlaneControl + "/token"); + put("edc.dataplane.selector.httpplane.url", controlPlaneControl.toString()); + put("edc.dataplane.selector.httpplane.sourcetypes", "HttpData"); + put("edc.dataplane.selector.httpplane.destinationtypes", "HttpProxy"); + put("edc.dataplane.selector.httpplane.properties", "{\"publicApiUrl\":\"http://localhost:" + dataPlanePublic.getPort() + "/api/public\"}"); + put("edc.receiver.http.dynamic.endpoint", "http://localhost:" + controlPlaneDefault.getPort() + "/api/consumer/datareference"); + put("tractusx.businesspartnervalidation.log.agreement.validation", "true"); + put("edc.agent.identity.key", "BusinessPartnerNumber"); + put("edc.data.encryption.keys.alias", "test-alias"); + put("tx.dpf.proxy.gateway.aas.proxied.path", backendProviderProxy.toString()); + put("tx.dpf.proxy.gateway.aas.authorization.type", "none"); + } + }; + } + + /** + * Returns the SSI configuration + */ + public Map ssiConfiguration() { + var ssiConfiguration = new HashMap() { + { + put("tx.ssi.miw.url", miwUri.toString()); + put("tx.ssi.oauth.token.url", oauthTokenUri.toString()); + put("tx.ssi.oauth.client.id", "client_id"); + put("tx.ssi.oauth.client.secret.alias", "client_secret_alias"); + put("tx.ssi.miw.authority.id", "authorityId"); + put("tx.ssi.miw.authority.issuer", "did:web:example.com"); + put("tx.vault.seed.secrets", "client_secret_alias:client_secret"); + put("tx.ssi.endpoint.audience", protocolEndpoint.getUrl().toString()); + } + }; + var baseConfiguration = getConfiguration(); + ssiConfiguration.putAll(baseConfiguration); + return ssiConfiguration; + } + + /** + * Returns the renewal configuration + */ + public Map renewalConfiguration() { + return renewalConfiguration("10"); + } + + /** + * Returns the renewal configuration + */ + public Map renewalConfiguration(String retention) { + var renewalConfig = new HashMap() { + { + put("edc.edr.state-machine.expiring-duration", "10"); + put("edc.edr.state-machine.expired-retention", retention); + put("edc.transfer.proxy.token.validity.seconds", "15"); + } + }; + var baseConfiguration = getConfiguration(); + renewalConfig.putAll(baseConfiguration); + + return renewalConfig; + } + + /** + * Returns the MIW endpoint + */ + public URI miwEndpoint() { + return miwUri; + } + + /** + * Returns the OAuth2 token endpoint + */ + public URI authTokenEndpoint() { + return oauthTokenUri; + } + + /** + * Returns the Gateway endpoint + */ + public URI gatewayEndpoint() { + return gateway; + } + + /** + * Returns the Consumer data plane proxy endpoint + */ + public URI dataPlaneProxy() { + return dataPlaneProxy; + } + + /** + * Returns the provider gateway backend endpoint + */ + public URI backendProviderProxy() { + return backendProviderProxy; + } + + protected RequestSpecification managementRequest() { + return managementEndpoint.baseRequest(); + } + + public static final class Builder extends Participant.Builder { + + private Builder() { + super(new TxParticipant()); + } + + @JsonCreator + public static Builder newInstance() { + return new Builder(); + } + + @Override + public TxParticipant build() { + super.managementEndpoint(new Endpoint(URI.create("http://localhost:" + getFreePort() + "/api/management"), Map.of("x-api-key", API_KEY))); + super.protocolEndpoint(new Endpoint(URI.create("http://localhost:" + getFreePort() + "/protocol"))); + super.timeout(ASYNC_TIMEOUT); + super.build(); + + this.participant.edrs = new ParticipantEdrApi(participant, participant.managementEndpoint, participant.backend); + this.participant.data = new ParticipantDataApi(participant); + return participant; + } + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java index 1b8fe86bb..3231ebabe 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java @@ -16,7 +16,7 @@ import org.eclipse.edc.policy.model.Operator; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -24,36 +24,42 @@ import static java.util.stream.IntStream.range; import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.test.system.utils.PolicyFixtures.noConstraintPolicy; import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetAssetId; import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetPolicies; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.BUSINESS_PARTNER_LEGACY_EVALUATION_KEY; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerGroupPolicy; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerNumberPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bnpPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bpnGroupPolicy; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.noConstraintPolicyDefinition; import static org.eclipse.tractusx.edc.helpers.QueryHelperFunctions.createQuery; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; public abstract class AbstractCatalogTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); + @Test @DisplayName("Plato gets catalog from Sokrates. No constraints.") void requestCatalog_fulfillsPolicy_shouldReturnOffer() { // arrange SOKRATES.createAsset("test-asset"); - var accessPolicy = noConstraintPolicyDefinition("test-ap1"); - var contractPolicy = noConstraintPolicyDefinition("test-cp1"); - SOKRATES.createPolicy(accessPolicy); - SOKRATES.createPolicy(contractPolicy); - SOKRATES.createContractDefinition("test-asset", "test-def", "test-ap1", "test-cp1"); + var ap = SOKRATES.createPolicyDefinition(noConstraintPolicy()); + var cp = SOKRATES.createPolicyDefinition(noConstraintPolicy()); + SOKRATES.createContractDefinition("test-asset", "test-def", ap, cp); // act var catalog = PLATO.getCatalogDatasets(SOKRATES); @@ -70,16 +76,12 @@ void requestCatalog_fulfillsPolicy_shouldReturnOffer() { @Test @DisplayName("Verify that Plato receives only the offers he is permitted to (using the legacy BPN validation)") void requestCatalog_filteredByBpnLegacy_shouldReject() { - var onlyPlatoId = "ap"; - var onlyDiogenesId = "db"; - - var onlyPlatoPolicy = businessPartnerNumberPolicy(onlyPlatoId, "BPN1", "BPN2", PLATO.getBpn()); - var onlyDiogenesPolicy = businessPartnerNumberPolicy(onlyDiogenesId, "ARISTOTELES-BPN"); - var noConstraintPolicyId = "no-constraint"; + var onlyPlatoPolicy = bnpPolicy("BPN1", "BPN2", PLATO.getBpn()); + var onlyDiogenesPolicy = bnpPolicy("ARISTOTELES-BPN"); - SOKRATES.createPolicy(onlyPlatoPolicy); - SOKRATES.createPolicy(onlyDiogenesPolicy); - SOKRATES.createPolicy(noConstraintPolicyDefinition(noConstraintPolicyId)); + var onlyPlatoId = SOKRATES.createPolicyDefinition(onlyPlatoPolicy); + var onlyDiogenesId = SOKRATES.createPolicyDefinition(onlyDiogenesPolicy); + var noConstraintPolicyId = SOKRATES.createPolicyDefinition(noConstraintPolicy()); SOKRATES.createAsset("test-asset1"); SOKRATES.createAsset("test-asset2"); @@ -99,16 +101,13 @@ void requestCatalog_filteredByBpnLegacy_shouldReject() { @Test @DisplayName("Verify that Plato receives only the offers he is permitted to (using the legacy BPN validation)") void requestCatalog_filteredByBpnLegacy_WithNamespace_shouldReject() { - var onlyPlatoId = "ap"; - var onlyDiogenesId = "db"; - var onlyPlatoPolicy = businessPartnerNumberPolicy(onlyPlatoId, "BPN1", "BPN2", PLATO.getBpn()); - var onlyDiogenesPolicy = frameworkPolicy(onlyDiogenesId, Map.of(BUSINESS_PARTNER_LEGACY_EVALUATION_KEY, "ARISTOTELES-BPN")); - var noConstraintPolicyId = "no-constraint"; + var onlyPlatoPolicy = bnpPolicy("BPN1", "BPN2", PLATO.getBpn()); + var onlyDiogenesPolicy = frameworkPolicy(Map.of(BUSINESS_PARTNER_LEGACY_EVALUATION_KEY, "ARISTOTELES-BPN")); - SOKRATES.createPolicy(onlyPlatoPolicy); - SOKRATES.createPolicy(onlyDiogenesPolicy); - SOKRATES.createPolicy(noConstraintPolicyDefinition(noConstraintPolicyId)); + var onlyPlatoId = SOKRATES.createPolicyDefinition(onlyPlatoPolicy); + var onlyDiogenesId = SOKRATES.createPolicyDefinition(onlyDiogenesPolicy); + var noConstraintPolicyId = SOKRATES.createPolicyDefinition(noConstraintPolicy()); SOKRATES.createAsset("test-asset1"); SOKRATES.createAsset("test-asset2"); @@ -127,18 +126,15 @@ void requestCatalog_filteredByBpnLegacy_WithNamespace_shouldReject() { @Test @DisplayName("Verify that Plato receives only the offers he is permitted to (using the new BPN validation)") void requestCatalog_filteredByBpn_shouldReject() { - var philosopherId = "ap"; - var mathId = "db"; - var mustBeGreekPhilosopher = businessPartnerGroupPolicy(philosopherId, Operator.IS_ANY_OF, "greek_customer", "philosopher"); - var mustBeGreekMathematician = businessPartnerGroupPolicy(mathId, Operator.IS_ALL_OF, "greek_customer", "mathematician"); - var noConstraintPolicyId = "no-constraint"; + var mustBeGreekPhilosopher = bpnGroupPolicy(Operator.IS_ANY_OF, "greek_customer", "philosopher"); + var mustBeGreekMathematician = bpnGroupPolicy(Operator.IS_ALL_OF, "greek_customer", "mathematician"); SOKRATES.storeBusinessPartner(PLATO.getBpn(), "greek_customer", "philosopher"); - SOKRATES.createPolicy(mustBeGreekPhilosopher); - SOKRATES.createPolicy(mustBeGreekMathematician); - SOKRATES.createPolicy(noConstraintPolicyDefinition(noConstraintPolicyId)); + var philosopherId = SOKRATES.createPolicyDefinition(mustBeGreekPhilosopher); + var mathId = SOKRATES.createPolicyDefinition(mustBeGreekMathematician); + var noConstraintPolicyId = SOKRATES.createPolicyDefinition(noConstraintPolicy()); SOKRATES.createAsset("test-asset1"); SOKRATES.createAsset("test-asset2"); @@ -159,11 +155,11 @@ void requestCatalog_filteredByBpn_shouldReject() { void requestCatalog_multipleOffersForAsset() { SOKRATES.storeBusinessPartner(PLATO.getBpn(), "test-group"); SOKRATES.createAsset("asset-1"); - SOKRATES.createPolicy(noConstraintPolicyDefinition("policy-1")); - SOKRATES.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.IS_ANY_OF, "test-group")); + var noConstraintId = SOKRATES.createPolicyDefinition(noConstraintPolicy()); + var groupConstraintId = SOKRATES.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ANY_OF, "test-group")); - SOKRATES.createContractDefinition("asset-1", "def1", "policy-1", "policy-1"); - SOKRATES.createContractDefinition("asset-1", "def2", "policy-2", "policy-1"); + SOKRATES.createContractDefinition("asset-1", "def1", noConstraintId, noConstraintId); + SOKRATES.createContractDefinition("asset-1", "def2", groupConstraintId, noConstraintId); var catalog = PLATO.getCatalogDatasets(SOKRATES); assertThat(catalog).hasSize(1) @@ -176,17 +172,16 @@ void requestCatalog_multipleOffersForAsset() { @Test @DisplayName("Catalog with 1000 offers") void requestCatalog_of1000Assets_shouldContainAll() { - var policyId = "policy-1"; - var policy = businessPartnerGroupPolicy(policyId, Operator.IS_NONE_OF, "test-group1", "test-group2"); - SOKRATES.createPolicy(policy); - SOKRATES.createPolicy(noConstraintPolicyDefinition("noconstraint")); + var policy = bpnGroupPolicy(Operator.IS_NONE_OF, "test-group1", "test-group2"); + var policyId = SOKRATES.createPolicyDefinition(policy); + var noConstraintId = SOKRATES.createPolicyDefinition(noConstraintPolicy()); SOKRATES.storeBusinessPartner(PLATO.getBpn(), "test-group-3"); range(0, 1000) .forEach(i -> { var assetId = "asset-" + i; SOKRATES.createAsset(assetId); - SOKRATES.createContractDefinition(assetId, "def-" + i, policyId, "noconstraint"); + SOKRATES.createContractDefinition(assetId, "def-" + i, policyId, noConstraintId); }); // request all at once diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java index 7cbb8b2e4..651fd5472 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java @@ -18,29 +18,22 @@ import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @EndToEndTest public class CatalogInMemoryTest extends AbstractCatalogTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java index 4ded2fc29..3fd8297f5 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java @@ -18,28 +18,21 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class CatalogPostgresqlTest extends AbstractCatalogTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java index 5cf929984..b3a6aef9a 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java @@ -14,8 +14,8 @@ package org.eclipse.tractusx.edc.tests.catalog; -import org.eclipse.tractusx.edc.lifecycle.Participant; import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.eclipse.tractusx.edc.tag.MiwIntegrationTest; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -25,27 +25,29 @@ import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.test.system.utils.PolicyFixtures.noConstraintPolicy; import static org.eclipse.tractusx.edc.helpers.CatalogHelperFunctions.getDatasetAssetId; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkTemplatePolicy; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.noConstraintPolicyDefinition; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_DSP_CALLBACK; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; @MiwIntegrationTest public class MiwSsiCatalogTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); static final String MIW_SOKRATES_URL = "http://localhost:8000"; static final String OAUTH_TOKEN_URL = "http://localhost:8080/realms/miw_test/protocol/openid-connect/token"; @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory-ssi", - SOKRATES_NAME, - SOKRATES_BPN, + SOKRATES.getName(), + SOKRATES.getBpn(), sokratesSsiMiwConfiguration() ); @@ -59,10 +61,10 @@ public static Map sokratesSsiMiwConfiguration() { put("tx.ssi.miw.authority.id", "BPNL000000000000"); put("tx.ssi.miw.authority.issuer", "did:web:localhost%3A8000:BPNL000000000000"); put("tx.vault.seed.secrets", "client_secret_alias:miw_private_client"); - put("tx.ssi.endpoint.audience", SOKRATES_DSP_CALLBACK); + put("tx.ssi.endpoint.audience", SOKRATES.getProtocolEndpoint().getUrl().toString()); } }; - var baseConfiguration = sokratesConfiguration(); + var baseConfiguration = SOKRATES.getConfiguration(); ssiConfiguration.putAll(baseConfiguration); return ssiConfiguration; } @@ -74,16 +76,15 @@ void requestCatalog_fulfillsPolicy_shouldReturnOffer() { SOKRATES.createAsset("test-asset"); SOKRATES.createAsset("test-asset-1"); - var bpnAccessPolicy = frameworkPolicy("test-ap1", Map.of("BPN", "active")); - var contractPolicy = noConstraintPolicyDefinition("test-cp1"); - var dismantlerAccessPolicy = frameworkPolicy("test-ap2", Map.of("Dismantler", "active")); + var bpnAccessPolicy = frameworkPolicy(Map.of(TX_NAMESPACE + "BPN", "active")); + var dismantlerAccessPolicy = frameworkPolicy(Map.of(TX_NAMESPACE + "Dismantler", "active")); - SOKRATES.createPolicy(bpnAccessPolicy); - SOKRATES.createPolicy(contractPolicy); - SOKRATES.createPolicy(dismantlerAccessPolicy); + var bpnAccessId = SOKRATES.createPolicyDefinition(bpnAccessPolicy); + var contractPolicyId = SOKRATES.createPolicyDefinition(noConstraintPolicy()); + var dismantlerAccessPolicyId = SOKRATES.createPolicyDefinition(dismantlerAccessPolicy); - SOKRATES.createContractDefinition("test-asset", "test-def", "test-ap1", "test-cp1"); - SOKRATES.createContractDefinition("test-asset-1", "test-def-2", "test-ap2", "test-cp1"); + SOKRATES.createContractDefinition("test-asset", "test-def", bpnAccessId, contractPolicyId); + SOKRATES.createContractDefinition("test-asset-1", "test-def-2", dismantlerAccessPolicyId, contractPolicyId); // act @@ -107,16 +108,15 @@ void requestCatalog_fulfillsPolicy_shouldReturnOffer_withContexts() { SOKRATES.createAsset("test-asset-1"); var bpnAccessPolicy = frameworkTemplatePolicy("test-ap1", "BPN"); - var contractPolicy = noConstraintPolicyDefinition("test-cp1"); + var contractPolicy = noConstraintPolicy(); var dismantlerAccessPolicy = frameworkTemplatePolicy("test-ap2", "Dismantler"); SOKRATES.createPolicy(bpnAccessPolicy); - SOKRATES.createPolicy(contractPolicy); + var contractPolicyId = SOKRATES.createPolicyDefinition(contractPolicy); SOKRATES.createPolicy(dismantlerAccessPolicy); - SOKRATES.createContractDefinition("test-asset", "test-def", "test-ap1", "test-cp1"); - SOKRATES.createContractDefinition("test-asset-1", "test-def-2", "test-ap2", "test-cp1"); - + SOKRATES.createContractDefinition("test-asset", "test-def", "test-ap1", contractPolicyId); + SOKRATES.createContractDefinition("test-asset-1", "test-def-2", "test-ap2", contractPolicyId); // act var catalog = SOKRATES.getCatalogDatasets(SOKRATES); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java index 9ca50cddd..cb1a6637c 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java @@ -18,7 +18,7 @@ import okhttp3.mockwebserver.MockWebServer; import org.assertj.core.api.Condition; import org.eclipse.edc.policy.model.Operator; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -26,25 +26,30 @@ import java.io.IOException; import java.util.ArrayList; +import java.util.Map; import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntryStates.EXPIRED; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerGroupPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bpnGroupPolicy; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractDeleteEdrTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); MockWebServer server; @BeforeEach @@ -60,29 +65,32 @@ void negotiateEdr_shouldRemoveExpiredEdrs() throws IOException { var authCodeHeaderName = "test-authkey"; var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", "http://test:8080") - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + + Map dataAddress = Map.of( + "name", "transfer-test", + "baseUrl", "http://test:8080", + "type", "HttpData", + "contentType", "application/json", + "authKey", authCodeHeaderName, + "authCode", authCode + ); + PLATO.createAsset(assetId, Map.of(), dataAddress); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.NEQ, "forbidden-policy")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.EQ, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.NEQ, "forbidden-policy")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.EQ, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); var callbacks = Json.createArrayBuilder() .build(); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); var expired = new ArrayList(); await().atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); var localExpired = edrCaches.stream() .filter(json -> json.asJsonObject().getJsonString("tx:edrState").getString().equals(EXPIRED.name())) .map(json -> json.asJsonObject().getJsonString("transferProcessId").getString()) @@ -92,7 +100,7 @@ void negotiateEdr_shouldRemoveExpiredEdrs() throws IOException { }); await().atMost(ASYNC_TIMEOUT) - .untilAsserted(() -> expired.forEach((id) -> SOKRATES.getEdrRequest(id).statusCode(404))); + .untilAsserted(() -> expired.forEach((id) -> SOKRATES.edrs().getEdrRequest(id).statusCode(404))); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java index e696d8065..d4caf4239 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java @@ -27,7 +27,7 @@ import org.eclipse.edc.connector.transfer.spi.event.TransferProcessRequested; import org.eclipse.edc.connector.transfer.spi.event.TransferProcessStarted; import org.eclipse.edc.policy.model.Operator; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -35,30 +35,35 @@ import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.spi.types.domain.edr.EndpointDataReference.EDR_SIMPLE_TYPE; import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createCallback; import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createEvent; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerGroupPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bpnGroupPolicy; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.waitForEvent; public abstract class AbstractNegotiateEdrTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); MockWebServer server; @@ -88,18 +93,21 @@ void negotiateEdr_shouldInvokeCallbacks() throws IOException { var authCodeHeaderName = "test-authkey"; var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", url.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + Map dataAddress = Map.of( + "name", "transfer-test", + "baseUrl", url.toString(), + "type", "HttpData", + "contentType", "application/json", + "authKey", authCodeHeaderName, + "authCode", authCode + ); + + PLATO.createAsset(assetId, Map.of(), dataAddress); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.IS_NONE_OF, "forbidden-policy")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.IS_ALL_OF, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_NONE_OF, "forbidden-policy")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ALL_OF, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); expectedEvents.forEach(event -> server.enqueue(new MockResponse())); @@ -108,27 +116,27 @@ void negotiateEdr_shouldInvokeCallbacks() throws IOException { .add(createCallback(url.toString(), true, Set.of("contract.negotiation", "transfer.process"))) .build(); - var contractNegotiationId = SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + var contractNegotiationId = SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); var events = expectedEvents.stream() - .map(receivedEvent -> waitForEvent(server, receivedEvent)) + .map(receivedEvent -> waitForEvent(server)) .collect(Collectors.toList()); await().pollInterval(ASYNC_POLL_INTERVAL) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(edrCaches).hasSize(1); }); assertThat(expectedEvents).usingRecursiveFieldByFieldElementComparator().containsAll(events); - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(edrCaches).hasSize(1); - assertThat(SOKRATES.getEdrEntriesByContractNegotiationId(contractNegotiationId)).hasSize(1); + assertThat(SOKRATES.edrs().getEdrEntriesByContractNegotiationId(contractNegotiationId)).hasSize(1); assertThat(edrCaches).hasSize(1); @@ -137,10 +145,10 @@ void negotiateEdr_shouldInvokeCallbacks() throws IOException { var agreementId = edrCaches.get(0).asJsonObject().getString("agreementId"); assertThat(cnId).isEqualTo(contractNegotiationId); - assertThat(SOKRATES.getEdrEntriesByAgreementId(agreementId)).hasSize(1); + assertThat(SOKRATES.edrs().getEdrEntriesByAgreementId(agreementId)).hasSize(1); - var edr = SOKRATES.getEdr(transferProcessId); + var edr = SOKRATES.edrs().getEdr(transferProcessId); assertThat(edr.getJsonString("type").getString()).isEqualTo(EDR_SIMPLE_TYPE); assertThat(edr.getJsonString("authCode").getString()).isNotNull(); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java index aad06babb..304f27535 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java @@ -21,7 +21,7 @@ import org.eclipse.edc.connector.transfer.spi.event.TransferProcessStarted; import org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates; import org.eclipse.edc.policy.model.Operator; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -29,6 +29,7 @@ import java.io.IOException; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; @@ -37,27 +38,31 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.awaitility.pollinterval.FibonacciPollInterval.fibonacci; -import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntryStates.EXPIRED; import static org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntryStates.NEGOTIATED; import static org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntryStates.REFRESHING; import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createCallback; import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createEvent; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerGroupPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bpnGroupPolicy; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.waitForEvent; public abstract class AbstractRenewalEdrTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); MockWebServer server; @@ -80,18 +85,22 @@ void negotiateEdr_shouldRenewTheEdr() throws IOException { var authCodeHeaderName = "test-authkey"; var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", url.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + + Map dataAddress = Map.of( + "name", "transfer-test", + "baseUrl", url.toString(), + "type", "HttpData", + "contentType", "application/json", + "authKey", authCodeHeaderName, + "authCode", authCode + ); + + PLATO.createAsset(assetId, Map.of(), dataAddress); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.IS_NONE_OF, "forbidden-policy")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.IS_ANY_OF, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_NONE_OF, "forbidden-policy")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ANY_OF, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); var callbacks = Json.createArrayBuilder() .add(createCallback(url.toString(), true, Set.of("transfer.process.started"))) @@ -99,10 +108,10 @@ void negotiateEdr_shouldRenewTheEdr() throws IOException { expectedEvents.forEach(event -> server.enqueue(new MockResponse())); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); var events = expectedEvents.stream() - .map(receivedEvent -> waitForEvent(server, receivedEvent)) + .map(receivedEvent -> waitForEvent(server)) .collect(Collectors.toList()); assertThat(expectedEvents).usingRecursiveFieldByFieldElementComparator().containsAll(events); @@ -112,7 +121,7 @@ void negotiateEdr_shouldRenewTheEdr() throws IOException { await().atMost(ASYNC_TIMEOUT) .pollInterval(ASYNC_POLL_INTERVAL) .untilAsserted(() -> { - var localEdrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var localEdrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(localEdrCaches).hasSizeGreaterThan(1); localEdrCaches.forEach(edrCachesBuilder::add); }); @@ -143,7 +152,7 @@ void negotiateEdr_shouldRenewTheEdr() throws IOException { await().pollInterval(fibonacci()) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var tpState = PLATO.getAllTransferProcess() + var tpState = PLATO.getTransferProcesses() .stream() .filter(json -> json.asJsonObject().getJsonString("correlationId").getString().equals(transferProcessId)) .map(json -> json.asJsonObject().getJsonString("state").getString()) diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java index b530e4da0..52b287759 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java @@ -24,31 +24,23 @@ import java.security.SecureRandom; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; -import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.renewalConfiguration; - @EndToEndTest public class DeleteEdrInMemoryTest extends AbstractDeleteEdrTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - renewalConfiguration(sokratesConfiguration(), "5") + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.renewalConfiguration("5") ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - renewalConfiguration(platoConfiguration()) + PLATO.getName(), + PLATO.getBpn(), + PLATO.renewalConfiguration() ); @BeforeAll diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java index c1b3f96b9..6ea18dc3e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java @@ -18,30 +18,22 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; -import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.renewalConfiguration; - @PostgresqlDbIntegrationTest public class DeleteEdrPostgresqlTest extends AbstractDeleteEdrTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - renewalConfiguration(sokratesConfiguration(), "5") + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.renewalConfiguration("5") ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - renewalConfiguration(platoConfiguration()) + PLATO.getName(), + PLATO.getBpn(), + PLATO.renewalConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java index 1248a0eec..9dc4b6723 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java @@ -24,30 +24,23 @@ import java.security.SecureRandom; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @EndToEndTest public class NegotiateEdrInMemoryTest extends AbstractNegotiateEdrTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); @BeforeAll diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java index 89390da8b..7d9198230 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java @@ -19,32 +19,25 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class NegotiateEdrPostgresqlHashicorpVaultTest extends AbstractNegotiateEdrTest { @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); private static final String VAULT_DIRECTORY = "testDir/"; @RegisterExtension protected static final PgHashicorpParticipantRuntime SOKRATES_RUNTIME = new PgHashicorpParticipantRuntime( ":edc-tests:runtime:runtime-postgresql-hashicorp", - SOKRATES_NAME, - SOKRATES_BPN, + SOKRATES.getName(), + SOKRATES.getBpn(), VAULT_DIRECTORY, - sokratesConfiguration() + SOKRATES.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java index 37f1e72f7..363500b04 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java @@ -18,29 +18,22 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class NegotiateEdrPostgresqlTest extends AbstractNegotiateEdrTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java index 1bcc7df8f..460d26165 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java @@ -24,31 +24,23 @@ import java.security.SecureRandom; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; -import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.renewalConfiguration; - @EndToEndTest public class RenewalEdrInMemoryTest extends AbstractRenewalEdrTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - renewalConfiguration(sokratesConfiguration()) + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.renewalConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - renewalConfiguration(platoConfiguration()) + PLATO.getName(), + PLATO.getBpn(), + PLATO.renewalConfiguration() ); @BeforeAll diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java index 93cb8117e..a4f3d3c09 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java @@ -18,30 +18,22 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; -import static org.eclipse.tractusx.edc.tests.edr.TestFunctions.renewalConfiguration; - @PostgresqlDbIntegrationTest public class RenewalEdrPostgresqlTest extends AbstractRenewalEdrTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - renewalConfiguration(sokratesConfiguration()) + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.renewalConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - renewalConfiguration(platoConfiguration()) + PLATO.getName(), + PLATO.getBpn(), + PLATO.renewalConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java index e123c61f1..7e1938df6 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java @@ -18,8 +18,6 @@ import okhttp3.mockwebserver.MockWebServer; import org.eclipse.tractusx.edc.helpers.ReceivedEvent; -import java.util.HashMap; -import java.util.Map; import java.util.concurrent.TimeUnit; public class TestFunctions { @@ -27,25 +25,9 @@ public class TestFunctions { private static final ObjectMapper MAPPER = new ObjectMapper(); - public static Map renewalConfiguration(Map config) { - return renewalConfiguration(config, "10"); - } - - public static Map renewalConfiguration(Map config, String retention) { - var ssiConfiguration = new HashMap() { - { - put("edc.edr.state-machine.expiring-duration", "10"); - put("edc.edr.state-machine.expired-retention", retention); - put("edc.transfer.proxy.token.validity.seconds", "15"); - } - }; - ssiConfiguration.putAll(config); - return ssiConfiguration; - } - - public static ReceivedEvent waitForEvent(MockWebServer server, ReceivedEvent event) { + public static ReceivedEvent waitForEvent(MockWebServer server) { try { - var request = server.takeRequest(20, TimeUnit.SECONDS); + var request = server.takeRequest(60, TimeUnit.SECONDS); if (request != null) { return MAPPER.readValue(request.getBody().inputStream(), ReceivedEvent.class); } else { diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java index 25fbb497e..d574d3e15 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java @@ -14,33 +14,38 @@ package org.eclipse.tractusx.edc.tests.negotiation; -import jakarta.json.Json; import org.eclipse.edc.connector.contract.spi.types.negotiation.ContractNegotiationStates; import org.eclipse.edc.policy.model.Operator; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import java.util.Map; +import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerGroupPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bpnGroupPolicy; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractContractNegotiateTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); @Test @DisplayName("Verify contract negotiation fails with wrong policy") @@ -49,31 +54,34 @@ void contractNegotiation_shouldFail_whenPolicyEvaluationFails() { var authCodeHeaderName = "test-authkey"; var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", "http://testurl") - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + Map dataAddress = Map.of( + "name", "transfer-test", + "baseUrl", "http://testurl", + "type", "HttpData", + "contentType", "application/json", + "authKey", authCodeHeaderName, + "authCode", authCode + ); + + PLATO.createAsset(assetId, Map.of(), dataAddress); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "allowed-group"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.NEQ, "forbidden-group")); - PLATO.createPolicy(frameworkPolicy("policy-2", Map.of("Dismantler", "active"))); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicyId = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.NEQ, "forbidden-group")); + var contractPolicyId = PLATO.createPolicyDefinition(frameworkPolicy(Map.of(TX_NAMESPACE + "Dismantler", "active"))); + PLATO.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); - var negotiationId = SOKRATES.negotiateContract(PLATO, assetId); + var negotiationId = SOKRATES.initContractNegotiation(PLATO, assetId); // wait for the failed contract negotiation await().pollInterval(ASYNC_POLL_INTERVAL) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var negotiationState = SOKRATES.getNegotiationState(negotiationId); + var negotiationState = SOKRATES.getContractNegotiationState(negotiationId); assertThat(negotiationState).isEqualTo(ContractNegotiationStates.TERMINATED.toString()); var error = SOKRATES.getContractNegotiationError(negotiationId); assertThat(error).isNotNull(); - assertThat(error).contains("Contract offer is not valid: Policy policy-2 not fulfilled"); + assertThat(error).contains(format("Contract offer is not valid: Policy %s not fulfilled", contractPolicyId)); }); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java index c55affeee..f4986b4ef 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java @@ -25,17 +25,8 @@ import java.io.IOException; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.MIW_PLATO_PORT; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.MIW_SOKRATES_PORT; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.OAUTH_PORT; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_DSP_CALLBACK; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_DSP_CALLBACK; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoSsiConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesSsiConfiguration; @EndToEndTest public class SsiContractNegotiationInMemoryTest extends AbstractContractNegotiateTest { @@ -44,45 +35,53 @@ public class SsiContractNegotiationInMemoryTest extends AbstractContractNegotiat @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory-ssi", - PLATO_NAME, - PLATO_BPN, - platoSsiConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.ssiConfiguration() ); @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory-ssi", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesSsiConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.ssiConfiguration() ); private static MockWebServer miwSokratesServer; private static MockWebServer miwPlatoServer; - private static MockWebServer oauthServer; + private static MockWebServer sokratesOauthServer; + private static MockWebServer platoOauthServer; @BeforeAll static void setup() throws IOException { miwSokratesServer = new MockWebServer(); miwPlatoServer = new MockWebServer(); - oauthServer = new MockWebServer(); + sokratesOauthServer = new MockWebServer(); + platoOauthServer = new MockWebServer(); - var credentialSubjectId = "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000"; - miwSokratesServer.start(MIW_SOKRATES_PORT); - miwSokratesServer.setDispatcher(new MiwDispatcher(SOKRATES_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, PLATO_DSP_CALLBACK)); + var credentialSubjectId = "did:web:example.com"; - miwPlatoServer.start(MIW_PLATO_PORT); - miwPlatoServer.setDispatcher(new MiwDispatcher(PLATO_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, SOKRATES_DSP_CALLBACK)); + miwSokratesServer.start(SOKRATES.miwEndpoint().getPort()); + miwSokratesServer.setDispatcher(new MiwDispatcher(SOKRATES_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, PLATO.getProtocolEndpoint().getUrl().toString())); - oauthServer.start(OAUTH_PORT); - oauthServer.setDispatcher(new KeycloakDispatcher()); + miwPlatoServer.start(PLATO.miwEndpoint().getPort()); + miwPlatoServer.setDispatcher(new MiwDispatcher(PLATO_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, SOKRATES.getProtocolEndpoint().getUrl().toString())); + + sokratesOauthServer.start(SOKRATES.authTokenEndpoint().getPort()); + sokratesOauthServer.setDispatcher(new KeycloakDispatcher()); + + platoOauthServer.start(PLATO.authTokenEndpoint().getPort()); + platoOauthServer.setDispatcher(new KeycloakDispatcher()); } @AfterAll static void teardown() throws IOException { miwSokratesServer.shutdown(); miwPlatoServer.shutdown(); - oauthServer.shutdown(); + sokratesOauthServer.shutdown(); + platoOauthServer.shutdown(); + } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java index 0b9f61a23..25daa5fec 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java @@ -20,11 +20,12 @@ import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import okhttp3.mockwebserver.RecordedRequest; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.Test; import java.io.IOException; +import java.util.Map; import java.util.UUID; import static jakarta.json.Json.createObjectBuilder; @@ -35,39 +36,48 @@ import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.edc.test.system.utils.PolicyFixtures.inForceDatePolicy; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.policyDefinitionBuilder; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractPolicyMonitorTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); private final MockWebServer server = new MockWebServer(); @Test void shouldTerminateTransfer_whenPolicyExpires() throws IOException { var assetId = UUID.randomUUID().toString(); - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", "http://localhost:" + server.getPort()) - .build()); + + Map dataAddress = Map.of( + "name", "transfer-test", + "baseUrl", "http://localhost:" + server.getPort(), + "type", "HttpData", + "contentType", "application/json", + "proxyQueryParams", "true" + ); + PLATO.createAsset(assetId, Map.of(), dataAddress); startHttpServerProvider(); var policy = inForceDatePolicy("gteq", "contractAgreement+0s", "lteq", "contractAgreement+10s"); - var policyId = PLATO.createPolicy(policyDefinitionBuilder(policy).build()); + var policyId = PLATO.createPolicyDefinition(policy); PLATO.createContractDefinition(assetId, UUID.randomUUID().toString(), policyId, policyId); var consumerUrl = server.url("/mock/api/consumer"); var destination = httpDataAddress(consumerUrl.toString()); - var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, destination); + var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, Json.createObjectBuilder().build(), destination); await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { var state = SOKRATES.getTransferProcessState(transferProcessId); assertThat(state).isEqualTo(STARTED.name()); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java index bc1102c09..5829c3409 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java @@ -23,30 +23,23 @@ import java.security.SecureRandom; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @EndToEndTest public class PolicyMonitorInMemoryTest extends AbstractPolicyMonitorTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); @BeforeAll diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java index 227587175..cd0b4b08d 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java @@ -18,28 +18,21 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class PolicyMonitorPostgresqlTest extends AbstractPolicyMonitorTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java index 44cb86a2e..6453c7a81 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java @@ -24,7 +24,7 @@ import org.eclipse.edc.connector.transfer.spi.event.TransferProcessStarted; import org.eclipse.edc.policy.model.Operator; import org.eclipse.edc.spi.event.EventEnvelope; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -32,30 +32,33 @@ import org.junit.jupiter.api.Test; import java.io.IOException; +import java.util.Map; import java.util.Set; import java.util.UUID; import java.util.concurrent.TimeUnit; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; import static org.eclipse.tractusx.edc.helpers.EdrNegotiationHelperFunctions.createCallback; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerGroupPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bpnGroupPolicy; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_PROXIED_AAS_BACKEND_PORT; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PROXIED_PATH; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractDataPlaneProxyTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); private static final String CUSTOM_BASE_PATH = "/custom"; private static final String CUSTOM_SUB_PATH = "/sub"; private static final String CUSTOM_QUERY_PARAMS = "foo=bar"; @@ -63,28 +66,35 @@ public abstract class AbstractDataPlaneProxyTest { private final ObjectMapper mapper = new ObjectMapper(); private MockWebServer server; + @NotNull + private static Map dataAddress(String url) { + return Map.of( + "baseUrl", url, + "type", "HttpData", + "contentType", "application/json", + "authKey", "test-authkey", + "authCode", "test-authcode", + "proxyPath", "true", + "proxyQueryParams", "true" + ); + } @Test @DisplayName("Verify E2E flow with Data Plane proxies and EDR") void httpPullDataTransfer_withEdrAndProxy() { - var eventsUrl = server.url(PROXIED_PATH); + var eventsUrl = server.url(PLATO.backendProviderProxy().getPath()); var assetId = UUID.randomUUID().toString(); - var authCodeHeaderName = "test-authkey"; - var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", eventsUrl.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + + var dataAddress = dataAddress(eventsUrl.url().toString()); + + PLATO.createAsset(assetId, Map.of(), dataAddress); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.IS_ANY_OF, "test-group1")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.IS_ALL_OF, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ANY_OF, "test-group1")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ALL_OF, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); var callbacks = Json.createArrayBuilder() .add(createCallback(eventsUrl.toString(), true, Set.of("transfer.process.started"))) @@ -93,25 +103,25 @@ void httpPullDataTransfer_withEdrAndProxy() { // response to callback server.enqueue(new MockResponse()); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); var transferEvent = waitForTransferCompletion(); await().pollInterval(ASYNC_POLL_INTERVAL) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(edrCaches).hasSize(1); }); - + var body = "{\"response\": \"ok\"}"; server.enqueue(new MockResponse().setBody(body)); - var data = SOKRATES.pullProxyDataByAssetId(PLATO, assetId); + var data = SOKRATES.data().pullProxyDataByAssetId(PLATO, assetId); assertThat(data).isEqualTo(body); server.enqueue(new MockResponse().setBody(body)); - data = SOKRATES.pullProxyDataByTransferProcessId(PLATO, transferEvent.getPayload().getTransferProcessId()); + data = SOKRATES.data().pullProxyDataByTransferProcessId(PLATO, transferEvent.getPayload().getTransferProcessId()); assertThat(data).isEqualTo(body); } @@ -119,26 +129,19 @@ void httpPullDataTransfer_withEdrAndProxy() { @DisplayName("Verify E2E flow with Data Plane proxies fails when EDR is not found") void httpPullDataTransfer_withoutEdr() throws IOException { - var eventsUrl = server.url(PROXIED_PATH); - + var eventsUrl = server.url(PLATO.backendProviderProxy().getPath()); var assetId = UUID.randomUUID().toString(); - var authCodeHeaderName = "test-authkey"; - var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", eventsUrl.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + + PLATO.createAsset(assetId, Map.of(), dataAddress(eventsUrl.url().toString())); + PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.NEQ, "forbidden-policy")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.EQ, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.NEQ, "forbidden-policy")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.EQ, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); - SOKRATES.pullProxyDataResponseByAssetId(PLATO, assetId) + SOKRATES.data().pullProxyDataResponseByAssetId(PLATO, assetId) .then() .assertThat().statusCode(400); @@ -148,23 +151,16 @@ void httpPullDataTransfer_withoutEdr() throws IOException { @DisplayName("Verify E2E flow with Data Plane proxies and Two EDR") void httpPullDataTransfer_shouldFailForAsset_withTwoEdrAndProxy() throws IOException { - var eventsUrl = server.url(PROXIED_PATH); + var eventsUrl = server.url(PLATO.backendProviderProxy().getPath()); var assetId = UUID.randomUUID().toString(); - var authCodeHeaderName = "test-authkey"; - var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", eventsUrl.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + + PLATO.createAsset(assetId, Map.of(), dataAddress(eventsUrl.url().toString())); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.IS_NONE_OF, "forbidden-policy")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.IS_ALL_OF, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_NONE_OF, "forbidden-policy")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ALL_OF, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); var callbacks = Json.createArrayBuilder() .add(createCallback(eventsUrl.toString(), true, Set.of("transfer.process.started"))) @@ -174,8 +170,8 @@ void httpPullDataTransfer_shouldFailForAsset_withTwoEdrAndProxy() throws IOExcep server.enqueue(new MockResponse()); server.enqueue(new MockResponse()); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); var transferEvent1 = waitForTransferCompletion(); var transferEvent2 = waitForTransferCompletion(); @@ -183,7 +179,7 @@ void httpPullDataTransfer_shouldFailForAsset_withTwoEdrAndProxy() throws IOExcep await().pollInterval(ASYNC_POLL_INTERVAL) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(edrCaches).hasSize(2); }); @@ -191,15 +187,15 @@ void httpPullDataTransfer_shouldFailForAsset_withTwoEdrAndProxy() throws IOExcep var body = "{\"response\": \"ok\"}"; server.enqueue(new MockResponse().setBody(body)); - SOKRATES.pullProxyDataResponseByAssetId(PLATO, assetId).then() + SOKRATES.data().pullProxyDataResponseByAssetId(PLATO, assetId).then() .assertThat().statusCode(428); server.enqueue(new MockResponse().setBody(body)); - var data = SOKRATES.pullProxyDataByTransferProcessId(PLATO, transferEvent1.getPayload().getTransferProcessId()); + var data = SOKRATES.data().pullProxyDataByTransferProcessId(PLATO, transferEvent1.getPayload().getTransferProcessId()); assertThat(data).isEqualTo(body); server.enqueue(new MockResponse().setBody(body)); - data = SOKRATES.pullProxyDataByTransferProcessId(PLATO, transferEvent2.getPayload().getTransferProcessId()); + data = SOKRATES.data().pullProxyDataByTransferProcessId(PLATO, transferEvent2.getPayload().getTransferProcessId()); assertThat(data).isEqualTo(body); } @@ -207,23 +203,14 @@ void httpPullDataTransfer_shouldFailForAsset_withTwoEdrAndProxy() throws IOExcep @DisplayName("Verify E2E flow with Data Plane provider and EDR") void httpPullDataTransfer_withEdrAndProviderDataPlaneProxy() throws IOException { - var eventsUrl = server.url(PROXIED_PATH); - + var eventsUrl = server.url(PLATO.backendProviderProxy().getPath()); var assetId = UUID.randomUUID().toString(); - var authCodeHeaderName = "test-authkey"; - var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", eventsUrl.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build()); + PLATO.createAsset(assetId, Map.of(), dataAddress(eventsUrl.url().toString())); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.IS_ANY_OF, "test-group1")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.IS_ALL_OF, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ANY_OF, "test-group1")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.IS_ALL_OF, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); var callbacks = Json.createArrayBuilder() .add(createCallback(eventsUrl.toString(), true, Set.of("transfer.process.started"))) @@ -232,25 +219,25 @@ void httpPullDataTransfer_withEdrAndProviderDataPlaneProxy() throws IOException // response to callback server.enqueue(new MockResponse()); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); var transferEvent = waitForTransferCompletion(); await().pollInterval(ASYNC_POLL_INTERVAL) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(edrCaches).hasSize(1); }); var body = "{\"response\": \"ok\"}"; server.enqueue(new MockResponse().setBody(body)); - var data = SOKRATES.pullProviderDataPlaneDataByAssetId(PLATO, assetId); + var data = SOKRATES.data().pullProviderDataPlaneDataByAssetId(PLATO, assetId); assertThat(data).isEqualTo(body); server.enqueue(new MockResponse().setBody(body)); - data = SOKRATES.pullProviderDataPlaneDataByTransferProcessId(PLATO, transferEvent.getPayload().getTransferProcessId()); + data = SOKRATES.data().pullProviderDataPlaneDataByTransferProcessId(PLATO, transferEvent.getPayload().getTransferProcessId()); assertThat(data).isEqualTo(body); } @@ -258,7 +245,8 @@ void httpPullDataTransfer_withEdrAndProviderDataPlaneProxy() throws IOException @DisplayName("Verify E2E flow with Data Plane provider and EDR") void httpPullDataTransfer_withEdrAndProviderDataPlaneProxyAndCustomProperties() throws IOException { - var eventsUrl = server.url(PROXIED_PATH); + var eventsPath = PLATO.backendProviderProxy().getPath(); + var eventsUrl = server.url(eventsPath); var customUrl = server.url(CUSTOM_BASE_PATH); @@ -268,48 +256,41 @@ void httpPullDataTransfer_withEdrAndProviderDataPlaneProxyAndCustomProperties() @NotNull @Override public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) throws InterruptedException { - return switch (recordedRequest.getPath()) { - case PROXIED_PATH -> new MockResponse(); - case CUSTOM_FULL_PATH -> new MockResponse().setBody(body); - default -> new MockResponse().setResponseCode(404); - }; + var path = recordedRequest.getPath(); + if (PLATO.backendProviderProxy().getPath().equals(path)) { + return new MockResponse(); + } else if (CUSTOM_FULL_PATH.equals(path)) { + return new MockResponse().setBody(body); + } else { + return new MockResponse().setResponseCode(404); + } } }); var assetId = UUID.randomUUID().toString(); - var authCodeHeaderName = "test-authkey"; - var authCode = "test-authcode"; - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", customUrl.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .add(EDC_NAMESPACE + "proxyPath", "true") - .add(EDC_NAMESPACE + "proxyQueryParams", "true") - .build()); + PLATO.createAsset(assetId, Map.of(), dataAddress(customUrl.url().toString())); PLATO.storeBusinessPartner(SOKRATES.getBpn(), "test-group1", "test-group2"); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-1", Operator.NEQ, "forbidden-policy")); - PLATO.createPolicy(businessPartnerGroupPolicy("policy-2", Operator.EQ, "test-group1", "test-group2")); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); + var accessPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.NEQ, "forbidden-policy")); + var contractPolicy = PLATO.createPolicyDefinition(bpnGroupPolicy(Operator.EQ, "test-group1", "test-group2")); + PLATO.createContractDefinition(assetId, "def-1", accessPolicy, contractPolicy); var callbacks = Json.createArrayBuilder() .add(createCallback(eventsUrl.toString(), true, Set.of("transfer.process.started"))) .build(); - SOKRATES.negotiateEdr(PLATO, assetId, callbacks); + SOKRATES.edrs().negotiateEdr(PLATO, assetId, callbacks); waitForTransferCompletion(); await().pollInterval(ASYNC_POLL_INTERVAL) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var edrCaches = SOKRATES.getEdrEntriesByAssetId(assetId); + var edrCaches = SOKRATES.edrs().getEdrEntriesByAssetId(assetId); assertThat(edrCaches).hasSize(1); }); - var data = SOKRATES.pullProviderDataPlaneDataByAssetIdAndCustomProperties(PLATO, assetId, CUSTOM_SUB_PATH, CUSTOM_QUERY_PARAMS); + var data = SOKRATES.data().pullProviderDataPlaneDataByAssetIdAndCustomProperties(PLATO, assetId, CUSTOM_SUB_PATH, CUSTOM_QUERY_PARAMS); assertThat(data).isEqualTo(body); } @@ -317,7 +298,7 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) throws In @BeforeEach void setup() throws IOException { server = new MockWebServer(); - server.start(PLATO_PROXIED_AAS_BACKEND_PORT); + server.start(PLATO.backendProviderProxy().getPort()); } @AfterEach diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java index ede482fe9..9bc9eb938 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java @@ -23,30 +23,23 @@ import java.security.SecureRandom; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @EndToEndTest public class DataPlaneProxyInMemoryTest extends AbstractDataPlaneProxyTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); @BeforeAll diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java index d6ce2d6bc..1911ed0f4 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java @@ -18,28 +18,21 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class DataPlaneProxyPostgresqlTest extends AbstractDataPlaneProxyTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java index 66568a174..14e62ae36 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java @@ -18,38 +18,39 @@ import jakarta.json.JsonObject; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; -import org.eclipse.edc.connector.contract.spi.types.negotiation.ContractNegotiationStates; import org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates; import org.eclipse.edc.spi.types.domain.edr.EndpointDataReference; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; import java.util.Map; -import java.util.UUID; import java.util.concurrent.atomic.AtomicReference; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.awaitility.pollinterval.FibonacciPollInterval.fibonacci; -import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerNumberPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bnpPolicy; import static org.eclipse.tractusx.edc.helpers.TransferProcessHelperFunctions.createProxyRequest; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; -import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_POLL_INTERVAL; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractHttpConsumerPullWithProxyTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); private MockWebServer server; @@ -67,48 +68,30 @@ void transferData_privateBackend() throws IOException, InterruptedException { var authCodeHeaderName = "test-authkey"; var authCode = "test-authcode"; - var dataAddress = Json.createObjectBuilder() - .add(EDC_NAMESPACE + "type", "HttpData") - .add(EDC_NAMESPACE + "contentType", "application/json") - .add(EDC_NAMESPACE + "baseUrl", url.toString()) - .add(EDC_NAMESPACE + "authKey", authCodeHeaderName) - .add(EDC_NAMESPACE + "authCode", authCode) - .build(); - - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), dataAddress); - - PLATO.createPolicy(createTestPolicy("policy-1", SOKRATES.getBpn())); - PLATO.createPolicy(createTestPolicy("policy-2", SOKRATES.getBpn())); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-2"); - var negotiationId = SOKRATES.negotiateContract(PLATO, assetId); - - // forward declarations of our actual values - var transferProcessId = new AtomicReference(); - var dataRequestId = UUID.randomUUID().toString(); - var contractAgreementId = new AtomicReference(); - var edr = new AtomicReference(); - // wait for the successful contract negotiation - await().pollInterval(ASYNC_POLL_INTERVAL) - .atMost(ASYNC_TIMEOUT) - .untilAsserted(() -> { - var negotiationState = SOKRATES.getNegotiationState(negotiationId); - assertThat(negotiationState).isEqualTo(ContractNegotiationStates.FINALIZED.toString()); + Map dataAddress = Map.of( + "baseUrl", url.toString(), + "type", "HttpData", + "contentType", "application/json", + "authKey", authCodeHeaderName, + "authCode", authCode + ); - var agreementId = SOKRATES.getContractAgreementId(negotiationId); - assertThat(agreementId).isNotNull(); - contractAgreementId.set(agreementId); + PLATO.createAsset(assetId, Map.of(), dataAddress); - var tpId = SOKRATES.requestTransfer(dataRequestId, contractAgreementId.get(), assetId, PLATO, createProxyRequest()); - transferProcessId.set(tpId); - assertThat(transferProcessId).isNotNull(); - }); + var accessPolicyId = PLATO.createPolicyDefinition(createTestPolicy(SOKRATES.getBpn())); + var contractPolicyId = PLATO.createPolicyDefinition(createTestPolicy(SOKRATES.getBpn())); + PLATO.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); + var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, Json.createObjectBuilder().build(), createProxyRequest()); + + var contractAgreementId = new AtomicReference(); + var edr = new AtomicReference(); // wait until transfer process completes await().pollInterval(fibonacci()) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - var tpState = SOKRATES.getTransferProcessState(transferProcessId.get()); + var tpState = SOKRATES.getTransferProcessState(transferProcessId); assertThat(tpState).isNotNull().isEqualTo(TransferProcessStates.STARTED.toString()); }); @@ -117,16 +100,16 @@ void transferData_privateBackend() throws IOException, InterruptedException { await().pollInterval(fibonacci()) .atMost(ASYNC_TIMEOUT) .untilAsserted(() -> { - edr.set(SOKRATES.getDataReference(dataRequestId)); + edr.set(SOKRATES.edrs().getDataReferenceFromBackend(transferProcessId)); assertThat(edr).isNotNull(); }); // pull data out of provider's backend service: // Cons-DP -> Prov-DP -> Prov-backend - assertThat(SOKRATES.pullData(edr.get(), Map.of())).isEqualTo("test response"); + assertThat(SOKRATES.data().pullData(edr.get(), Map.of())).isEqualTo("test response"); var rq = server.takeRequest(); assertThat(rq.getHeader(authCodeHeaderName)).isEqualTo(authCode); - assertThat(rq.getHeader("Edc-Contract-Agreement-Id")).isEqualTo(contractAgreementId.get()); + assertThat(rq.getHeader("Edc-Contract-Agreement-Id")).isEqualTo(edr.get().getContractId()); assertThat(rq.getHeader("Edc-Bpn")).isEqualTo(SOKRATES.getBpn()); assertThat(rq.getMethod()).isEqualToIgnoringCase("GET"); } @@ -136,7 +119,7 @@ void teardown() throws IOException { server.shutdown(); } - protected JsonObject createTestPolicy(String policyId, String bpn) { - return businessPartnerNumberPolicy(policyId, bpn); + protected JsonObject createTestPolicy(String bpn) { + return bnpPolicy(bpn); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java index 36145618d..a875504d6 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java @@ -14,19 +14,19 @@ package org.eclipse.tractusx.edc.tests.transfer; -import jakarta.json.Json; import jakarta.json.JsonObject; import okhttp3.mockwebserver.Dispatcher; import okhttp3.mockwebserver.MockResponse; import okhttp3.mockwebserver.MockWebServer; import okhttp3.mockwebserver.RecordedRequest; -import org.eclipse.tractusx.edc.lifecycle.Participant; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; import org.jetbrains.annotations.NotNull; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.IOException; +import java.util.Map; import java.util.UUID; import static jakarta.json.Json.createObjectBuilder; @@ -35,19 +35,24 @@ import static org.eclipse.edc.connector.transfer.spi.types.TransferProcessStates.COMPLETED; import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.TYPE; import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.businessPartnerNumberPolicy; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.bnpPolicy; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; import static org.eclipse.tractusx.edc.tests.TestCommon.ASYNC_TIMEOUT; public abstract class AbstractHttpProviderPushTest { - protected static final Participant SOKRATES = new Participant(SOKRATES_NAME, SOKRATES_BPN, sokratesConfiguration()); - protected static final Participant PLATO = new Participant(PLATO_NAME, PLATO_BPN, platoConfiguration()); + protected static final TxParticipant SOKRATES = TxParticipant.Builder.newInstance() + .name(SOKRATES_NAME) + .id(SOKRATES_BPN) + .build(); + + protected static final TxParticipant PLATO = TxParticipant.Builder.newInstance() + .name(PLATO_NAME) + .id(PLATO_BPN) + .build(); private MockWebServer server; @@ -77,13 +82,20 @@ public MockResponse dispatch(@NotNull RecordedRequest recordedRequest) throws In server.start(); - PLATO.createAsset(assetId, Json.createObjectBuilder().build(), httpDataAddress(providerUrl.toString())); - PLATO.createPolicy(createTestPolicy("policy-1", SOKRATES.getBpn())); - PLATO.createContractDefinition(assetId, "def-1", "policy-1", "policy-1"); + Map dataAddress = Map.of( + "name", "transfer-test", + "baseUrl", providerUrl.toString(), + "type", "HttpData", + "contentType", "application/json" + ); + + PLATO.createAsset(assetId, Map.of(), dataAddress); + var policyId = PLATO.createPolicyDefinition(bnpPolicy(SOKRATES.getBpn())); + PLATO.createContractDefinition(assetId, "def-1", policyId, policyId); var destination = httpDataAddress(consumerUrl.toString()); - var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, destination); + var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, createObjectBuilder().build(), destination); await().atMost(ASYNC_TIMEOUT).untilAsserted(() -> { var state = SOKRATES.getTransferProcessState(transferProcessId); assertThat(state).isEqualTo(COMPLETED.name()); @@ -95,10 +107,6 @@ void teardown() throws IOException { server.shutdown(); } - protected JsonObject createTestPolicy(String policyId, String bpn) { - return businessPartnerNumberPolicy(policyId, bpn); - } - private JsonObject httpDataAddress(String baseUrl) { return createObjectBuilder() .add(TYPE, EDC_NAMESPACE + "DataAddress") diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java index bb94a1599..414476145 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java @@ -23,30 +23,23 @@ import java.security.SecureRandom; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @EndToEndTest public class HttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsumerPullWithProxyTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); @BeforeAll diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java index 61892beff..279d69f9f 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java @@ -18,13 +18,6 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class HttpConsumerPullWithProxyPostgresqlTest extends AbstractHttpConsumerPullWithProxyTest { @@ -32,16 +25,16 @@ public class HttpConsumerPullWithProxyPostgresqlTest extends AbstractHttpConsume @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java index 2b32b3e9c..aae2e15af 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java @@ -18,29 +18,22 @@ import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @EndToEndTest public class HttpProviderPushInMemoryTest extends AbstractHttpProviderPushTest { @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java index 4946c9934..4d8ee5024 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java @@ -18,28 +18,21 @@ import org.eclipse.tractusx.edc.lifecycle.PgParticipantRuntime; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesConfiguration; - @PostgresqlDbIntegrationTest public class HttpProviderPushInPostgresqlTest extends AbstractHttpProviderPushTest { @RegisterExtension protected static final PgParticipantRuntime SOKRATES_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.getConfiguration() ); @RegisterExtension protected static final PgParticipantRuntime PLATO_RUNTIME = new PgParticipantRuntime( ":edc-tests:runtime:runtime-postgresql", - PLATO_NAME, - PLATO_BPN, - platoConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.getConfiguration() ); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java index 5879e130a..43ea14943 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java @@ -28,18 +28,10 @@ import java.io.IOException; import java.util.Map; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.MIW_PLATO_PORT; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.MIW_SOKRATES_PORT; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.OAUTH_PORT; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_DSP_CALLBACK; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.PLATO_NAME; import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_BPN; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_DSP_CALLBACK; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.SOKRATES_NAME; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.platoSsiConfiguration; -import static org.eclipse.tractusx.edc.lifecycle.TestRuntimeConfiguration.sokratesSsiConfiguration; @EndToEndTest public class SsiHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsumerPullWithProxyTest { @@ -48,19 +40,20 @@ public class SsiHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsum @RegisterExtension protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory-ssi", - SOKRATES_NAME, - SOKRATES_BPN, - sokratesSsiConfiguration() + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES.ssiConfiguration() ); @RegisterExtension protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( ":edc-tests:runtime:runtime-memory-ssi", - PLATO_NAME, - PLATO_BPN, - platoSsiConfiguration() + PLATO.getName(), + PLATO.getBpn(), + PLATO.ssiConfiguration() ); - private static MockWebServer oauthServer; + private static MockWebServer sokratesOauthServer; + private static MockWebServer platoOauthServer; private static MockWebServer miwPlatoServer; private static MockWebServer miwSokratesServer; @@ -68,25 +61,30 @@ public class SsiHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsum static void prepare() throws IOException { miwSokratesServer = new MockWebServer(); miwPlatoServer = new MockWebServer(); - oauthServer = new MockWebServer(); + sokratesOauthServer = new MockWebServer(); + platoOauthServer = new MockWebServer(); - var credentialSubjectId = "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000"; + var credentialSubjectId = "did:web:example.com"; - miwSokratesServer.start(MIW_SOKRATES_PORT); - miwSokratesServer.setDispatcher(new MiwDispatcher(SOKRATES_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, PLATO_DSP_CALLBACK)); + miwSokratesServer.start(SOKRATES.miwEndpoint().getPort()); + miwSokratesServer.setDispatcher(new MiwDispatcher(SOKRATES_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, PLATO.getProtocolEndpoint().getUrl().toString())); - miwPlatoServer.start(MIW_PLATO_PORT); - miwPlatoServer.setDispatcher(new MiwDispatcher(PLATO_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, SOKRATES_DSP_CALLBACK)); + miwPlatoServer.start(PLATO.miwEndpoint().getPort()); + miwPlatoServer.setDispatcher(new MiwDispatcher(PLATO_BPN, SUMMARY_VC_TEMPLATE, credentialSubjectId, SOKRATES.getProtocolEndpoint().getUrl().toString())); - oauthServer.start(OAUTH_PORT); - oauthServer.setDispatcher(new KeycloakDispatcher()); + sokratesOauthServer.start(SOKRATES.authTokenEndpoint().getPort()); + sokratesOauthServer.setDispatcher(new KeycloakDispatcher()); + + platoOauthServer.start(PLATO.authTokenEndpoint().getPort()); + platoOauthServer.setDispatcher(new KeycloakDispatcher()); } @AfterAll static void unwind() throws IOException { miwSokratesServer.shutdown(); miwPlatoServer.shutdown(); - oauthServer.shutdown(); + sokratesOauthServer.shutdown(); + platoOauthServer.shutdown(); } @BeforeEach @@ -96,7 +94,7 @@ void setup() throws IOException { } @Override - protected JsonObject createTestPolicy(String policyId, String bpn) { - return frameworkPolicy(policyId, Map.of("Dismantler", "active")); + protected JsonObject createTestPolicy(String bpn) { + return frameworkPolicy(Map.of(TX_NAMESPACE + "Dismantler", "active")); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java index 7db813b43..617b54161 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java @@ -18,6 +18,7 @@ import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.iam.TokenParameters; import org.eclipse.edc.spi.iam.TokenRepresentation; +import org.eclipse.edc.spi.iam.VerificationContext; import org.eclipse.edc.spi.result.Result; import org.eclipse.edc.spi.types.TypeManager; @@ -50,7 +51,7 @@ public Result obtainClientCredentials(TokenParameters param } @Override - public Result verifyJwtToken(TokenRepresentation tokenRepresentation, String audience) { + public Result verifyJwtToken(TokenRepresentation tokenRepresentation, VerificationContext verificationContext) { var token = typeManager.readValue(tokenRepresentation.getToken(), Map.class); if (token.containsKey(BUSINESS_PARTNER_NUMBER_CLAIM)) { diff --git a/edc-tests/e2e-tests/src/test/resources/summary-vc-no-dismantler.json b/edc-tests/e2e-tests/src/test/resources/summary-vc-no-dismantler.json index 89e89a518..750648f04 100644 --- a/edc-tests/e2e-tests/src/test/resources/summary-vc-no-dismantler.json +++ b/edc-tests/e2e-tests/src/test/resources/summary-vc-no-dismantler.json @@ -8,11 +8,11 @@ "VerifiableCredential", "SummaryCredential" ], - "issuer": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "issuer": "did:web:example.com", "issuanceDate": "2023-06-02T12:00:00Z", "expirationDate": "2022-06-16T18:56:59Z", "credentialSubject": { - "id": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "id": "did:web:example.com", "holderIdentifier": "%s", "type": "Summary-List", "name": "CX-Credentials", diff --git a/edc-tests/e2e-tests/src/test/resources/summary-vc.json b/edc-tests/e2e-tests/src/test/resources/summary-vc.json index 70fd26a47..01c640a70 100644 --- a/edc-tests/e2e-tests/src/test/resources/summary-vc.json +++ b/edc-tests/e2e-tests/src/test/resources/summary-vc.json @@ -8,11 +8,11 @@ "VerifiableCredential", "SummaryCredential" ], - "issuer": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "issuer": "did:web:example.com", "issuanceDate": "2023-06-02T12:00:00Z", "expirationDate": "2022-06-16T18:56:59Z", "credentialSubject": { - "id": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "id": "did:web:example.com", "holderIdentifier": "%s", "type": "Summary-List", "name": "CX-Credentials", diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9ad4a839c..c91ff4434 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ format.version = "1.1" [versions] -edc = "0.4.1" +edc = "0.4.2-20240103-SNAPSHOT" postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.3" @@ -116,7 +116,6 @@ edc-spi-dataplane-transfer = { module = "org.eclipse.edc:transfer-data-plane-spi edc-spi-dataplane-selector = { module = "org.eclipse.edc:data-plane-selector-spi", version.ref = "edc" } edc-spi-dataplane-http = { module = "org.eclipse.edc:data-plane-http-spi", version.ref = "edc" } edc-dpf-transferclient = { module = "org.eclipse.edc:data-plane-transfer-client", version.ref = "edc" } -edc-dpf-selector-client = { module = "org.eclipse.edc:data-plane-selector-client", version.ref = "edc" } edc-dpf-selector-spi = { module = "org.eclipse.edc:data-plane-selector-spi", version.ref = "edc" } edc-dpf-selector-core = { module = "org.eclipse.edc:data-plane-selector-core", version.ref = "edc" } edc-dpf-transfer = { module = "org.eclipse.edc:transfer-data-plane", version.ref = "edc" } @@ -126,7 +125,8 @@ edc-dpf-util = { module = "org.eclipse.edc:data-plane-util", version.ref = "edc" edc-dpf-azblob = { module = "org.eclipse.edc:data-plane-azure-storage", version.ref = "edc" } edc-dpf-http = { module = "org.eclipse.edc:data-plane-http", version.ref = "edc" } edc-dpf-oauth2 = { module = "org.eclipse.edc:data-plane-http-oauth2", version.ref = "edc" } -edc-dpf-api = { module = "org.eclipse.edc:data-plane-api", version.ref = "edc" } +edc-dpf-api-control = { module = "org.eclipse.edc:data-plane-control-api", version.ref = "edc" } +edc-dpf-api-public = { module = "org.eclipse.edc:data-plane-public-api", version.ref = "edc" } # micrometer and other infra stuff edc-micrometer-core = { module = "org.eclipse.edc:micrometer-core", version.ref = "edc" } @@ -157,6 +157,7 @@ aws-s3transfer = { module = "software.amazon.awssdk:s3-transfer-manager", versio jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "rsApi" } jakartaJson = { module = "org.glassfish:jakarta.json", version.ref = "jakarta-json" } jacksonJsonP = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp", version.ref = "jackson" } +jackson-datatypeJsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" } titaniumJsonLd = { module = "com.apicatalog:titanium-json-ld", version.ref = "titanium" } junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "jupiter" } assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" } @@ -165,6 +166,6 @@ apicatalog-iron-vc = { module = "com.apicatalog:iron-verifiable-credentials", ve [bundles] edc-connector = ["edc.boot", "edc.core-connector", "edc.core-controlplane", "edc.api-observability"] -edc-dpf = ["edc.dpf-transfer", "edc.dpf-selector-core", "edc.dpf-selector-client", "edc.spi-dataplane-selector"] +edc-dpf = ["edc.dpf-transfer", "edc.dpf-selector-core", "edc.spi-dataplane-selector"] edc-sqlstores = ["edc.sql-assetindex", "edc.sql-contract-definition", "edc.sql-contract-negotiation", "edc.sql-transferprocess", "edc.sql-policydef", "edc.sql-policy-monitor"] edc-monitoring = ["edc.micrometer-core", "edc.micrometer-jersey", "edc.micrometer-jetty"] diff --git a/spi/ssi-spi/build.gradle.kts b/spi/ssi-spi/build.gradle.kts index 24289ef22..c1733a4cc 100644 --- a/spi/ssi-spi/build.gradle.kts +++ b/spi/ssi-spi/build.gradle.kts @@ -24,4 +24,5 @@ dependencies { testFixturesImplementation(libs.jacksonJsonP) testFixturesImplementation(libs.titaniumJsonLd) + testFixturesImplementation(libs.jackson.datatypeJsr310) } diff --git a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java index 207194ded..f04b00b48 100644 --- a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java +++ b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java @@ -35,11 +35,11 @@ public interface SummaryCredential { "VerifiableCredential", "SummaryCredential" ], - "issuer": "did:web:issuer-a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "issuer": "did:web:issuer-example.com", "issuanceDate": "2023-06-02T12:00:00Z", "expirationDate": "2022-06-16T18:56:59Z", "credentialSubject": { - "id": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "id": "did:web:example.com", "holderIdentifier": "BPN of holder", "type": "Summary-List", "name": "CX-Credentials", @@ -82,11 +82,11 @@ public interface SummaryCredential { "type": [ "VerifiableCredential" ], - "issuer": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "issuer": "did:web:example.com", "issuanceDate": "2023-06-02T12:00:00Z", "expirationDate": "2022-06-16T18:56:59Z", "credentialSubject": { - "id": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000" + "id": "did:web:example.com" } } ] @@ -110,11 +110,11 @@ public interface SummaryCredential { "VerifiableCredential", "SummaryCredential" ], - "issuer": "did:web:no-holder.ngrok-free.app:BPNL000000000000", + "issuer": "did:web:no-holder.example.com:BPNL000000000000", "issuanceDate": "2023-06-02T12:00:00Z", "expirationDate": "2022-06-16T18:56:59Z", "credentialSubject": { - "id": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000" + "id": "did:web:example.com" } } ] @@ -138,7 +138,7 @@ public interface SummaryCredential { "VerifiableCredential", "SummaryCredential" ], - "issuer": "did:web:a016-203-129-213-99.ngrok-free.app:BPNL000000000000", + "issuer": "did:web:example.com", "issuanceDate": "2023-06-02T12:00:00Z", "expirationDate": "2022-06-16T18:56:59Z" } From 07c2bcf1a0713082cd1fb382645c14aedd259a12 Mon Sep 17 00:00:00 2001 From: Masoud Allahyari Date: Thu, 4 Jan 2024 10:21:06 +0100 Subject: [PATCH 34/83] fix: rename sftp service extensions path (#971) --- ...rviceExtension => org.eclipse.edc.spi.system.ServiceExtension} | 0 ...rviceExtension => org.eclipse.edc.spi.system.ServiceExtension} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/{org.eclipse.dataspaceconnector.spi.system.ServiceExtension => org.eclipse.edc.spi.system.ServiceExtension} (100%) rename edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/{org.eclipse.dataspaceconnector.spi.system.ServiceExtension => org.eclipse.edc.spi.system.ServiceExtension} (100%) diff --git a/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.dataspaceconnector.spi.system.ServiceExtension b/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension similarity index 100% rename from edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.dataspaceconnector.spi.system.ServiceExtension rename to edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.dataspaceconnector.spi.system.ServiceExtension b/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension similarity index 100% rename from edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.dataspaceconnector.spi.system.ServiceExtension rename to edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension From d60d9f98e01b3f720d8ec2e645e1e7431e4c7a29 Mon Sep 17 00:00:00 2001 From: KilianHaag Date: Mon, 8 Jan 2024 13:56:50 +0100 Subject: [PATCH 35/83] Update charts/tractusx-connector-memory/templates/_helpers.tpl Co-authored-by: ndr_brt --- charts/tractusx-connector-memory/templates/_helpers.tpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/tractusx-connector-memory/templates/_helpers.tpl b/charts/tractusx-connector-memory/templates/_helpers.tpl index 997d6b5a4..c65ba8c52 100644 --- a/charts/tractusx-connector-memory/templates/_helpers.tpl +++ b/charts/tractusx-connector-memory/templates/_helpers.tpl @@ -111,7 +111,7 @@ Validation URL {{- end }} {{/* -Runtime URL +Control URL */}} {{- define "txdc.runtime.url.control" -}} {{- printf "http://%s-runtime:%v%s" ( include "txdc.fullname" $ ) $.Values.runtime.endpoints.control.port $.Values.runtime.endpoints.control.path -}} From abcc0010e33cab4bb56c969663fc7a7a75cd2d1a Mon Sep 17 00:00:00 2001 From: Kilian Haag Date: Mon, 8 Jan 2024 15:50:24 +0100 Subject: [PATCH 36/83] chore(deps): Update DEPENDENCIES --- DEPENDENCIES | 104 +++++++++++++++++++++++++-------------------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 0ab3ea8d9..125e85eab 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -449,59 +449,59 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 maven/mavencentral/software.amazon.awssdk/iam/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 +maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 maven/mavencentral/software.amazon.awssdk/sts/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 +maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined From d7adb17400d263e282b63a6ee405938afa12a521 Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Tue, 9 Jan 2024 11:58:18 +0100 Subject: [PATCH 37/83] feat: adds default scope extractor (#973) * feat: add default scope extractor + E2E test with iatp EDC components * pr suggestions --- DEPENDENCIES | 143 ++++++++----- .../tractusx/edc/jsonld/JsonLdExtension.java | 5 +- .../document/businessPartnerData.json | 192 ++++++++++++++++++ edc-extensions/iatp/tx-iatp/build.gradle.kts | 26 +++ .../edc/iam/iatp/IatpScopeExtension.java | 94 +++++++++ .../iam/iatp/scope/DefaultScopeExtractor.java | 57 ++++++ ...rg.eclipse.edc.spi.system.ServiceExtension | 15 ++ .../edc/iam/iatp/IatpScopeExtensionTest.java | 99 +++++++++ .../iatp/scope/DefaultScopeExtractorTest.java | 56 +++++ edc-tests/e2e-tests/build.gradle.kts | 6 + .../tractusx/edc/did/DidExampleResolver.java | 57 ++++++ .../edc/helpers/IatpHelperFunctions.java | 42 ++++ .../edc/lifecycle/ParticipantRuntime.java | 2 +- .../edc/lifecycle/tx/TxParticipant.java | 2 +- .../lifecycle/tx/iatp/DataspaceIssuer.java | 73 +++++++ .../lifecycle/tx/iatp/IatpParticipant.java | 157 ++++++++++++++ .../lifecycle/tx/iatp/SecureTokenService.java | 74 +++++++ ...HttpConsumerPullWithProxyInMemoryTest.java | 113 +++++++++++ .../src/test/resources/ec-p256-public.pem | 4 + .../iatp/iatp-extensions/build.gradle.kts | 26 +++ .../tractusx/edc/iatp/TestAudienceMapper.java | 38 ++++ .../edc/iatp/TestAudienceMapperExtension.java | 42 ++++ .../edc/iatp/ih/IdentityHubExtension.java | 84 ++++++++ .../ih/TxScopeToCriterionTransformer.java | 63 ++++++ ...rg.eclipse.edc.spi.system.ServiceExtension | 16 ++ .../credentials/plato-bpn-membership.json | 30 +++ .../credentials/sokrates-bpn-membership.json | 30 +++ .../iatp/runtime-memory-iatp-ih/README.md | 3 + .../runtime-memory-iatp-ih/build.gradle.kts | 62 ++++++ .../runtime/iatp/runtime-memory-sts/README.md | 3 + .../iatp/runtime-memory-sts/build.gradle.kts | 46 +++++ gradle/libs.versions.toml | 25 +++ settings.gradle.kts | 4 + spi/ssi-spi/build.gradle.kts | 1 + 34 files changed, 1635 insertions(+), 55 deletions(-) create mode 100644 core/json-ld-core/src/main/resources/document/businessPartnerData.json create mode 100644 edc-extensions/iatp/tx-iatp/build.gradle.kts create mode 100644 edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java create mode 100644 edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java create mode 100644 edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension create mode 100644 edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java create mode 100644 edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java create mode 100644 edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem create mode 100644 edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json create mode 100644 edc-tests/runtime/iatp/runtime-memory-iatp-ih/README.md create mode 100644 edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts create mode 100644 edc-tests/runtime/iatp/runtime-memory-sts/README.md create mode 100644 edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts diff --git a/DEPENDENCIES b/DEPENDENCIES index 0ab3ea8d9..329449f63 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -1,4 +1,5 @@ maven/mavencentral/com.apicatalog/carbon-did/0.0.2, Apache-2.0, approved, #9239 +maven/mavencentral/com.apicatalog/iron-ed25519-cryptosuite-2020/0.8.1, Apache-2.0, approved, #11157 maven/mavencentral/com.apicatalog/iron-verifiable-credentials/0.8.1, Apache-2.0, approved, #9234 maven/mavencentral/com.apicatalog/titanium-json-ld/1.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.1, Apache-2.0, approved, #8912 @@ -16,6 +17,7 @@ maven/mavencentral/com.azure/azure-storage-internal-avro/12.9.1, MIT, approved, maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.10.3, Apache-2.0, approved, CQ21280 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.13.5, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.1, Apache-2.0, approved, #7947 +maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.2, Apache-2.0, approved, #7947 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.3, Apache-2.0, approved, #7947 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.0, Apache-2.0, approved, #11606 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.1, Apache-2.0, approved, #11606 @@ -25,7 +27,9 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.0, Apache-2.0 AN maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.1, Apache-2.0 AND MIT, approved, #11602 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.4.2, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.5, Apache-2.0, approved, #2134 +maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.2, Apache-2.0, approved, #4105 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.1, Apache-2.0, approved, #7934 +maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.2, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.3, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.0, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.1, Apache-2.0, approved, #11605 @@ -34,14 +38,17 @@ maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1, Apache-2.0, approved, #12438 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.1, Apache-2.0, approved, #8802 +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.2, Apache-2.0, approved, #8802 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.16.1, Apache-2.0, approved, #11855 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.16.1, Apache-2.0, approved, #11854 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.13.5, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.1, Apache-2.0, approved, #7930 +maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.2, Apache-2.0, approved, #7930 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.0, Apache-2.0, approved, #11853 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.1, Apache-2.0, approved, #11853 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/2.16.1, Apache-2.0, approved, #11851 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.15.1, Apache-2.0, approved, #9236 +maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.15.2, Apache-2.0, approved, #9236 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.16.1, Apache-2.0, approved, #11858 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.15.3, Apache-2.0, approved, #9241 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.16.1, Apache-2.0, approved, #11856 @@ -94,6 +101,7 @@ maven/mavencentral/dev.failsafe/failsafe/3.3.1, Apache-2.0, approved, #9268 maven/mavencentral/dev.failsafe/failsafe/3.3.2, Apache-2.0, approved, #9268 maven/mavencentral/info.picocli/picocli/4.6.3, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.classgraph/classgraph/4.8.154, MIT, approved, CQ22530 +maven/mavencentral/io.github.classgraph/classgraph/4.8.162, MIT, approved, CQ22530 maven/mavencentral/io.micrometer/micrometer-commons/1.12.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 maven/mavencentral/io.micrometer/micrometer-core/1.12.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 maven/mavencentral/io.micrometer/micrometer-observation/1.12.1, Apache-2.0, approved, #11680 @@ -152,15 +160,20 @@ maven/mavencentral/io.rest-assured/rest-assured/5.4.0, Apache-2.0, approved, #12 maven/mavencentral/io.rest-assured/xml-path/5.4.0, Apache-2.0, approved, #12038 maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.15, Apache-2.0, approved, #5947 +maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.18, Apache-2.0, approved, #5947 maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.20, Apache-2.0, approved, #5947 maven/mavencentral/io.swagger.core.v3/swagger-annotations/2.2.15, Apache-2.0, approved, #11362 maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.15, Apache-2.0, approved, #5929 +maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.18, Apache-2.0, approved, #5929 maven/mavencentral/io.swagger.core.v3/swagger-core/2.2.15, Apache-2.0, approved, #9265 maven/mavencentral/io.swagger.core.v3/swagger-integration-jakarta/2.2.15, Apache-2.0, approved, #11475 +maven/mavencentral/io.swagger.core.v3/swagger-integration-jakarta/2.2.18, Apache-2.0, approved, #11475 maven/mavencentral/io.swagger.core.v3/swagger-integration/2.2.15, Apache-2.0, approved, #10352 maven/mavencentral/io.swagger.core.v3/swagger-jaxrs2-jakarta/2.2.15, Apache-2.0, approved, #11477 +maven/mavencentral/io.swagger.core.v3/swagger-jaxrs2-jakarta/2.2.18, Apache-2.0, approved, #11477 maven/mavencentral/io.swagger.core.v3/swagger-jaxrs2/2.2.15, Apache-2.0, approved, #9814 maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.15, Apache-2.0, approved, #5919 +maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.18, Apache-2.0, approved, #5919 maven/mavencentral/io.swagger.core.v3/swagger-models/2.2.15, Apache-2.0, approved, #10353 maven/mavencentral/jakarta.activation/jakarta.activation-api/1.2.1, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf maven/mavencentral/jakarta.activation/jakarta.activation-api/2.1.0, EPL-2.0 OR BSD-3-Clause OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jaf @@ -194,6 +207,7 @@ maven/mavencentral/org.antlr/antlr4-runtime/4.9.3, BSD-3-Clause, approved, #322 maven/mavencentral/org.apache.commons/commons-compress/1.24.0, Apache-2.0 AND BSD-3-Clause AND bzip2-1.0.6 AND LicenseRef-Public-Domain, approved, #10368 maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, CQ22642 maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.apache.commons/commons-lang3/3.13.0, Apache-2.0, approved, #9820 maven/mavencentral/org.apache.commons/commons-pool2/2.12.0, Apache-2.0 AND LicenseRef-Public-Domain, approved, #10843 maven/mavencentral/org.apache.groovy/groovy-bom/4.0.16, Apache-2.0, approved, #9266 maven/mavencentral/org.apache.groovy/groovy-json/4.0.16, Apache-2.0, approved, #7411 @@ -252,6 +266,7 @@ maven/mavencentral/org.eclipse.edc/control-plane-api/0.4.2-20240103-SNAPSHOT, Ap maven/mavencentral/org.eclipse.edc/control-plane-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/control-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/core-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/crypto-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc @@ -287,6 +302,25 @@ maven/mavencentral/org.eclipse.edc/dsp/0.4.2-20240103-SNAPSHOT, Apache-2.0, appr maven/mavencentral/org.eclipse.edc/http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/http/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/iam-mock/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-crypto/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-service/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/jersey-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/jersey-providers/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc @@ -295,8 +329,11 @@ maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.4.2-20240103-SNAPSHOT, Apa maven/mavencentral/org.eclipse.edc/json-ld-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/json-ld/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/junit/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jws2020/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/jwt-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/jwt-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/management-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/management-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc @@ -313,6 +350,7 @@ maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.4.2-20240103-SNAPSHOT, maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/policy-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/public-key-provider/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/sql-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.edc/sql-lease/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc @@ -441,6 +479,7 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 maven/mavencentral/org.slf4j/slf4j-api/2.0.10, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 +maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/database-commons/1.19.3, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/jdbc/1.19.3, Apache-2.0, approved, #10348 maven/mavencentral/org.testcontainers/junit-jupiter/1.19.3, MIT, approved, #10344 @@ -449,59 +488,59 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 maven/mavencentral/software.amazon.awssdk/iam/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 +maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 maven/mavencentral/software.amazon.awssdk/sts/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 +maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java b/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java index f535cbb42..b350d2f62 100644 --- a/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java +++ b/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java @@ -42,6 +42,8 @@ public class JsonLdExtension implements ServiceExtension { public static final String CREDENTIALS_SUMMARY_V_1_FALLBACK = "https://catenax-ng.github.io/product-core-schemas/SummaryVC.json"; public static final String SECURITY_JWS_V1 = "https://w3id.org/security/suites/jws-2020/v1"; public static final String SECURITY_ED25519_V1 = "https://w3id.org/security/suites/ed25519-2020/v1"; + + public static final String BUSINESS_PARTNER_DATA = "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json"; private static final String PREFIX = "document" + File.separator; private static final Map FILES = Map.of( CREDENTIALS_V_1, PREFIX + "credential-v1.jsonld", @@ -50,7 +52,8 @@ public class JsonLdExtension implements ServiceExtension { SECURITY_JWS_V1, PREFIX + "security-jws-2020.jsonld", SECURITY_ED25519_V1, PREFIX + "security-ed25519-2020.jsonld", TX_CONTEXT, PREFIX + "tx-v1.jsonld", - EDC_CONTEXT, PREFIX + "edc-v1.jsonld"); + EDC_CONTEXT, PREFIX + "edc-v1.jsonld", + BUSINESS_PARTNER_DATA, PREFIX + "businessPartnerData.json"); @Inject private JsonLd jsonLdService; diff --git a/core/json-ld-core/src/main/resources/document/businessPartnerData.json b/core/json-ld-core/src/main/resources/document/businessPartnerData.json new file mode 100644 index 000000000..3deface92 --- /dev/null +++ b/core/json-ld-core/src/main/resources/document/businessPartnerData.json @@ -0,0 +1,192 @@ +{ + "@context": { + "@version": 1.1, + "@protected": true, + "BpnCredential": { + "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#BpnCredential", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "bpn": "http://schema.org/identifier" + } + }, + "MembershipCredential": { + "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#MembershipCredential", + "@context": { + "@version": 1.1, + "@protected": true, + "id": "@id", + "type": "@type", + "ex": "https://example.org/examples#", + "startTime": { + "@id": "https://schema.org/startTime", + "@type": "https://schema.org/DateTime" + }, + "memberOf": { + "@id": "https://schema.org/memberOf", + "@type": "https://schema.org/Text" + }, + "status": { + "@id": "ex:status", + "@type": "https://schema.org/Text" + }, + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } + }, + "NameCredential": { + "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#NameCredential", + "@context": { + "@version": 1.1, + "id": "@id", + "type": "@type", + "uuid": "http://schema.org/identifier", + "value": { + "@id": "ex:value", + "@type": "https://schema.org/Text" + }, + "name": { + "@id": "ex:name", + "@type": "https://schema.org/Text" + }, + "shortName": { + "@id": "ex:shortName", + "@type": "https://schema.org/Text" + }, + "fipsCode": { + "@id": "ex:fipsCode", + "@type": "https://schema.org/Text" + }, + "number": { + "@id": "ex:number", + "@type": "https://schema.org/Text" + }, + "direction": { + "@id": "ex:direction", + "@type": "https://schema.org/Text" + }, + "nameType": { + "@id": "ex:nameType", + "@type": "https://schema.org/object" + }, + "language": { + "@id": "ex:language", + "@type": "https://schema.org/object" + }, + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } + }, + "BankAccountCredential": { + "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#BankAccountCredential", + "@context": { + "@version": 1.1, + "id": "@id", + "type": "@type", + "uuid": "http://schema.org/identifier", + "trustScores": { + "@id": "ex:trustScores" + }, + "nationalBankIdentifier": { + "@id": "ex:nationalBankIdentifier", + "@type": "https://schema.org/Text" + }, + "nationalBankAccountIdentifier": { + "@id": "ex:nationalBankAccountIdentifier", + "@type": "https://schema.org/Text" + }, + "internationalBankIdentifier": { + "@id": "ex:internationalBankIdentifier", + "@type": "https://schema.org/Text" + }, + "internationalBankAccountIdentifier": { + "@id": "ex:internationalBankAccountIdentifier", + "@type": "https://schema.org/Text" + }, + "currency": { + "@id": "ex:typeOf", + "@type": "https://schema.org/object" + }, + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } + }, + "AddressCredential": { + "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#AddressCredential", + "@context": { + "@version": 1.1, + "id": "@id", + "type": "@type", + "uuid": "http://schema.org/identifier", + "version": { + "@id": "ex:typeOf", + "@type": "https://schema.org/object" + }, + "careOf": { + "@id": "ex:careOf", + "@type": "https://schema.org/Text" + }, + "contexts": { + "@id": "ex:contexts" + }, + "bpn": { + "@id": "ex:bpn" + }, + "country": { + "@id": "ex:country", + "@type": "https://schema.org/object" + }, + "administrativeAreas": { + "@id": "ex:administrativeAreas" + }, + "postCodes": { + "@id": "ex:postCodes" + }, + "localities": { + "@id": "ex:localities" + }, + "thoroughfares": { + "@id": "ex:thoroughfares" + }, + "premises": { + "@id": "ex:premises" + }, + "postalDeliveryPoints": { + "@id": "ex:postalDeliveryPoints" + }, + "geographicCoordinates": { + "@id": "ex:geographicCoordinates", + "@type": "https://schema.org/object" + }, + "types": { + "@id": "ex:types" + }, + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } + }, + "LegalFormCredential": { + "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#LegalFormCredential", + "@context": { + "@version": 1.1, + "id": "@id", + "type": "@type", + "technicalKey": {"@id": "ex:technicalKey", "@type":"https://schema.org/Text"}, + "name": {"@id": "ex:name", "@type":"https://schema.org/Text"}, + "url": {"@id": "ex:url", "@type":"https://schema.org/Text"}, + "mainAbbreviation": {"@id": "https://schema.org/Text#4", "@type":"https://schema.org/Text"}, + "language": {"@id": "https://schema.org/Text#5", "@type":"https://schema.org/object"}, + "categories": {"@id": "https://schema.org/Text#6", "@type":"https://schema.org/ItemList"}, + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } + } + } +} diff --git a/edc-extensions/iatp/tx-iatp/build.gradle.kts b/edc-extensions/iatp/tx-iatp/build.gradle.kts new file mode 100644 index 000000000..a5667abf4 --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/build.gradle.kts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +plugins { + `java-library` + `maven-publish` +} + +dependencies { + implementation(libs.edc.spi.core) + implementation(libs.edc.spi.policyengine) + implementation(libs.edc.identity.core.trust) + + testImplementation(libs.edc.junit) +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java new file mode 100644 index 000000000..b54bea3a0 --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp; + +import org.eclipse.edc.policy.engine.spi.PolicyEngine; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.runtime.metamodel.annotation.Setting; +import org.eclipse.edc.spi.monitor.Monitor; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.spi.system.configuration.Config; +import org.eclipse.tractusx.edc.iam.iatp.scope.DefaultScopeExtractor; + +import java.util.Set; +import java.util.stream.Collectors; + +import static java.lang.String.format; +import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.CATALOG_REQUEST_SCOPE; +import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.NEGOTIATION_REQUEST_SCOPE; +import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.TRANSFER_PROCESS_REQUEST_SCOPE; +import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension.NAME; + +@Extension(NAME) +public class IatpScopeExtension implements ServiceExtension { + + public static final String TX_IATP_DEFAULT_SCOPE_PREFIX = "edc.iam.iatp.default-scopes"; + + public static final String TX_IATP_DEFAULT_SCOPE_PREFIX_CONFIG_ALIAS = TX_IATP_DEFAULT_SCOPE_PREFIX + ".."; + + @Setting(context = TX_IATP_DEFAULT_SCOPE_PREFIX_CONFIG_ALIAS, value = "The alias of the scope e.g. org.eclipse.edc.vc.type", required = true) + public static final String ALIAS = "alias"; + + @Setting(context = TX_IATP_DEFAULT_SCOPE_PREFIX_CONFIG_ALIAS, value = "The alias of the scope e.g. MembershipCredential", required = true) + public static final String TYPE = "type"; + + @Setting(context = TX_IATP_DEFAULT_SCOPE_PREFIX_CONFIG_ALIAS, value = "The alias of the scope e.g. read", required = true) + public static final String OPERATION = "operation"; + + public static final Set DEFAULT_SCOPES = Set.of("org.eclipse.tractusx.vc.type:MembershipCredential:read"); + + static final String NAME = "Tractusx scope mapping extension"; + + @Inject + private PolicyEngine policyEngine; + + @Inject + private Monitor monitor; + + @Override + public String name() { + return NAME; + } + + @Override + public void initialize(ServiceExtensionContext context) { + var contextMappingFunction = new DefaultScopeExtractor(defaultScopes(context)); + policyEngine.registerPostValidator(CATALOG_REQUEST_SCOPE, contextMappingFunction); + policyEngine.registerPostValidator(NEGOTIATION_REQUEST_SCOPE, contextMappingFunction); + policyEngine.registerPostValidator(TRANSFER_PROCESS_REQUEST_SCOPE, contextMappingFunction); + } + + + private Set defaultScopes(ServiceExtensionContext context) { + var config = context.getConfig(TX_IATP_DEFAULT_SCOPE_PREFIX); + var scopes = config.partition().map(this::createScope).collect(Collectors.toSet()); + + if (scopes.isEmpty()) { + monitor.info(format("No default scope from configuration. Using the default ones %s", DEFAULT_SCOPES)); + return DEFAULT_SCOPES; + } else { + return scopes; + } + } + + private String createScope(Config config) { + var alias = config.getString(ALIAS); + var type = config.getString(TYPE); + var operation = config.getString(OPERATION); + return format("%s:%s:%s", alias, type, operation); + } +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java new file mode 100644 index 000000000..f1202490f --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp.scope; + +import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.policy.model.Policy; +import org.eclipse.edc.spi.EdcException; +import org.eclipse.edc.spi.iam.TokenParameters; + +import java.util.HashSet; +import java.util.Set; +import java.util.function.BiFunction; + +import static java.lang.String.format; + +/** + * Extract for TX default scopes e.g. MembershipCredential scope + */ +public class DefaultScopeExtractor implements BiFunction { + + private final Set defaultScopes; + + public DefaultScopeExtractor(Set defaultScopes) { + this.defaultScopes = defaultScopes; + } + + @Override + public Boolean apply(Policy policy, PolicyContext policyContext) { + var tokenBuilder = policyContext.getContextData(TokenParameters.Builder.class); + if (tokenBuilder == null) { + throw new EdcException(format("%s not set in policy context", TokenParameters.Builder.class.getName())); + } + + var tokenParam = tokenBuilder.build(); + var existingScope = tokenParam.getScope(); + var newScopes = new HashSet<>(defaultScopes); + newScopes.add(existingScope); + tokenBuilder.scope(String.join(" ", newScopes).trim()); + return true; + } + + public Set getDefaultScopes() { + return defaultScopes; + } +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension new file mode 100644 index 000000000..ae07565fa --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -0,0 +1,15 @@ +# +# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# +# Contributors: +# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# +# +org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension + diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java new file mode 100644 index 000000000..90fee95bf --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp; + +import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; +import org.eclipse.edc.policy.engine.spi.PolicyEngine; +import org.eclipse.edc.spi.EdcException; +import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.spi.system.configuration.ConfigFactory; +import org.eclipse.tractusx.edc.iam.iatp.scope.DefaultScopeExtractor; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.ArgumentMatcher; + +import java.util.Map; +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.CATALOG_REQUEST_SCOPE; +import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.NEGOTIATION_REQUEST_SCOPE; +import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.TRANSFER_PROCESS_REQUEST_SCOPE; +import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension.DEFAULT_SCOPES; +import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension.TX_IATP_DEFAULT_SCOPE_PREFIX; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +@ExtendWith(DependencyInjectionExtension.class) +public class IatpScopeExtensionTest { + + private final PolicyEngine policyEngine = mock(); + + @BeforeEach + void setup(ServiceExtensionContext context) { + context.registerService(PolicyEngine.class, policyEngine); + } + + @Test + void initialize(ServiceExtensionContext context, IatpScopeExtension extension) { + extension.initialize(context); + + verify(policyEngine).registerPostValidator(eq(CATALOG_REQUEST_SCOPE), argThat(new ScopeMatcher(DEFAULT_SCOPES))); + verify(policyEngine).registerPostValidator(eq(NEGOTIATION_REQUEST_SCOPE), argThat(new ScopeMatcher(DEFAULT_SCOPES))); + verify(policyEngine).registerPostValidator(eq(TRANSFER_PROCESS_REQUEST_SCOPE), argThat(new ScopeMatcher(DEFAULT_SCOPES))); + } + + @Test + void initialize_withConfiguredScopes(ServiceExtensionContext context, IatpScopeExtension extension) { + var cfg = ConfigFactory.fromMap(Map.of( + "foo.alias", "org.test.alias.foo", + "foo.type", "FooCredential", + "foo.operation", "read", + "bar.alias", "org.test.alias.bar", + "bar.type", "BarCredential", + "bar.operation", "write" + )); + when(context.getConfig(TX_IATP_DEFAULT_SCOPE_PREFIX)).thenReturn(cfg); + extension.initialize(context); + + var expectedScopes = Set.of("org.test.alias.foo:FooCredential:read", "org.test.alias.bar:BarCredential:write"); + + verify(policyEngine).registerPostValidator(eq(CATALOG_REQUEST_SCOPE), argThat(new ScopeMatcher(expectedScopes))); + verify(policyEngine).registerPostValidator(eq(NEGOTIATION_REQUEST_SCOPE), argThat(new ScopeMatcher(expectedScopes))); + verify(policyEngine).registerPostValidator(eq(TRANSFER_PROCESS_REQUEST_SCOPE), argThat(new ScopeMatcher(expectedScopes))); + } + + @Test + void initialize_fails_withBadConfiguredScopes(ServiceExtensionContext context, IatpScopeExtension extension) { + var cfg = ConfigFactory.fromMap(Map.of( + "foo.alias", "org.test.alias.foo" + )); + when(context.getConfig(TX_IATP_DEFAULT_SCOPE_PREFIX)).thenReturn(cfg); + + assertThatThrownBy(() -> extension.initialize(context)).isInstanceOf(EdcException.class); + } + + private record ScopeMatcher(Set scopes) implements ArgumentMatcher { + + @Override + public boolean matches(DefaultScopeExtractor defaultScopeExtractor) { + return defaultScopeExtractor.getDefaultScopes().containsAll(scopes); + } + } +} diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java new file mode 100644 index 000000000..a29a1cb85 --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp.scope; + +import org.eclipse.edc.policy.engine.spi.PolicyContextImpl; +import org.eclipse.edc.policy.model.Policy; +import org.eclipse.edc.spi.EdcException; +import org.eclipse.edc.spi.iam.TokenParameters; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.Set; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +public class DefaultScopeExtractorTest { + + private static final Set SCOPES = Set.of("scope1", "scope2"); + private DefaultScopeExtractor extractor; + + @BeforeEach + void setup() { + extractor = new DefaultScopeExtractor(SCOPES); + } + + @Test + void verify_applyExtractor() { + var builder = TokenParameters.Builder.newInstance(); + var ctx = PolicyContextImpl.Builder.newInstance().additional(TokenParameters.Builder.class, builder).build(); + extractor.apply(Policy.Builder.newInstance().build(), ctx); + + assertThat(builder.build().getScope().split(" ")).contains("scope1", "scope2"); + } + + @Test + void verify_applyExtractorFails_whenTokenParamsBuilderMissing() { + var ctx = PolicyContextImpl.Builder.newInstance().build(); + assertThatThrownBy(() -> extractor.apply(Policy.Builder.newInstance().build(), ctx)) + .isInstanceOf(EdcException.class) + .hasMessageContaining("not set in policy context"); + + } +} diff --git a/edc-tests/e2e-tests/build.gradle.kts b/edc-tests/e2e-tests/build.gradle.kts index 308142608..4cbd168c5 100644 --- a/edc-tests/e2e-tests/build.gradle.kts +++ b/edc-tests/e2e-tests/build.gradle.kts @@ -38,6 +38,8 @@ dependencies { testImplementation(libs.edc.spi.dataplane.selector) testImplementation(libs.edc.ext.jsonld) testImplementation(libs.edc.dsp) + testImplementation(libs.edc.identity.core.did) + testImplementation(libs.edc.ih.spi.store) testImplementation(testFixtures(libs.edc.sql.core)) testImplementation(testFixtures(libs.edc.api.management.test.fixtures)) testImplementation(libs.awaitility) @@ -46,9 +48,12 @@ dependencies { testImplementation(libs.testcontainers.junit) testImplementation(libs.testcontainers.postgres) testImplementation(libs.testcontainers.vault) + testImplementation(libs.bouncyCastle.bcpkixJdk18on) testCompileOnly(project(":edc-tests:runtime:extensions")) testCompileOnly(project(":edc-tests:runtime:runtime-memory")) + testCompileOnly(project(":edc-tests:runtime:iatp:runtime-memory-sts")) + testCompileOnly(project(":edc-tests:runtime:iatp:runtime-memory-iatp-ih")) testCompileOnly(project(":edc-tests:runtime:runtime-memory-ssi")) testCompileOnly(project(":edc-tests:runtime:runtime-postgresql")) @@ -59,6 +64,7 @@ dependencies { testFixturesImplementation(libs.edc.spi.contract) testFixturesImplementation(project(":spi:edr-spi")) testFixturesImplementation(project(":edc-extensions:bpn-validation:bpn-validation-spi")) + } // do not publish diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java new file mode 100644 index 000000000..aa87f9091 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.did; + +import org.eclipse.edc.iam.did.spi.document.DidDocument; +import org.eclipse.edc.iam.did.spi.resolution.DidResolver; +import org.eclipse.edc.spi.result.Result; +import org.jetbrains.annotations.NotNull; + +import java.util.HashMap; +import java.util.Map; +import java.util.Optional; + +/** + * Implementation of {@link DidResolver} for `did:example` with local cache (for testing) + */ +public class DidExampleResolver implements DidResolver { + + private final Map cache = new HashMap<>(); + + public DidExampleResolver() { + } + + @Override + public @NotNull String getMethod() { + return "example"; + } + + @Override + public @NotNull Result resolve(String did) { + + var ix = did.indexOf("#"); + if (ix > 0) { + did = did.substring(0, ix); + } + + return Optional.ofNullable(cache.get(did)) + .map(Result::success) + .orElseGet(() -> Result.failure("Failed to fetch did")); + } + + public void addCached(String did, DidDocument document) { + cache.put(did, document); + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java new file mode 100644 index 000000000..bc690b1ab --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.helpers; + +import org.bouncycastle.openssl.jcajce.JcaPEMWriter; +import org.eclipse.edc.spi.EdcException; + +import java.io.IOException; +import java.io.StringWriter; +import java.security.Key; + +public class IatpHelperFunctions { + + /** + * Returns the Pem representation of a {@link Key} + * + * @param key The input key + * @return The pem encoded key + */ + public static String toPemEncoded(Key key) { + var writer = new StringWriter(); + try (var jcaPEMWriter = new JcaPEMWriter(writer)) { + jcaPEMWriter.writeObject(key); + } catch (IOException e) { + throw new EdcException("Unable to convert private in PEM format ", e); + } + return writer.toString(); + } + +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java index 10fab82af..eed7cfe80 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java @@ -34,7 +34,7 @@ public class ParticipantRuntime extends EdcRuntimeExtension implements BeforeAll public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map properties) { super(moduleName, runtimeName, properties); - if (!properties.containsKey("tx.ssi.miw.url")) { + if (!properties.containsKey("tx.ssi.miw.url") && !properties.containsKey("edc.iam.issuer.id")) { this.registerServiceMock(IdentityService.class, new MockBpnIdentityService(bpn)); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java index 5ad1b3015..8fa08b996 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java @@ -73,7 +73,7 @@ public void storeBusinessPartner(String bpn, String... groups) { .then() .statusCode(204); } - + /** * The BPN/ID of the participant * diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java new file mode 100644 index 000000000..d8264ef56 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.lifecycle.tx.iatp; + +import com.nimbusds.jose.JOSEException; +import com.nimbusds.jose.jwk.JWK; +import org.eclipse.edc.iam.did.spi.document.DidDocument; +import org.eclipse.edc.iam.did.spi.document.VerificationMethod; +import org.eclipse.edc.junit.testfixtures.TestUtils; + +import java.util.List; + +/** + * Dataspace issuer configurations + */ +public class DataspaceIssuer { + + public static final String DATASPACE_ISSUER = "did:example:dataspace_issuer"; + + private static final String KEY_ID = "#key1"; + + private final DidDocument didDocument; + + public DataspaceIssuer() { + didDocument = generateDidDocument(); + } + + public String didUrl() { + return DATASPACE_ISSUER; + } + + public DidDocument didDocument() { + return didDocument; + } + + public String verificationId() { + return DATASPACE_ISSUER + KEY_ID; + } + + private DidDocument generateDidDocument() { + var key = TestUtils.getResourceFileContentAsString("ec-p256-public.pem"); + try { + var jwk = JWK.parseFromPEMEncodedObjects(key); + var verificationMethod = VerificationMethod.Builder.newInstance() + .id(verificationId()) + .controller(didUrl()) + .type("JsonWebKey2020") + .publicKeyJwk(jwk.toPublicJWK().toJSONObject()) + .build(); + + return DidDocument.Builder.newInstance() + .id(didUrl()) + .authentication(List.of(KEY_ID)) + .verificationMethod(List.of(verificationMethod)) + .build(); + } catch (JOSEException e) { + throw new RuntimeException(e); + } + + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java new file mode 100644 index 000000000..71a295193 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java @@ -0,0 +1,157 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.lifecycle.tx.iatp; + +import com.nimbusds.jose.jwk.Curve; +import com.nimbusds.jose.jwk.ECKey; +import org.eclipse.edc.iam.did.spi.document.DidDocument; +import org.eclipse.edc.iam.did.spi.document.Service; +import org.eclipse.edc.iam.did.spi.document.VerificationMethod; +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; +import org.testcontainers.shaded.org.bouncycastle.jce.provider.BouncyCastleProvider; + +import java.net.URI; +import java.security.InvalidAlgorithmParameterException; +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.NoSuchAlgorithmException; +import java.security.interfaces.ECPrivateKey; +import java.security.interfaces.ECPublicKey; +import java.security.spec.ECGenParameterSpec; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Stream; + +import static java.lang.String.format; +import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.toPemEncoded; +import static org.eclipse.tractusx.edc.lifecycle.tx.iatp.DataspaceIssuer.DATASPACE_ISSUER; + +/** + * Wrapper of {@link TxParticipant} with IATP specific configurations + */ +public class IatpParticipant { + + public static final String KEY_ID = "#key1"; + public static final String DID_EXAMPLE = "did:example:"; + protected final URI csService = URI.create("http://localhost:" + getFreePort() + "/api/resolution"); + private final TxParticipant participant; + private final URI stsUri; + private final KeyPair keyPair; + private final DidDocument didDocument; + private final String privateKey; + private final String publicKey; + + public IatpParticipant(TxParticipant participant, URI stsUri) { + this.participant = participant; + this.stsUri = stsUri; + this.keyPair = generateKeyPair(); + this.didDocument = generateDidDocument(); + this.privateKey = toPemEncoded(keyPair.getPrivate()); + this.publicKey = toPemEncoded(keyPair.getPublic()); + } + + public String getBpn() { + return participant.getBpn(); + } + + public String getName() { + return participant.getName(); + } + + public Map iatpConfiguration(TxParticipant... others) { + var did = DID_EXAMPLE + participant.getName().toLowerCase(); + var iatpConfiguration = new HashMap<>(participant.getConfiguration()) { + { + + put("edc.iam.sts.oauth.token.url", stsUri + "/token"); + put("edc.iam.sts.oauth.client.id", did); + put("edc.iam.sts.oauth.client.secret.alias", "client_secret_alias"); + put("edc.iam.issuer.id", did); + put("edc.ih.iam.id", participant.getBpn()); + put("tx.vault.seed.secrets", "client_secret_alias:client_secret"); + put("edc.ih.iam.publickey.pem", publicKey()); + put("web.http.resolution.port", String.valueOf(csService.getPort())); + put("web.http.resolution.path", csService.getPath()); + put("edc.agent.identity.key", "client_id"); + put("edc.iam.trusted-issuer.issuer.id", DATASPACE_ISSUER); + } + }; + + Stream.concat(Stream.of(participant), Arrays.stream(others)).forEach(p -> { + var prefix = format("tx.iam.iatp.audiences.%s", p.getName().toLowerCase()); + iatpConfiguration.put(prefix + ".from", p.getProtocolEndpoint().getUrl().toString()); + iatpConfiguration.put(prefix + ".to", p.getBpn()); + }); + return iatpConfiguration; + } + + public String didUrl() { + return DID_EXAMPLE + participant.getName().toLowerCase(); + } + + public String verificationId() { + return didUrl() + KEY_ID; + } + + public String privateKey() { + return privateKey; + } + + public String publicKey() { + return publicKey; + } + + public DidDocument didDocument() { + return didDocument; + } + + private DidDocument generateDidDocument() { + var service = new Service(); + service.setId("#credential-service"); + service.setType("CredentialService"); + service.setServiceEndpoint(csService.toString()); + + var ecKey = new ECKey.Builder(Curve.P_256, (ECPublicKey) keyPair.getPublic()) + .privateKey((ECPrivateKey) keyPair.getPrivate()) + .build(); + + var verificationMethod = VerificationMethod.Builder.newInstance() + .id(verificationId()) + .controller(didUrl()) + .type("JsonWebKey2020") + .publicKeyJwk(ecKey.toPublicJWK().toJSONObject()) + .build(); + + return DidDocument.Builder.newInstance() + .id(didUrl()) + .service(List.of(service)) + .authentication(List.of("#key1")) + .verificationMethod(List.of(verificationMethod)) + .build(); + } + + private KeyPair generateKeyPair() { + try { + KeyPairGenerator gen = KeyPairGenerator.getInstance("EC", new BouncyCastleProvider()); + gen.initialize(new ECGenParameterSpec("secp256r1")); + return gen.generateKeyPair(); + } catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException e) { + throw new RuntimeException(e); + } + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java new file mode 100644 index 000000000..c91c28268 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java @@ -0,0 +1,74 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.lifecycle.tx.iatp; + +import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; + +import java.net.URI; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static java.lang.String.format; +import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; + +/** + * STS configurations + */ +public class SecureTokenService { + + protected final URI stsUri = URI.create("http://localhost:" + getFreePort() + "/api/v1/sts"); + protected final TxParticipant stsParticipant = TxParticipant.Builder.newInstance() + .name("STS") + .id("STS") + .build(); + + public Map stsConfiguration(IatpParticipant... participants) { + var stsConfiguration = new HashMap() { + { + + put("web.http.sts.port", String.valueOf(stsUri.getPort())); + put("web.http.sts.path", stsUri.getPath()); + put("edc.dataplane.token.validation.endpoint", ""); + put("tx.vault.seed.secrets", "client_secret_alias:client_secret"); + } + }; + + Arrays.stream(participants).forEach(participant -> { + var prefix = format("edc.iam.sts.clients.%s", participant.getName().toLowerCase()); + stsConfiguration.put(prefix + ".name", participant.getName()); + stsConfiguration.put(prefix + ".id", participant.didUrl()); + stsConfiguration.put(prefix + ".client_id", participant.getBpn()); + stsConfiguration.put(prefix + ".secret.alias", "client_secret_alias"); + stsConfiguration.put(prefix + ".private-key.alias", participant.verificationId()); + }); + + var baseConfiguration = stsParticipant.getConfiguration(); + stsConfiguration.putAll(baseConfiguration); + return stsConfiguration; + } + + public String getBpn() { + return stsParticipant.getBpn(); + } + + public String getName() { + return stsParticipant.getName(); + } + + public URI stsUri() { + return stsUri; + } +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java new file mode 100644 index 000000000..da4f1adfc --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.tests.transfer; + +import jakarta.json.JsonObject; +import org.eclipse.edc.iam.did.spi.document.DidDocument; +import org.eclipse.edc.iam.did.spi.resolution.DidResolverRegistry; +import org.eclipse.edc.identityhub.spi.generator.PresentationCreatorRegistry; +import org.eclipse.edc.identitytrust.model.CredentialFormat; +import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.eclipse.edc.spi.security.Vault; +import org.eclipse.tractusx.edc.did.DidExampleResolver; +import org.eclipse.tractusx.edc.lifecycle.ParticipantRuntime; +import org.eclipse.tractusx.edc.lifecycle.tx.iatp.DataspaceIssuer; +import org.eclipse.tractusx.edc.lifecycle.tx.iatp.IatpParticipant; +import org.eclipse.tractusx.edc.lifecycle.tx.iatp.SecureTokenService; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.extension.RegisterExtension; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; + +@EndToEndTest +public class IatpHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsumerPullWithProxyTest { + + protected static final DataspaceIssuer DATASPACE_ISSUER_PARTICIPANT = new DataspaceIssuer(); + protected static final SecureTokenService STS_PARTICIPANT = new SecureTokenService(); + + protected static final IatpParticipant PLATO_IATP = new IatpParticipant(PLATO, STS_PARTICIPANT.stsUri()); + + @RegisterExtension + protected static final ParticipantRuntime PLATO_RUNTIME = new ParticipantRuntime( + ":edc-tests:runtime:iatp:runtime-memory-iatp-ih", + PLATO.getName(), + PLATO.getBpn(), + PLATO_IATP.iatpConfiguration(SOKRATES) + ); + + protected static final IatpParticipant SOKRATES_IATP = new IatpParticipant(SOKRATES, STS_PARTICIPANT.stsUri()); + + @RegisterExtension + protected static final ParticipantRuntime SOKRATES_RUNTIME = new ParticipantRuntime( + ":edc-tests:runtime:iatp:runtime-memory-iatp-ih", + SOKRATES.getName(), + SOKRATES.getBpn(), + SOKRATES_IATP.iatpConfiguration(PLATO) + ); + + @RegisterExtension + protected static final ParticipantRuntime STS_RUNTIME = new ParticipantRuntime( + ":edc-tests:runtime:iatp:runtime-memory-sts", + STS_PARTICIPANT.getName(), + STS_PARTICIPANT.getBpn(), + STS_PARTICIPANT.stsConfiguration(SOKRATES_IATP, PLATO_IATP) + ); + + @BeforeAll + static void prepare() { + + // create the DIDs cache + var dids = new HashMap(); + dids.put(DATASPACE_ISSUER_PARTICIPANT.didUrl(), DATASPACE_ISSUER_PARTICIPANT.didDocument()); + dids.put(SOKRATES_IATP.didUrl(), SOKRATES_IATP.didDocument()); + dids.put(PLATO_IATP.didUrl(), PLATO_IATP.didDocument()); + + configureParticipant(SOKRATES_IATP, SOKRATES_RUNTIME, dids); + configureParticipant(PLATO_IATP, PLATO_RUNTIME, dids); + + } + + private static void configureParticipant(IatpParticipant participant, ParticipantRuntime runtime, Map dids) { + STS_RUNTIME.getContext().getService(Vault.class).storeSecret(participant.verificationId(), participant.privateKey()); + var vault = runtime.getContext().getService(Vault.class); + var presentationRegistry = runtime.getContext().getService(PresentationCreatorRegistry.class); + var didResolverRegistry = runtime.getContext().getService(DidResolverRegistry.class); + var didResolver = new DidExampleResolver(); + dids.forEach(didResolver::addCached); + didResolverRegistry.register(didResolver); + + vault.storeSecret(participant.verificationId(), participant.privateKey()); + presentationRegistry.addKeyId(participant.verificationId(), CredentialFormat.JSON_LD); + presentationRegistry.addKeyId(participant.verificationId(), CredentialFormat.JWT); + } + + @BeforeEach + void setup() throws IOException { + super.setup(); + + } + + @Override + protected JsonObject createTestPolicy(String bpn) { + return frameworkPolicy(Map.of(TX_NAMESPACE + "Membership", "active")); + } + +} diff --git a/edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem b/edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem new file mode 100644 index 000000000..b1a6b1534 --- /dev/null +++ b/edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem @@ -0,0 +1,4 @@ +-----BEGIN PUBLIC KEY----- +MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1l0Lof0a1yBc8KXhesAnoBvxZw5r +oYnkAXuqCYfNK3ex+hMWFuiXGUxHlzShAehR6wvwzV23bbC0tcFcVgW//A== +-----END PUBLIC KEY----- diff --git a/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts b/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts new file mode 100644 index 000000000..4750c73fa --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +plugins { + `java-library` +} + +dependencies { + implementation(libs.edc.ih.spi.store) +} + +// do not publish +edcBuild { + publish.set(false) +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java new file mode 100644 index 000000000..13de6e7c6 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp; + +import org.eclipse.edc.identitytrust.AudienceResolver; + +import java.util.Map; +import java.util.Optional; + +/** + * Implementations for {@link AudienceResolver} that maps connector URL to participant ID + */ +public class TestAudienceMapper implements AudienceResolver { + + private final Map audienceMapping; + + public TestAudienceMapper(Map audienceMapping) { + this.audienceMapping = audienceMapping; + } + + @Override + public String resolve(String s) { + return Optional.ofNullable(audienceMapping.get(s)).orElse(s); + } + +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java new file mode 100644 index 000000000..db2c5b071 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp; + +import org.eclipse.edc.identitytrust.AudienceResolver; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Provider; +import org.eclipse.edc.runtime.metamodel.annotation.Setting; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; + +import java.util.HashMap; + +@Extension("Audience mapper extension") +public class TestAudienceMapperExtension implements ServiceExtension { + + @Setting + private static final String TX_IATP_AUDIENCES = "tx.iam.iatp.audiences"; + + @Provider + public AudienceResolver audienceResolver(ServiceExtensionContext context) { + + var audienceMapping = new HashMap(); + context.getConfig(TX_IATP_AUDIENCES).partition().forEach(partition -> { + audienceMapping.put(partition.getString("from"), partition.getString("to")); + }); + + return new TestAudienceMapper(audienceMapping); + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java new file mode 100644 index 000000000..c944f2de3 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.ih; + +import org.eclipse.edc.identityhub.spi.ScopeToCriterionTransformer; +import org.eclipse.edc.identityhub.spi.store.CredentialStore; +import org.eclipse.edc.identityhub.spi.store.model.VerifiableCredentialResource; +import org.eclipse.edc.identitytrust.TrustedIssuerRegistry; +import org.eclipse.edc.identitytrust.model.CredentialFormat; +import org.eclipse.edc.identitytrust.model.CredentialSubject; +import org.eclipse.edc.identitytrust.model.Issuer; +import org.eclipse.edc.identitytrust.model.VerifiableCredential; +import org.eclipse.edc.identitytrust.model.VerifiableCredentialContainer; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.runtime.metamodel.annotation.Provider; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; + +import java.io.IOException; +import java.time.Instant; +import java.util.Map; + +@Extension("Identity Hub extension for testing") +public class IdentityHubExtension implements ServiceExtension { + + public static final String DATASPACE_ISSUER = "did:example:dataspace_issuer"; + + @Inject + private CredentialStore credentialStore; + + @Inject + private TrustedIssuerRegistry registry; + + @Override + public void initialize(ServiceExtensionContext context) { + + var did = context.getConfig().getString("edc.iam.issuer.id"); + + var credential = VerifiableCredential.Builder.newInstance() + .type("MembershipCredential") + .credentialSubject(CredentialSubject.Builder.newInstance() + .claim("holderIdentifier", context.getParticipantId()) + .build()) + .issuer(new Issuer(DATASPACE_ISSUER, Map.of())) + .issuanceDate(Instant.now()) + .build(); + + var credentialResource = VerifiableCredentialResource.Builder.newInstance() + .issuerId(DATASPACE_ISSUER) + .holderId(did) + .credential(new VerifiableCredentialContainer(getCredential(context.getParticipantId()), CredentialFormat.JSON_LD, credential)) + .build(); + + credentialStore.create(credentialResource); + + } + + @Provider + public ScopeToCriterionTransformer scopeToCriterionTransformer() { + return new TxScopeToCriterionTransformer(); + } + + private String getCredential(String participantId) { + try { + var content = getClass().getClassLoader().getResourceAsStream("credentials/" + participantId.toLowerCase() + "-membership.json").readAllBytes(); + return new String(content); + } catch (IOException e) { + throw new RuntimeException(e); + } + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java new file mode 100644 index 000000000..5efb2c2a2 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.ih; + +import org.eclipse.edc.identityhub.spi.ScopeToCriterionTransformer; +import org.eclipse.edc.spi.query.Criterion; +import org.eclipse.edc.spi.result.Result; + +import java.util.List; + +import static org.eclipse.edc.spi.result.Result.failure; +import static org.eclipse.edc.spi.result.Result.success; + +/** + * Implementation of {@link ScopeToCriterionTransformer} similar to the upstream one that maps tx scopes + * to {@link Criterion} for querying the credentials (Just for testing) + */ +public class TxScopeToCriterionTransformer implements ScopeToCriterionTransformer { + public static final String TYPE_OPERAND = "verifiableCredential.credential.types"; + public static final String ALIAS_LITERAL = "org.eclipse.tractusx.vc.type"; + public static final String CONTAINS_OPERATOR = "contains"; + private static final String SCOPE_SEPARATOR = ":"; + private final List allowedOperations = List.of("read", "*", "all"); + + @Override + public Result transform(String scope) { + var tokens = tokenize(scope); + if (tokens.failed()) { + return failure("Scope string cannot be converted: %s".formatted(tokens.getFailureDetail())); + } + var credentialType = tokens.getContent()[1]; + return success(new Criterion(TYPE_OPERAND, CONTAINS_OPERATOR, credentialType)); + } + + protected Result tokenize(String scope) { + if (scope == null) return failure("Scope was null"); + + var tokens = scope.split(SCOPE_SEPARATOR); + if (tokens.length != 3) { + return failure("Scope string has invalid format."); + } + if (!ALIAS_LITERAL.equalsIgnoreCase(tokens[0])) { + return failure("Scope alias MUST be %s but was %s".formatted(ALIAS_LITERAL, tokens[0])); + } + if (!allowedOperations.contains(tokens[2])) { + return failure("Invalid scope operation: " + tokens[2]); + } + + return success(tokens); + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension new file mode 100644 index 000000000..5c5874a98 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -0,0 +1,16 @@ +# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# +# Contributors: +# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# +# + +org.eclipse.tractusx.edc.iatp.TestAudienceMapperExtension +org.eclipse.tractusx.edc.iatp.ih.IdentityHubExtension \ No newline at end of file diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json new file mode 100644 index 000000000..56dda069d --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json @@ -0,0 +1,30 @@ +{ + "@context": [ + "https://w3id.org/security/suites/jws-2020/v1", + "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json", + "https://www.w3.org/2018/credentials/v1" + ], + "type": [ + "VerifiableCredential", + "MembershipCredential" + ], + "id": "did:example:plato#62cfd49b-5743-4966-bff3-750390c4be0a", + "issuer": "did:example:dataspace_issuer", + "issuanceDate": "2024-01-03T15:45:12Z", + "expirationDate": "2025-01-01T00:00:00Z", + "credentialSubject": { + "holderIdentifier": "PLATO-BPN", + "startTime": "2024-01-03T15:45:12.567936326Z", + "id": "did:example:plato", + "memberOf": "Catena-X", + "type": "MembershipCredential", + "status": "Active" + }, + "sec:proof": { + "type": "JsonWebSignature2020", + "created": "2022-12-31T23:00:00Z", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:example:dataspace_issuer#key-1", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NiJ9..gh5myaRw72L0c8MOtgwhbctX1VrGsOswZXZE6DcnWZggyiqSO4Ov6XNKLcwJYq7-JSxv45o7OLy8rnRWjG-yDQ" + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json new file mode 100644 index 000000000..136eb8e18 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json @@ -0,0 +1,30 @@ +{ + "@context": [ + "https://w3id.org/security/suites/jws-2020/v1", + "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json", + "https://www.w3.org/2018/credentials/v1" + ], + "type": [ + "VerifiableCredential", + "MembershipCredential" + ], + "id": "did:example:sokrates#62cfd49b-5743-4966-bff3-750390c4be0a", + "issuer": "did:example:dataspace_issuer", + "issuanceDate": "2024-01-03T15:45:12Z", + "expirationDate": "2025-01-01T00:00:00Z", + "credentialSubject": { + "holderIdentifier": "SOKRATES-BPN", + "startTime": "2024-01-03T15:45:12.567936326Z", + "id": "did:example:sokrates", + "memberOf": "Catena-X", + "type": "MembershipCredential", + "status": "Active" + }, + "sec:proof": { + "type": "JsonWebSignature2020", + "created": "2022-12-31T23:00:00Z", + "proofPurpose": "assertionMethod", + "verificationMethod": "did:example:dataspace_issuer#key-1", + "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NiJ9..jBbYDdDuWLEgCVrtEvV_eCxWWK26Hxf56nEzRVaNS68jNx_oXLhtbQo-Jd-Th2d1q1g9gBRRuRlqmyKBp5rirw" + } +} diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/README.md b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/README.md new file mode 100644 index 000000000..2f9593a75 --- /dev/null +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/README.md @@ -0,0 +1,3 @@ +# In-Memory Runtime for Testing Purposes + +This module provides a very small, purely in-mem runtime to execute tests against. Not intended for anything other than testing! diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts new file mode 100644 index 000000000..f74c2a928 --- /dev/null +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +plugins { + `java-library` + id("application") +} + +dependencies { + + // use basic (all in-mem) control plane + implementation(project(":edc-controlplane:edc-controlplane-base")) { + exclude(module = "data-encryption") + exclude(module = "ssi-identity-core") + exclude(module = "ssi-miw-credential-client") + exclude(module = "ssi-identity-extractor") + exclude(module = "cx-policy") + } + implementation(project(":core:json-ld-core")) + implementation(project(":edc-extensions:iatp:tx-iatp")) + + implementation(project(":edc-tests:runtime:extensions")) + implementation(project(":edc-tests:runtime:iatp:iatp-extensions")) + + // use basic (all in-mem) data plane + runtimeOnly(project(":edc-dataplane:edc-dataplane-base")) { + exclude("org.eclipse.edc", "api-observability") + } + + implementation(libs.edc.core.controlplane) + implementation(libs.edc.identity.core.trust) + implementation(libs.edc.identity.core.did) + implementation(libs.edc.identity.trust.transform) + implementation(libs.edc.identity.trust.sts.remote) + implementation(libs.edc.identity.trust.issuers.configuration) + implementation(libs.edc.auth.oauth2.client) + implementation(libs.edc.ih.api) + implementation(libs.edc.ih.credentials) + implementation(libs.edc.ih.pkprovider) + + // for the controller + implementation(libs.jakarta.rsApi) +} + +application { + mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") +} + +edcBuild { + publish.set(false) +} diff --git a/edc-tests/runtime/iatp/runtime-memory-sts/README.md b/edc-tests/runtime/iatp/runtime-memory-sts/README.md new file mode 100644 index 000000000..2f9593a75 --- /dev/null +++ b/edc-tests/runtime/iatp/runtime-memory-sts/README.md @@ -0,0 +1,3 @@ +# In-Memory Runtime for Testing Purposes + +This module provides a very small, purely in-mem runtime to execute tests against. Not intended for anything other than testing! diff --git a/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts new file mode 100644 index 000000000..3c5fb41f8 --- /dev/null +++ b/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +plugins { + `java-library` + id("application") +} + +dependencies { + + // use basic (all in-mem) control plane + implementation(project(":edc-controlplane:edc-controlplane-base")) { + exclude(module = "data-encryption") + exclude(module = "ssi-identity-core") + exclude(module = "ssi-miw-credential-client") + exclude(module = "ssi-identity-extractor") + exclude(module = "cx-policy") + } + implementation(project(":core:json-ld-core")) + implementation(project(":edc-tests:runtime:extensions")) + + implementation(libs.edc.iam.mock) + // for the controller + implementation(libs.jakarta.rsApi) + implementation(libs.bundles.edc.sts) + +} + +application { + mainClass.set("org.eclipse.edc.boot.system.runtime.BaseRuntime") +} + +edcBuild { + publish.set(false) +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c91ff4434..fd64b1e28 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -109,6 +109,30 @@ edc-dpf-awss3 = { module = "org.eclipse.edc:data-plane-aws-s3", version.ref = "e edc-controlplane-callback-dispatcher-event = { module = "org.eclipse.edc:callback-event-dispatcher", version.ref = "edc" } edc-controlplane-callback-dispatcher-http = { module = "org.eclipse.edc:callback-http-dispatcher", version.ref = "edc" } +# IATP Modules + +edc-identity-core-trust = { module = "org.eclipse.edc:identity-trust-core", version.ref = "edc" } +edc-identity-core-did = { module = "org.eclipse.edc:identity-did-core", version.ref = "edc" } +edc-identity-vc-ldp = { module = "org.eclipse.edc:ldp-verifiable-credentials", version.ref = "edc" } +edc-identity-vc-jwt = { module = "org.eclipse.edc:jwt-verifiable-credentials", version.ref = "edc" } +edc-identity-jws2020 = { module = "org.eclipse.edc:jws2020", version.ref = "edc" } +edc-identity-trust-transform = { module = "org.eclipse.edc:identity-trust-transform", version.ref = "edc" } +edc-identity-trust-sts-remote = { module = "org.eclipse.edc:identity-trust-sts-remote-core", version.ref = "edc" } +edc-identity-trust-issuers-configuration = { module = "org.eclipse.edc:identity-trust-issuers-configuration", version.ref = "edc" } + + +# IATP for Testing + +edc-identity-trust-sts-core = { module = "org.eclipse.edc:identity-trust-sts-core", version.ref = "edc" } +edc-identity-trust-sts-api = { module = "org.eclipse.edc:identity-trust-sts-api", version.ref = "edc" } +edc-identity-trust-sts-client-configuration = { module = "org.eclipse.edc:identity-trust-sts-client-configuration", version.ref = "edc" } + +## IH for testing + +edc-ih-api = { module = "org.eclipse.edc:identity-hub-api", version.ref = "edc" } +edc-ih-credentials = { module = "org.eclipse.edc:identity-hub-credentials", version.ref = "edc" } +edc-ih-pkprovider = { module = "org.eclipse.edc:public-key-provider", version.ref = "edc" } +edc-ih-spi-store = { module = "org.eclipse.edc:identity-hub-store-spi", version.ref = "edc" } # DPF modules edc-spi-dataplane-dataplane = { module = "org.eclipse.edc:data-plane-spi", version.ref = "edc" } @@ -169,3 +193,4 @@ edc-connector = ["edc.boot", "edc.core-connector", "edc.core-controlplane", "edc edc-dpf = ["edc.dpf-transfer", "edc.dpf-selector-core", "edc.spi-dataplane-selector"] edc-sqlstores = ["edc.sql-assetindex", "edc.sql-contract-definition", "edc.sql-contract-negotiation", "edc.sql-transferprocess", "edc.sql-policydef", "edc.sql-policy-monitor"] edc-monitoring = ["edc.micrometer-core", "edc.micrometer-jersey", "edc.micrometer-jetty"] +edc-sts = ["edc-identity-trust-sts-core", "edc-identity-trust-sts-api", "edc-identity-trust-sts-client-configuration"] diff --git a/settings.gradle.kts b/settings.gradle.kts index 35c9e4497..3a97f581c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -52,6 +52,7 @@ include("edc-extensions:ssi:ssi-identity-core") include("edc-extensions:ssi:ssi-miw-credential-client") include("edc-extensions:ssi:jws2020-crypto-suite") include(":edc-extensions:ssi:ssi-identity-extractor") +include(":edc-extensions:iatp:tx-iatp") // test modules include(":edc-tests:e2e-tests") @@ -62,6 +63,9 @@ include(":edc-tests:runtime:dataplane-cloud") include(":edc-tests:runtime:runtime-memory-ssi") include(":edc-tests:runtime:runtime-postgresql") include(":edc-tests:runtime:runtime-postgresql-hashicorp") +include(":edc-tests:runtime:iatp:runtime-memory-iatp-ih") +include(":edc-tests:runtime:iatp:runtime-memory-sts") +include(":edc-tests:runtime:iatp:iatp-extensions") include(":edc-tests:edc-dataplane:edc-dataplane-proxy-e2e") include(":edc-tests:edc-dataplane:cloud-transfer-tests") diff --git a/spi/ssi-spi/build.gradle.kts b/spi/ssi-spi/build.gradle.kts index c1733a4cc..9285390e3 100644 --- a/spi/ssi-spi/build.gradle.kts +++ b/spi/ssi-spi/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { implementation(libs.jakartaJson) testFixturesImplementation(libs.jacksonJsonP) + testFixturesImplementation(libs.jackson.datatypeJsr310) testFixturesImplementation(libs.titaniumJsonLd) testFixturesImplementation(libs.jackson.datatypeJsr310) } From de03ae799dc84e5edf241ba9e0f65965b5dc6b20 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:07:47 +0100 Subject: [PATCH 38/83] chore(deps): bump aws from 2.22.9 to 2.22.13 (#978) * chore(deps): bump aws from 2.22.9 to 2.22.13 Bumps `aws` from 2.22.9 to 2.22.13. Updates `software.amazon.awssdk:s3` from 2.22.9 to 2.22.13 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.22.9 to 2.22.13 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 329449f63..35809c09d 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -488,59 +488,59 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.13, Apache-2.0, approved, #12618 maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.13, Apache-2.0, approved, #12633 maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/arns/2.22.13, Apache-2.0, approved, #12647 maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/auth/2.22.13, Apache-2.0, approved, #12622 maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.13, Apache-2.0, approved, #12640 maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.13, Apache-2.0, approved, #12645 maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.13, Apache-2.0, approved, #12628 maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.13, Apache-2.0, approved, #12642 maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.13, Apache-2.0, approved, #12641 maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.13, Apache-2.0, approved, #12635 maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.13, Apache-2.0, approved, #12624 maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.13, Apache-2.0, approved, #12637 maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.13, Apache-2.0, approved, #12638 maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.13, Apache-2.0, approved, #12626 maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.13, Apache-2.0, approved, #12627 maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 maven/mavencentral/software.amazon.awssdk/iam/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.13, Apache-2.0, approved, #12636 maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.13, Apache-2.0, approved, #12646 maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.13, Apache-2.0, approved, #12649 maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.13, Apache-2.0, approved, #12644 maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.13, Apache-2.0, approved, #12620 maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.13, Apache-2.0, approved, #12648 maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/regions/2.22.13, Apache-2.0, approved, #12643 maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.9, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.13, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.22.13, Apache-2.0, approved, #12630 maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.13, Apache-2.0, approved, #12639 maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 maven/mavencentral/software.amazon.awssdk/sts/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.13, Apache-2.0, approved, #12629 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/utils/2.22.13, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fd64b1e28..8b2319307 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.11.0" testcontainers = "1.19.3" -aws = "2.22.9" +aws = "2.22.13" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.25.0" From 8a038c244236ad1c5db1c8cb48314e0de0383339 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 9 Jan 2024 13:34:56 +0100 Subject: [PATCH 39/83] chore(deps): bump org.assertj:assertj-core from 3.25.0 to 3.25.1 (#974) * chore(deps): bump org.assertj:assertj-core from 3.25.0 to 3.25.1 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.0 to 3.25.1. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.0...assertj-build-3.25.1) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 2 +- gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 35809c09d..189ef4305 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -221,7 +221,7 @@ maven/mavencentral/org.apache.sshd/sshd-core/2.11.0, Apache-2.0, approved, #1110 maven/mavencentral/org.apache.sshd/sshd-sftp/2.11.0, Apache-2.0, approved, #11103 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 -maven/mavencentral/org.assertj/assertj-core/3.25.0, Apache-2.0, approved, #12585 +maven/mavencentral/org.assertj/assertj-core/3.25.1, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.77, MIT AND CC0-1.0, approved, #11595 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8b2319307..0d1dd4ed3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ testcontainers = "1.19.3" aws = "2.22.13" rsApi = "3.1.0" jupiter = "5.10.0" -assertj = "3.25.0" +assertj = "3.25.1" titanium = "1.3.3" jackson = "2.16.1" jakarta-json = "2.0.1" From 59b355cc6af3176b0bfc92ba87ebd2809f7d285c Mon Sep 17 00:00:00 2001 From: arnoweiss Date: Thu, 11 Jan 2024 15:44:58 +0100 Subject: [PATCH 40/83] docs: add note on saas-deployment --- .../Development View/01_MGMT_API_Walkthrough/01_assets.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md b/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md index 8061c0118..81b5c8865 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md +++ b/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md @@ -102,6 +102,12 @@ have proven to enable an integration that's quite complete from a functional vie | `oauth2:clientId` | This is the clientId of the (technical) user that the credential was created for by the backend application. | no | null | | `oauth2:clientSecretKey` | The Data Provider must store his backend-issued client-secret in a Vault. The key under which the Data Plane can retrieve the secret's value is configured in this field. | no | null | +For all URLs that are registered (like the `tokenUrl` and the `baseUrl`) it is advisable to set them to a domain +controlled by the Data Provider himself. If the service is hosted by a Business Application Provider (like in a SaaS +scenario), that service should be redirected to through a proxy. That way, in a migration scenario, the existing Assets +can be preserved by reconfiguring the proxy to pointing to the new service. + + ## Notice This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). From 779f2ba2cd86746cee20beeb34938de2861cf1fd Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Mon, 15 Jan 2024 15:22:47 +0100 Subject: [PATCH 41/83] Tx IATP: Credential Constraint mapper (#979) * feat: add credential scope extractor * pr suggestions --- .../tractusx/edc/jsonld/JsonLdExtension.java | 4 +- .../document/businessPartnerData.json | 192 ------------------ edc-extensions/iatp/tx-iatp/build.gradle.kts | 3 +- ...on.java => IatpDefaultScopeExtension.java} | 9 +- .../iam/iatp/IatpScopeExtractorExtension.java | 43 ++++ .../edc/iam/iatp/TxIatpConstants.java | 29 +++ .../iatp/scope/CredentialScopeExtractor.java | 57 ++++++ .../iam/iatp/scope/DefaultScopeExtractor.java | 12 +- ...rg.eclipse.edc.spi.system.ServiceExtension | 3 +- ...ava => IatpDefaultScopeExtensionTest.java} | 14 +- .../iatp/IatpScopeExtractorExtensionTest.java | 45 ++++ .../scope/CredentialScopeExtractorTest.java | 51 +++++ edc-tests/e2e-tests/build.gradle.kts | 2 + .../edc/helpers/IatpHelperFunctions.java | 70 +++++++ .../edc/helpers/PolicyHelperFunctions.java | 1 + .../lifecycle/tx/iatp/DataspaceIssuer.java | 129 ++++++++++-- .../lifecycle/tx/iatp/IatpParticipant.java | 15 +- ...AbstractHttpConsumerPullWithProxyTest.java | 11 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 33 +++ ...HttpConsumerPullWithProxyInMemoryTest.java | 25 ++- ...HttpConsumerPullWithProxyInMemoryTest.java | 2 +- .../src/test/resources/ec-p256-public.pem | 4 - .../src/test/resources/env-files/env.docker | 2 +- .../iatp/iatp-extensions/build.gradle.kts | 2 + .../edc/iatp/CredentialsJsonLdExtension.java | 42 ++++ .../edc/iatp/ih/IdentityHubExtension.java | 56 +---- .../ih/TxScopeToCriterionTransformer.java | 15 +- .../BaseCredentialEvaluationFunction.java | 31 +++ .../CredentialPolicyEvaluationExtension.java | 78 +++++++ ...FrameworkCredentialEvaluationFunction.java | 69 +++++++ ...embershipCredentialEvaluationFunction.java | 86 ++++++++ ...rg.eclipse.edc.spi.system.ServiceExtension | 4 +- .../credentials/plato-bpn-membership.json | 30 --- .../credentials/sokrates-bpn-membership.json | 30 --- .../resources/cx-credentials-context.json | 48 +++++ .../tractusx/edc/edr/spi/CoreConstants.java | 4 +- 36 files changed, 865 insertions(+), 386 deletions(-) delete mode 100644 core/json-ld-core/src/main/resources/document/businessPartnerData.json rename edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/{IatpScopeExtension.java => IatpDefaultScopeExtension.java} (91%) create mode 100644 edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java create mode 100644 edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java create mode 100644 edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java rename edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/{IatpScopeExtensionTest.java => IatpDefaultScopeExtensionTest.java} (88%) create mode 100644 edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtensionTest.java create mode 100644 edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractorTest.java create mode 100644 edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java delete mode 100644 edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java delete mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json delete mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/resources/cx-credentials-context.json diff --git a/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java b/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java index b350d2f62..f8b129c5d 100644 --- a/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java +++ b/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java @@ -43,7 +43,6 @@ public class JsonLdExtension implements ServiceExtension { public static final String SECURITY_JWS_V1 = "https://w3id.org/security/suites/jws-2020/v1"; public static final String SECURITY_ED25519_V1 = "https://w3id.org/security/suites/ed25519-2020/v1"; - public static final String BUSINESS_PARTNER_DATA = "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json"; private static final String PREFIX = "document" + File.separator; private static final Map FILES = Map.of( CREDENTIALS_V_1, PREFIX + "credential-v1.jsonld", @@ -52,8 +51,7 @@ public class JsonLdExtension implements ServiceExtension { SECURITY_JWS_V1, PREFIX + "security-jws-2020.jsonld", SECURITY_ED25519_V1, PREFIX + "security-ed25519-2020.jsonld", TX_CONTEXT, PREFIX + "tx-v1.jsonld", - EDC_CONTEXT, PREFIX + "edc-v1.jsonld", - BUSINESS_PARTNER_DATA, PREFIX + "businessPartnerData.json"); + EDC_CONTEXT, PREFIX + "edc-v1.jsonld"); @Inject private JsonLd jsonLdService; diff --git a/core/json-ld-core/src/main/resources/document/businessPartnerData.json b/core/json-ld-core/src/main/resources/document/businessPartnerData.json deleted file mode 100644 index 3deface92..000000000 --- a/core/json-ld-core/src/main/resources/document/businessPartnerData.json +++ /dev/null @@ -1,192 +0,0 @@ -{ - "@context": { - "@version": 1.1, - "@protected": true, - "BpnCredential": { - "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#BpnCredential", - "@context": { - "@version": 1.1, - "@protected": true, - "id": "@id", - "type": "@type", - "bpn": "http://schema.org/identifier" - } - }, - "MembershipCredential": { - "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#MembershipCredential", - "@context": { - "@version": 1.1, - "@protected": true, - "id": "@id", - "type": "@type", - "ex": "https://example.org/examples#", - "startTime": { - "@id": "https://schema.org/startTime", - "@type": "https://schema.org/DateTime" - }, - "memberOf": { - "@id": "https://schema.org/memberOf", - "@type": "https://schema.org/Text" - }, - "status": { - "@id": "ex:status", - "@type": "https://schema.org/Text" - }, - "holderIdentifier": { - "@id": "ctx:holderIdentifier" - } - } - }, - "NameCredential": { - "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#NameCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "value": { - "@id": "ex:value", - "@type": "https://schema.org/Text" - }, - "name": { - "@id": "ex:name", - "@type": "https://schema.org/Text" - }, - "shortName": { - "@id": "ex:shortName", - "@type": "https://schema.org/Text" - }, - "fipsCode": { - "@id": "ex:fipsCode", - "@type": "https://schema.org/Text" - }, - "number": { - "@id": "ex:number", - "@type": "https://schema.org/Text" - }, - "direction": { - "@id": "ex:direction", - "@type": "https://schema.org/Text" - }, - "nameType": { - "@id": "ex:nameType", - "@type": "https://schema.org/object" - }, - "language": { - "@id": "ex:language", - "@type": "https://schema.org/object" - }, - "holderIdentifier": { - "@id": "ctx:holderIdentifier" - } - } - }, - "BankAccountCredential": { - "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#BankAccountCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "trustScores": { - "@id": "ex:trustScores" - }, - "nationalBankIdentifier": { - "@id": "ex:nationalBankIdentifier", - "@type": "https://schema.org/Text" - }, - "nationalBankAccountIdentifier": { - "@id": "ex:nationalBankAccountIdentifier", - "@type": "https://schema.org/Text" - }, - "internationalBankIdentifier": { - "@id": "ex:internationalBankIdentifier", - "@type": "https://schema.org/Text" - }, - "internationalBankAccountIdentifier": { - "@id": "ex:internationalBankAccountIdentifier", - "@type": "https://schema.org/Text" - }, - "currency": { - "@id": "ex:typeOf", - "@type": "https://schema.org/object" - }, - "holderIdentifier": { - "@id": "ctx:holderIdentifier" - } - } - }, - "AddressCredential": { - "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#AddressCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "version": { - "@id": "ex:typeOf", - "@type": "https://schema.org/object" - }, - "careOf": { - "@id": "ex:careOf", - "@type": "https://schema.org/Text" - }, - "contexts": { - "@id": "ex:contexts" - }, - "bpn": { - "@id": "ex:bpn" - }, - "country": { - "@id": "ex:country", - "@type": "https://schema.org/object" - }, - "administrativeAreas": { - "@id": "ex:administrativeAreas" - }, - "postCodes": { - "@id": "ex:postCodes" - }, - "localities": { - "@id": "ex:localities" - }, - "thoroughfares": { - "@id": "ex:thoroughfares" - }, - "premises": { - "@id": "ex:premises" - }, - "postalDeliveryPoints": { - "@id": "ex:postalDeliveryPoints" - }, - "geographicCoordinates": { - "@id": "ex:geographicCoordinates", - "@type": "https://schema.org/object" - }, - "types": { - "@id": "ex:types" - }, - "holderIdentifier": { - "@id": "ctx:holderIdentifier" - } - } - }, - "LegalFormCredential": { - "@id": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#LegalFormCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "technicalKey": {"@id": "ex:technicalKey", "@type":"https://schema.org/Text"}, - "name": {"@id": "ex:name", "@type":"https://schema.org/Text"}, - "url": {"@id": "ex:url", "@type":"https://schema.org/Text"}, - "mainAbbreviation": {"@id": "https://schema.org/Text#4", "@type":"https://schema.org/Text"}, - "language": {"@id": "https://schema.org/Text#5", "@type":"https://schema.org/object"}, - "categories": {"@id": "https://schema.org/Text#6", "@type":"https://schema.org/ItemList"}, - "holderIdentifier": { - "@id": "ctx:holderIdentifier" - } - } - } - } -} diff --git a/edc-extensions/iatp/tx-iatp/build.gradle.kts b/edc-extensions/iatp/tx-iatp/build.gradle.kts index a5667abf4..e4c98be33 100644 --- a/edc-extensions/iatp/tx-iatp/build.gradle.kts +++ b/edc-extensions/iatp/tx-iatp/build.gradle.kts @@ -21,6 +21,7 @@ dependencies { implementation(libs.edc.spi.core) implementation(libs.edc.spi.policyengine) implementation(libs.edc.identity.core.trust) + implementation(project(":spi:core-spi")) testImplementation(libs.edc.junit) -} +} \ No newline at end of file diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java similarity index 91% rename from edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java rename to edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java index b54bea3a0..baa91e049 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtension.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java @@ -31,10 +31,11 @@ import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.CATALOG_REQUEST_SCOPE; import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.NEGOTIATION_REQUEST_SCOPE; import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.TRANSFER_PROCESS_REQUEST_SCOPE; -import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension.NAME; +import static org.eclipse.tractusx.edc.iam.iatp.IatpDefaultScopeExtension.NAME; +import static org.eclipse.tractusx.edc.iam.iatp.TxIatpConstants.DEFAULT_SCOPES; @Extension(NAME) -public class IatpScopeExtension implements ServiceExtension { +public class IatpDefaultScopeExtension implements ServiceExtension { public static final String TX_IATP_DEFAULT_SCOPE_PREFIX = "edc.iam.iatp.default-scopes"; @@ -49,10 +50,8 @@ public class IatpScopeExtension implements ServiceExtension { @Setting(context = TX_IATP_DEFAULT_SCOPE_PREFIX_CONFIG_ALIAS, value = "The alias of the scope e.g. read", required = true) public static final String OPERATION = "operation"; - public static final Set DEFAULT_SCOPES = Set.of("org.eclipse.tractusx.vc.type:MembershipCredential:read"); + static final String NAME = "Tractusx default scope extension"; - static final String NAME = "Tractusx scope mapping extension"; - @Inject private PolicyEngine policyEngine; diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java new file mode 100644 index 000000000..37348cc16 --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp; + +import org.eclipse.edc.identitytrust.scope.ScopeExtractorRegistry; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.tractusx.edc.iam.iatp.scope.CredentialScopeExtractor; + +import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtractorExtension.NAME; + + +@Extension(NAME) +public class IatpScopeExtractorExtension implements ServiceExtension { + static final String NAME = "Tractusx scope extractor extension"; + + @Inject + private ScopeExtractorRegistry scopeExtractorRegistry; + + @Override + public String name() { + return NAME; + } + + @Override + public void initialize(ServiceExtensionContext context) { + scopeExtractorRegistry.registerScopeExtractor(new CredentialScopeExtractor()); + } +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java new file mode 100644 index 000000000..ed108de50 --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp; + +import java.util.Set; + +import static java.lang.String.format; + +public interface TxIatpConstants { + + String CREDENTIAL_TYPE_NAMESPACE = "org.eclipse.tractusx.vc.type"; + String DEFAULT_CREDENTIAL = "MembershipCredential"; + String READ_OPERATION = "read"; + String DEFAULT_MEMBERSHIP_SCOPE = format("%s:%s:%s", CREDENTIAL_TYPE_NAMESPACE, DEFAULT_CREDENTIAL, READ_OPERATION); + Set DEFAULT_SCOPES = Set.of(DEFAULT_MEMBERSHIP_SCOPE); + +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java new file mode 100644 index 000000000..e07f39f06 --- /dev/null +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.iatp.scope; + +import org.eclipse.edc.identitytrust.scope.ScopeExtractor; +import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.policy.model.Operator; + +import java.util.Set; + +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_CREDENTIAL_NAMESPACE; +import static org.eclipse.tractusx.edc.iam.iatp.TxIatpConstants.CREDENTIAL_TYPE_NAMESPACE; + +/** + * Extract credentials from the policy constraints + *

+ * Extract and map from the Credential DSL the required credential type + * The left operand should be bound to the namespace {@link org.eclipse.tractusx.edc.edr.spi.CoreConstants#TX_CREDENTIAL_NAMESPACE} + */ +public class CredentialScopeExtractor implements ScopeExtractor { + public static final String FRAMEWORK_CREDENTIAL_PREFIX = "FrameworkAgreement."; + public static final String SCOPE_FORMAT = "%s:%s:read"; + public static final String CREDENTIAL_FORMAT = "%sCredential"; + + public CredentialScopeExtractor() { + } + + @Override + public Set extractScopes(Object leftValue, Operator operator, Object rightValue, PolicyContext context) { + Set scopes = Set.of(); + if (leftValue instanceof String leftOperand && leftOperand.startsWith(TX_CREDENTIAL_NAMESPACE)) { + var credential = leftOperand.replace(TX_CREDENTIAL_NAMESPACE, ""); + if (credential.startsWith(FRAMEWORK_CREDENTIAL_PREFIX)) { + credential = credential.replace(FRAMEWORK_CREDENTIAL_PREFIX, ""); + } + scopes = Set.of(SCOPE_FORMAT.formatted(CREDENTIAL_TYPE_NAMESPACE, CREDENTIAL_FORMAT.formatted(capitalize(credential)))); + + } + return scopes; + } + + private String capitalize(String input) { + return input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase(); + } +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java index f1202490f..99badf854 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java @@ -28,13 +28,7 @@ /** * Extract for TX default scopes e.g. MembershipCredential scope */ -public class DefaultScopeExtractor implements BiFunction { - - private final Set defaultScopes; - - public DefaultScopeExtractor(Set defaultScopes) { - this.defaultScopes = defaultScopes; - } +public record DefaultScopeExtractor(Set defaultScopes) implements BiFunction { @Override public Boolean apply(Policy policy, PolicyContext policyContext) { @@ -50,8 +44,4 @@ public Boolean apply(Policy policy, PolicyContext policyContext) { tokenBuilder.scope(String.join(" ", newScopes).trim()); return true; } - - public Set getDefaultScopes() { - return defaultScopes; - } } diff --git a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index ae07565fa..31005a423 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -11,5 +11,6 @@ # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # # -org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension +org.eclipse.tractusx.edc.iam.iatp.IatpDefaultScopeExtension +org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtractorExtension diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java similarity index 88% rename from edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java rename to edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java index 90fee95bf..afc020abb 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtensionTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java @@ -32,8 +32,8 @@ import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.CATALOG_REQUEST_SCOPE; import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.NEGOTIATION_REQUEST_SCOPE; import static org.eclipse.edc.iam.identitytrust.core.IatpScopeExtractorExtension.TRANSFER_PROCESS_REQUEST_SCOPE; -import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension.DEFAULT_SCOPES; -import static org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtension.TX_IATP_DEFAULT_SCOPE_PREFIX; +import static org.eclipse.tractusx.edc.iam.iatp.IatpDefaultScopeExtension.TX_IATP_DEFAULT_SCOPE_PREFIX; +import static org.eclipse.tractusx.edc.iam.iatp.TxIatpConstants.DEFAULT_SCOPES; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; @@ -41,7 +41,7 @@ import static org.mockito.Mockito.when; @ExtendWith(DependencyInjectionExtension.class) -public class IatpScopeExtensionTest { +public class IatpDefaultScopeExtensionTest { private final PolicyEngine policyEngine = mock(); @@ -51,7 +51,7 @@ void setup(ServiceExtensionContext context) { } @Test - void initialize(ServiceExtensionContext context, IatpScopeExtension extension) { + void initialize(ServiceExtensionContext context, IatpDefaultScopeExtension extension) { extension.initialize(context); verify(policyEngine).registerPostValidator(eq(CATALOG_REQUEST_SCOPE), argThat(new ScopeMatcher(DEFAULT_SCOPES))); @@ -60,7 +60,7 @@ void initialize(ServiceExtensionContext context, IatpScopeExtension extension) { } @Test - void initialize_withConfiguredScopes(ServiceExtensionContext context, IatpScopeExtension extension) { + void initialize_withConfiguredScopes(ServiceExtensionContext context, IatpDefaultScopeExtension extension) { var cfg = ConfigFactory.fromMap(Map.of( "foo.alias", "org.test.alias.foo", "foo.type", "FooCredential", @@ -80,7 +80,7 @@ void initialize_withConfiguredScopes(ServiceExtensionContext context, IatpScopeE } @Test - void initialize_fails_withBadConfiguredScopes(ServiceExtensionContext context, IatpScopeExtension extension) { + void initialize_fails_withBadConfiguredScopes(ServiceExtensionContext context, IatpDefaultScopeExtension extension) { var cfg = ConfigFactory.fromMap(Map.of( "foo.alias", "org.test.alias.foo" )); @@ -93,7 +93,7 @@ private record ScopeMatcher(Set scopes) implements ArgumentMatcher subjectSupplier) { + return Json.createObjectBuilder() + .add("@context", context()) + .add("type", types(type)) + .add("credentialSubject", subjectSupplier.get()) + .add("issuer", issuer) + .add("issuanceDate", Instant.now().toString()) + .build(); + } + + public static JsonObject membershipSubject(String did, String id) { + return Json.createObjectBuilder() + .add("type", "MembershipCredential") + .add("holderIdentifier", id) + .add("status", "Active") + .add("memberOf", "Catena-X") + .add("startTime", Instant.now().toString()) + .add("id", did) + .build(); + + } + + public static JsonObject frameworkAgreementSubject(String did, String id, String type) { + return Json.createObjectBuilder() + .add("type", type) + .add("holderIdentifier", id) + .add("useCaseType", type) + .add("contractVersion", "1.0.0") + .add("contractTemplate", "https://public.catena-x.org/contracts/traceabilty.v1.pdf") + .add("id", did) + .build(); + + } + + private static JsonArray types(String type) { + return Json.createArrayBuilder() + .add("VerifiableCredential") + .add(type) + .build(); + } + + private static JsonArray context() { + return Json.createArrayBuilder() + .add("https://www.w3.org/2018/credentials/v1") + .add("https://w3id.org/security/suites/jws-2020/v1") + .add("https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json") + .build(); + } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java index c592de742..f91ced652 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java @@ -43,6 +43,7 @@ public class PolicyHelperFunctions { public static final String TX_NAMESPACE = "https://w3id.org/tractusx/v0.0.1/ns/"; + public static final String TX_CREDENTIAL_NAMESPACE = "https://w3id.org/tractusx/credentials/v0.0.1/ns/"; private static final String ODRL_JSONLD = "http://www.w3.org/ns/odrl.jsonld"; private static final String BUSINESS_PARTNER_EVALUATION_KEY = "BusinessPartnerNumber"; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java index d8264ef56..58c0febcc 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java @@ -14,13 +14,40 @@ package org.eclipse.tractusx.edc.lifecycle.tx.iatp; -import com.nimbusds.jose.JOSEException; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.nimbusds.jose.jwk.Curve; +import com.nimbusds.jose.jwk.ECKey; import com.nimbusds.jose.jwk.JWK; +import jakarta.json.JsonObject; import org.eclipse.edc.iam.did.spi.document.DidDocument; import org.eclipse.edc.iam.did.spi.document.VerificationMethod; -import org.eclipse.edc.junit.testfixtures.TestUtils; +import org.eclipse.edc.identityhub.spi.store.model.VerifiableCredentialResource; +import org.eclipse.edc.identitytrust.model.CredentialFormat; +import org.eclipse.edc.identitytrust.model.CredentialSubject; +import org.eclipse.edc.identitytrust.model.Issuer; +import org.eclipse.edc.identitytrust.model.VerifiableCredential; +import org.eclipse.edc.identitytrust.model.VerifiableCredentialContainer; +import org.eclipse.edc.jsonld.spi.JsonLd; +import org.eclipse.edc.security.signature.jws2020.JwkMethod; +import org.eclipse.edc.security.signature.jws2020.JwsSignature2020Suite; +import org.eclipse.edc.verifiablecredentials.linkeddata.LdpIssuer; +import java.net.URI; +import java.security.KeyPair; +import java.security.interfaces.ECPrivateKey; +import java.security.interfaces.ECPublicKey; +import java.time.Instant; import java.util.List; +import java.util.Map; +import java.util.function.Supplier; + +import static org.eclipse.edc.jsonld.util.JacksonJsonLd.createObjectMapper; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.createVc; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.frameworkAgreementSubject; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.generateKeyPair; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.membershipSubject; +import static org.mockito.Mockito.mock; /** * Dataspace issuer configurations @@ -28,12 +55,14 @@ public class DataspaceIssuer { public static final String DATASPACE_ISSUER = "did:example:dataspace_issuer"; - + private static final ObjectMapper MAPPER = createObjectMapper(); private static final String KEY_ID = "#key1"; - + private final JwsSignature2020Suite jws2020suite = new JwsSignature2020Suite(MAPPER); private final DidDocument didDocument; + private final KeyPair keyPair; public DataspaceIssuer() { + keyPair = generateKeyPair(); didDocument = generateDidDocument(); } @@ -49,25 +78,85 @@ public String verificationId() { return DATASPACE_ISSUER + KEY_ID; } - private DidDocument generateDidDocument() { - var key = TestUtils.getResourceFileContentAsString("ec-p256-public.pem"); + public VerifiableCredentialResource issueCredential(IatpParticipant participant, JsonLd jsonLd, String type, Supplier credentialSubjectSupplier, Supplier subjectSupplier) { + var credential = VerifiableCredential.Builder.newInstance() + .type(type) + .credentialSubject(credentialSubjectSupplier.get()) + .issuer(new Issuer(didUrl(), Map.of())) + .issuanceDate(Instant.now()) + .build(); + + var rawVc = createLdpVc(jsonLd, type, subjectSupplier); + return VerifiableCredentialResource.Builder.newInstance() + .issuerId(didUrl()) + .holderId(participant.getBpn()) + .credential(new VerifiableCredentialContainer(rawVc, CredentialFormat.JSON_LD, credential)) + .build(); + + } + + public VerifiableCredentialResource issueMembershipCredential(IatpParticipant participant, JsonLd jsonLd) { + return issueCredential(participant, jsonLd, "MembershipCredential", () -> CredentialSubject.Builder.newInstance() + .claim("holderIdentifier", participant.getBpn()) + .build(), + () -> membershipSubject(participant.didUrl(), participant.getBpn())); + } + + public VerifiableCredentialResource issueFrameworkCredential(IatpParticipant participant, JsonLd jsonLd, String type) { + return issueCredential(participant, jsonLd, "UseCaseFrameworkCondition", () -> CredentialSubject.Builder.newInstance() + .claim("holderIdentifier", participant.getBpn()) + .claim("useCaseType", type) + .build(), + () -> frameworkAgreementSubject(participant.didUrl(), participant.getBpn(), type)); + + } + + private String createLdpVc(JsonLd jsonLd, String type, Supplier subjectSupplier) { + var issuer = LdpIssuer.Builder.newInstance() + .jsonLd(jsonLd) + .monitor(mock()) + .build(); + + var proofOptions = jws2020suite.createOptions() + .created(Instant.now()) + .verificationMethod(new JwkMethod(URI.create(verificationId()), null, null, null)) + .purpose(URI.create("https://w3id.org/security#assertionMethod")); + + var key = new ECKey.Builder(Curve.P_256, (ECPublicKey) keyPair.getPublic()).privateKey(keyPair.getPrivate()).build(); + + var vc = createVc(didUrl(), type, subjectSupplier); + var result = issuer.signDocument(vc, createKeyPair(key, verificationId()), proofOptions).orElseThrow(err -> new RuntimeException(err.getFailureDetail())); + try { - var jwk = JWK.parseFromPEMEncodedObjects(key); - var verificationMethod = VerificationMethod.Builder.newInstance() - .id(verificationId()) - .controller(didUrl()) - .type("JsonWebKey2020") - .publicKeyJwk(jwk.toPublicJWK().toJSONObject()) - .build(); - - return DidDocument.Builder.newInstance() - .id(didUrl()) - .authentication(List.of(KEY_ID)) - .verificationMethod(List.of(verificationMethod)) - .build(); - } catch (JOSEException e) { + return MAPPER.writeValueAsString(result); + } catch (JsonProcessingException e) { throw new RuntimeException(e); } + } + + private com.apicatalog.ld.signature.key.KeyPair createKeyPair(JWK jwk, String id) { + var type = URI.create("https://w3id.org/security#JsonWebKey2020"); + return new JwkMethod(URI.create(id), type, null, jwk); + } + + private DidDocument generateDidDocument() { + + var ecKey = new ECKey.Builder(Curve.P_256, (ECPublicKey) keyPair.getPublic()) + .privateKey((ECPrivateKey) keyPair.getPrivate()) + .build(); + + var verificationMethod = VerificationMethod.Builder.newInstance() + .id(verificationId()) + .controller(didUrl()) + .type("JsonWebKey2020") + .publicKeyJwk(ecKey.toPublicJWK().toJSONObject()) + .build(); + + return DidDocument.Builder.newInstance() + .id(didUrl()) + .authentication(List.of(KEY_ID)) + .verificationMethod(List.of(verificationMethod)) + .build(); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java index 71a295193..ccbc265bd 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java @@ -20,16 +20,11 @@ import org.eclipse.edc.iam.did.spi.document.Service; import org.eclipse.edc.iam.did.spi.document.VerificationMethod; import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; -import org.testcontainers.shaded.org.bouncycastle.jce.provider.BouncyCastleProvider; import java.net.URI; -import java.security.InvalidAlgorithmParameterException; import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; import java.security.interfaces.ECPrivateKey; import java.security.interfaces.ECPublicKey; -import java.security.spec.ECGenParameterSpec; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -38,6 +33,7 @@ import static java.lang.String.format; import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.generateKeyPair; import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.toPemEncoded; import static org.eclipse.tractusx.edc.lifecycle.tx.iatp.DataspaceIssuer.DATASPACE_ISSUER; @@ -145,13 +141,4 @@ private DidDocument generateDidDocument() { .build(); } - private KeyPair generateKeyPair() { - try { - KeyPairGenerator gen = KeyPairGenerator.getInstance("EC", new BouncyCastleProvider()); - gen.initialize(new ECGenParameterSpec("secp256r1")); - return gen.generateKeyPair(); - } catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException e) { - throw new RuntimeException(e); - } - } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java index 14e62ae36..e1256b844 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java @@ -57,7 +57,6 @@ public abstract class AbstractHttpConsumerPullWithProxyTest { @BeforeEach void setup() throws IOException { server = new MockWebServer(); - } @Test @@ -79,8 +78,8 @@ void transferData_privateBackend() throws IOException, InterruptedException { PLATO.createAsset(assetId, Map.of(), dataAddress); - var accessPolicyId = PLATO.createPolicyDefinition(createTestPolicy(SOKRATES.getBpn())); - var contractPolicyId = PLATO.createPolicyDefinition(createTestPolicy(SOKRATES.getBpn())); + var accessPolicyId = PLATO.createPolicyDefinition(createAccessPolicy(SOKRATES.getBpn())); + var contractPolicyId = PLATO.createPolicyDefinition(createContractPolicy(SOKRATES.getBpn())); PLATO.createContractDefinition(assetId, "def-1", accessPolicyId, contractPolicyId); var transferProcessId = SOKRATES.requestAsset(PLATO, assetId, Json.createObjectBuilder().build(), createProxyRequest()); @@ -119,7 +118,11 @@ void teardown() throws IOException { server.shutdown(); } - protected JsonObject createTestPolicy(String bpn) { + protected JsonObject createAccessPolicy(String bpn) { + return bnpPolicy(bpn); + } + + protected JsonObject createContractPolicy(String bpn) { return bnpPolicy(bpn); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java new file mode 100644 index 000000000..a3ef1f2da --- /dev/null +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.tests.transfer; + +import jakarta.json.JsonObject; +import org.eclipse.edc.junit.annotations.EndToEndTest; + +import java.util.Map; + +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_CREDENTIAL_NAMESPACE; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; + +@EndToEndTest +public class IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest extends IatpHttpConsumerPullWithProxyInMemoryTest { + + @Override + protected JsonObject createContractPolicy(String bpn) { + return frameworkPolicy(Map.of(TX_CREDENTIAL_NAMESPACE + "FrameworkAgreement.pcf", "active")); + } + +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java index da4f1adfc..c0ae00177 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java @@ -18,7 +18,10 @@ import org.eclipse.edc.iam.did.spi.document.DidDocument; import org.eclipse.edc.iam.did.spi.resolution.DidResolverRegistry; import org.eclipse.edc.identityhub.spi.generator.PresentationCreatorRegistry; +import org.eclipse.edc.identityhub.spi.store.CredentialStore; +import org.eclipse.edc.identityhub.spi.store.model.VerifiableCredentialResource; import org.eclipse.edc.identitytrust.model.CredentialFormat; +import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.spi.security.Vault; import org.eclipse.tractusx.edc.did.DidExampleResolver; @@ -32,9 +35,10 @@ import java.io.IOException; import java.util.HashMap; +import java.util.List; import java.util.Map; -import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; +import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_CREDENTIAL_NAMESPACE; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest @@ -97,17 +101,30 @@ private static void configureParticipant(IatpParticipant participant, Participan vault.storeSecret(participant.verificationId(), participant.privateKey()); presentationRegistry.addKeyId(participant.verificationId(), CredentialFormat.JSON_LD); presentationRegistry.addKeyId(participant.verificationId(), CredentialFormat.JWT); + + storeCredentials(participant, runtime); + } + + private static void storeCredentials(IatpParticipant participant, ParticipantRuntime runtime) { + var credentialStore = runtime.getContext().getService(CredentialStore.class); + var jsonLd = runtime.getContext().getService(JsonLd.class); + issueCredentials(participant, jsonLd).forEach(credentialStore::create); + } + + private static List issueCredentials(IatpParticipant participant, JsonLd jsonLd) { + return List.of( + DATASPACE_ISSUER_PARTICIPANT.issueMembershipCredential(participant, jsonLd), + DATASPACE_ISSUER_PARTICIPANT.issueFrameworkCredential(participant, jsonLd, "PcfCredential")); } @BeforeEach void setup() throws IOException { super.setup(); - } @Override - protected JsonObject createTestPolicy(String bpn) { - return frameworkPolicy(Map.of(TX_NAMESPACE + "Membership", "active")); + protected JsonObject createContractPolicy(String bpn) { + return frameworkPolicy(Map.of(TX_CREDENTIAL_NAMESPACE + "Membership", "active")); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java index 43ea14943..571621598 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java @@ -94,7 +94,7 @@ void setup() throws IOException { } @Override - protected JsonObject createTestPolicy(String bpn) { + protected JsonObject createAccessPolicy(String bpn) { return frameworkPolicy(Map.of(TX_NAMESPACE + "Dismantler", "active")); } } diff --git a/edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem b/edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem deleted file mode 100644 index b1a6b1534..000000000 --- a/edc-tests/e2e-tests/src/test/resources/ec-p256-public.pem +++ /dev/null @@ -1,4 +0,0 @@ ------BEGIN PUBLIC KEY----- -MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1l0Lof0a1yBc8KXhesAnoBvxZw5r -oYnkAXuqCYfNK3ex+hMWFuiXGUxHlzShAehR6wvwzV23bbC0tcFcVgW//A== ------END PUBLIC KEY----- diff --git a/edc-tests/miw-tests/src/test/resources/env-files/env.docker b/edc-tests/miw-tests/src/test/resources/env-files/env.docker index b461421e9..30c2fe9a2 100644 --- a/edc-tests/miw-tests/src/test/resources/env-files/env.docker +++ b/edc-tests/miw-tests/src/test/resources/env-files/env.docker @@ -31,7 +31,7 @@ AUTHORITY_WALLET_NAME=Catena-X KEYCLOAK_REALM=miw_test VC_SCHEMA_LINK="https://www.w3.org/2018/credentials/v1, https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json" VC_EXPIRY_DATE=01-01-2025 -SUPPORTED_FRAMEWORK_VC_TYPES="cx-behavior-twin=Behavior Twin,cx-pcf=PCF,cx-quality=Quality,cx-resiliency=Resiliency,cx-sustainability=Sustainability,cx-traceability=ID_3.0_Trace" +SUPPORTED_FRAMEWORK_VC_TYPES="PcfCredential, SustainabilityCredential, QualityCredential, TraceabilityCredential, BehaviorTwinCredential, ResiliencyCredential" MIW_HOST_NAME=localhost:8000 ENFORCE_HTTPS_IN_DID_RESOLUTION=false diff --git a/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts b/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts index 4750c73fa..7d9f89d0b 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts +++ b/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts @@ -18,6 +18,8 @@ plugins { dependencies { implementation(libs.edc.ih.spi.store) + implementation(libs.edc.spi.jsonld) + implementation(project(":spi:core-spi")) } // do not publish diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java new file mode 100644 index 000000000..e38b05f8a --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp; + +import org.eclipse.edc.jsonld.spi.JsonLd; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; + +import java.net.URISyntaxException; + +@Extension("Credentials JSON LD extension") +public class CredentialsJsonLdExtension implements ServiceExtension { + + public static final String BUSINESS_PARTNER_DATA = "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json"; + + @Inject + private JsonLd jsonLd; + + @Override + public void initialize(ServiceExtensionContext context) { + + try { + jsonLd.registerCachedDocument(BUSINESS_PARTNER_DATA, Thread.currentThread().getContextClassLoader().getResource("cx-credentials-context.json").toURI()); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java index c944f2de3..859f01f85 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java @@ -15,70 +15,18 @@ package org.eclipse.tractusx.edc.iatp.ih; import org.eclipse.edc.identityhub.spi.ScopeToCriterionTransformer; -import org.eclipse.edc.identityhub.spi.store.CredentialStore; -import org.eclipse.edc.identityhub.spi.store.model.VerifiableCredentialResource; -import org.eclipse.edc.identitytrust.TrustedIssuerRegistry; -import org.eclipse.edc.identitytrust.model.CredentialFormat; -import org.eclipse.edc.identitytrust.model.CredentialSubject; -import org.eclipse.edc.identitytrust.model.Issuer; -import org.eclipse.edc.identitytrust.model.VerifiableCredential; -import org.eclipse.edc.identitytrust.model.VerifiableCredentialContainer; import org.eclipse.edc.runtime.metamodel.annotation.Extension; -import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; -import java.io.IOException; -import java.time.Instant; -import java.util.Map; +import java.util.List; @Extension("Identity Hub extension for testing") public class IdentityHubExtension implements ServiceExtension { - public static final String DATASPACE_ISSUER = "did:example:dataspace_issuer"; - - @Inject - private CredentialStore credentialStore; - - @Inject - private TrustedIssuerRegistry registry; - - @Override - public void initialize(ServiceExtensionContext context) { - - var did = context.getConfig().getString("edc.iam.issuer.id"); - - var credential = VerifiableCredential.Builder.newInstance() - .type("MembershipCredential") - .credentialSubject(CredentialSubject.Builder.newInstance() - .claim("holderIdentifier", context.getParticipantId()) - .build()) - .issuer(new Issuer(DATASPACE_ISSUER, Map.of())) - .issuanceDate(Instant.now()) - .build(); - - var credentialResource = VerifiableCredentialResource.Builder.newInstance() - .issuerId(DATASPACE_ISSUER) - .holderId(did) - .credential(new VerifiableCredentialContainer(getCredential(context.getParticipantId()), CredentialFormat.JSON_LD, credential)) - .build(); - - credentialStore.create(credentialResource); - - } - @Provider public ScopeToCriterionTransformer scopeToCriterionTransformer() { - return new TxScopeToCriterionTransformer(); + return new TxScopeToCriterionTransformer(List.of("MembershipCredential", "DismantlerCredential", "BpnCredential")); } - private String getCredential(String participantId) { - try { - var content = getClass().getClassLoader().getResourceAsStream("credentials/" + participantId.toLowerCase() + "-membership.json").readAllBytes(); - return new String(content); - } catch (IOException e) { - throw new RuntimeException(e); - } - } } diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java index 5efb2c2a2..174be8ad6 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java @@ -28,12 +28,18 @@ * to {@link Criterion} for querying the credentials (Just for testing) */ public class TxScopeToCriterionTransformer implements ScopeToCriterionTransformer { + public static final String TYPE_OPERAND = "verifiableCredential.credential.types"; public static final String ALIAS_LITERAL = "org.eclipse.tractusx.vc.type"; public static final String CONTAINS_OPERATOR = "contains"; private static final String SCOPE_SEPARATOR = ":"; + private final List knownCredentialTypes; private final List allowedOperations = List.of("read", "*", "all"); + public TxScopeToCriterionTransformer(List knownCredentialTypes) { + this.knownCredentialTypes = knownCredentialTypes; + } + @Override public Result transform(String scope) { var tokens = tokenize(scope); @@ -41,7 +47,14 @@ public Result transform(String scope) { return failure("Scope string cannot be converted: %s".formatted(tokens.getFailureDetail())); } var credentialType = tokens.getContent()[1]; - return success(new Criterion(TYPE_OPERAND, CONTAINS_OPERATOR, credentialType)); + + if (!knownCredentialTypes.contains(credentialType)) { + //select based on the credentialSubject.useCaseType property + // even though "claims" is a Map, we need to access it using the dot notation. See ReflectionUtil.java + return success(new Criterion("verifiableCredential.credential.credentialSubject.useCaseType", "=", credentialType)); + } else { + return success(new Criterion(TYPE_OPERAND, CONTAINS_OPERATOR, credentialType)); + } } protected Result tokenize(String scope) { diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java new file mode 100644 index 000000000..6386d44b7 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.policy; + +import org.eclipse.edc.policy.engine.spi.AtomicConstraintFunction; +import org.eclipse.edc.policy.model.Permission; + +import java.util.Map; + +public abstract class BaseCredentialEvaluationFunction implements AtomicConstraintFunction { + + protected T getClaim(Class type, String postfix, Map claims) { + return claims.entrySet().stream().filter(e -> e.getKey().endsWith(postfix)) + .findFirst() + .map(Map.Entry::getValue) + .map(type::cast) + .orElse(null); + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java new file mode 100644 index 000000000..544f4ce7d --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.policy; + +import org.eclipse.edc.policy.engine.spi.AtomicConstraintFunction; +import org.eclipse.edc.policy.engine.spi.PolicyEngine; +import org.eclipse.edc.policy.engine.spi.RuleBindingRegistry; +import org.eclipse.edc.policy.model.Permission; +import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; + +import static org.eclipse.edc.policy.model.OdrlNamespace.ODRL_SCHEMA; +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_CREDENTIAL_NAMESPACE; + +@Extension("TX credential policy evaluation extension") +public class CredentialPolicyEvaluationExtension implements ServiceExtension { + + public static final String MEMBERSHIP_CONSTRAINT_KEY = "Membership"; + private static final String CATALOG_SCOPE = "catalog"; + private static final String NEGOTIATION_SCOPE = "contract.negotiation"; + private static final String TRANSFER_PROCESS_SCOPE = "transfer.process"; + + @Inject + private PolicyEngine policyEngine; + + @Inject + private RuleBindingRegistry ruleBindingRegistry; + + + @Override + public void initialize(ServiceExtensionContext context) { + + var fct = new MembershipCredentialEvaluationFunction(); + + bindPermissionFunction(fct, TRANSFER_PROCESS_SCOPE, MEMBERSHIP_CONSTRAINT_KEY); + bindPermissionFunction(fct, NEGOTIATION_SCOPE, MEMBERSHIP_CONSTRAINT_KEY); + bindPermissionFunction(fct, CATALOG_SCOPE, MEMBERSHIP_CONSTRAINT_KEY); + + registerUseCase("pcf"); + registerUseCase("traceability"); + registerUseCase("sustainability"); + registerUseCase("quality"); + registerUseCase("resiliency"); + } + + private void bindPermissionFunction(AtomicConstraintFunction function, String scope, String constraintType) { + ruleBindingRegistry.bind("USE", scope); + ruleBindingRegistry.bind(ODRL_SCHEMA + "use", scope); + ruleBindingRegistry.bind(constraintType, scope); + ruleBindingRegistry.bind(TX_CREDENTIAL_NAMESPACE + constraintType, scope); + + policyEngine.registerFunction(scope, Permission.class, constraintType, function); + policyEngine.registerFunction(scope, Permission.class, TX_CREDENTIAL_NAMESPACE + constraintType, function); + } + + private void registerUseCase(String useCaseName) { + var frameworkFunction = new FrameworkCredentialEvaluationFunction(useCaseName); + var usecase = frameworkFunction.key(); + + bindPermissionFunction(frameworkFunction, TRANSFER_PROCESS_SCOPE, usecase); + bindPermissionFunction(frameworkFunction, NEGOTIATION_SCOPE, usecase); + bindPermissionFunction(frameworkFunction, CATALOG_SCOPE, usecase); + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java new file mode 100644 index 000000000..7794082ab --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.policy; + +import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.policy.model.Operator; +import org.eclipse.edc.policy.model.Permission; +import org.eclipse.edc.spi.agent.ParticipantAgent; + +public class FrameworkCredentialEvaluationFunction extends BaseCredentialEvaluationFunction { + + public static final String CONTRACT_VERSION = "contractVersion"; + public static final String HOLDER_IDENTIFIER = "holderIdentifier"; + public static final String USE_CASE_TYPE = "useCaseType"; + public static final String CONTRACT_TEMPLATE = "contractTemplate"; + private final String usecase; + private final String useCaseCredential; + + public FrameworkCredentialEvaluationFunction(String usecase) { + this.usecase = usecase; + this.useCaseCredential = "%sCredential".formatted(capitalize(usecase)); + } + + @Override + public boolean evaluate(Operator operator, Object rightOperand, Permission permission, PolicyContext policyContext) { + if (!operator.equals(Operator.EQ)) { + policyContext.reportProblem("Cannot evaluate operator %s, only %s is supported".formatted(operator, Operator.EQ)); + return false; + } + if (!"active".equalsIgnoreCase(rightOperand.toString())) { + policyContext.reportProblem("Use case credentials only support right operand 'active', but found '%s'".formatted(operator.toString())); + return false; + } + var pa = policyContext.getContextData(ParticipantAgent.class); + if (pa == null) { + policyContext.reportProblem("ParticipantAgent not found on PolicyContext"); + return false; + } + + var claims = pa.getClaims(); + + var version = getClaim(String.class, CONTRACT_VERSION, claims); + var holderIdentifier = getClaim(String.class, HOLDER_IDENTIFIER, claims); + var contractTemplate = getClaim(String.class, CONTRACT_TEMPLATE, claims); + var useCaseType = getClaim(String.class, USE_CASE_TYPE, claims); + + return version != null && holderIdentifier != null && contractTemplate != null && useCaseCredential.equals(useCaseType); + } + + public String key() { + return "FrameworkAgreement.%s".formatted(usecase); + } + + private String capitalize(String input) { + return input.substring(0, 1).toUpperCase() + input.substring(1).toLowerCase(); + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java new file mode 100644 index 000000000..711d06bbb --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.policy; + +import org.eclipse.edc.policy.engine.spi.PolicyContext; +import org.eclipse.edc.policy.model.Operator; +import org.eclipse.edc.policy.model.Permission; +import org.eclipse.edc.spi.agent.ParticipantAgent; + +import java.time.Instant; +import java.util.Map; +import java.util.function.BiFunction; + +public class MembershipCredentialEvaluationFunction extends BaseCredentialEvaluationFunction { + + public static final String START_TIME = "startTime"; + public static final String MEMBER_OF = "memberOf"; + public static final String STATUS = "status"; + public static final String ACTIVE = "Active"; + public static final String CATENA_X = "Catena-X"; + private final Map> claimsCheckers = Map.of( + STATUS, this::validateStatus, + MEMBER_OF, this::validateMemberOf, + START_TIME, this::validateStartTime + ); + + @Override + public boolean evaluate(Operator operator, Object rightOperand, Permission permission, PolicyContext policyContext) { + + if (!operator.equals(Operator.EQ)) { + policyContext.reportProblem("Invalid operator '%s', only accepts '%s'".formatted(operator, Operator.EQ)); + return false; + } + var pa = policyContext.getContextData(ParticipantAgent.class); + if (pa == null) { + policyContext.reportProblem("No ParticipantAgent found on context."); + return false; + } + var claims = pa.getClaims(); + if ("active".equalsIgnoreCase(rightOperand.toString())) { + return claimsCheckers.entrySet().stream() + .reduce(true, (i, checker) -> checker.getValue().apply(policyContext, getClaim(String.class, checker.getKey(), claims)), (first, left) -> first && left); + } + return false; + } + + private boolean validateMemberOf(PolicyContext policyContext, String memberOf) { + return validateField(policyContext, MEMBER_OF, CATENA_X, memberOf); + + } + + private boolean validateStatus(PolicyContext policyContext, String status) { + return validateField(policyContext, STATUS, ACTIVE, status); + } + + private boolean validateField(PolicyContext policyContext, String field, String expectedValue, String currentValue) { + if (expectedValue.equals(currentValue)) { + return true; + } else { + policyContext.reportProblem("Invalid membership %s '%s', only accepts '%s'".formatted(field, currentValue, expectedValue)); + return false; + } + } + + private boolean validateStartTime(PolicyContext policyContext, String since) { + var membershipStartDate = Instant.parse(since); + if (membershipStartDate.isBefore(Instant.now())) { + return true; + } else { + policyContext.reportProblem("Invalid membership start date"); + return false; + } + } +} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 5c5874a98..934715158 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -13,4 +13,6 @@ # org.eclipse.tractusx.edc.iatp.TestAudienceMapperExtension -org.eclipse.tractusx.edc.iatp.ih.IdentityHubExtension \ No newline at end of file +org.eclipse.tractusx.edc.iatp.ih.IdentityHubExtension +org.eclipse.tractusx.edc.iatp.policy.CredentialPolicyEvaluationExtension +org.eclipse.tractusx.edc.iatp.CredentialsJsonLdExtension \ No newline at end of file diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json deleted file mode 100644 index 56dda069d..000000000 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/plato-bpn-membership.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@context": [ - "https://w3id.org/security/suites/jws-2020/v1", - "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json", - "https://www.w3.org/2018/credentials/v1" - ], - "type": [ - "VerifiableCredential", - "MembershipCredential" - ], - "id": "did:example:plato#62cfd49b-5743-4966-bff3-750390c4be0a", - "issuer": "did:example:dataspace_issuer", - "issuanceDate": "2024-01-03T15:45:12Z", - "expirationDate": "2025-01-01T00:00:00Z", - "credentialSubject": { - "holderIdentifier": "PLATO-BPN", - "startTime": "2024-01-03T15:45:12.567936326Z", - "id": "did:example:plato", - "memberOf": "Catena-X", - "type": "MembershipCredential", - "status": "Active" - }, - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:example:dataspace_issuer#key-1", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NiJ9..gh5myaRw72L0c8MOtgwhbctX1VrGsOswZXZE6DcnWZggyiqSO4Ov6XNKLcwJYq7-JSxv45o7OLy8rnRWjG-yDQ" - } -} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json deleted file mode 100644 index 136eb8e18..000000000 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/credentials/sokrates-bpn-membership.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "@context": [ - "https://w3id.org/security/suites/jws-2020/v1", - "https://catenax-ng.github.io/product-core-schemas/businessPartnerData.json", - "https://www.w3.org/2018/credentials/v1" - ], - "type": [ - "VerifiableCredential", - "MembershipCredential" - ], - "id": "did:example:sokrates#62cfd49b-5743-4966-bff3-750390c4be0a", - "issuer": "did:example:dataspace_issuer", - "issuanceDate": "2024-01-03T15:45:12Z", - "expirationDate": "2025-01-01T00:00:00Z", - "credentialSubject": { - "holderIdentifier": "SOKRATES-BPN", - "startTime": "2024-01-03T15:45:12.567936326Z", - "id": "did:example:sokrates", - "memberOf": "Catena-X", - "type": "MembershipCredential", - "status": "Active" - }, - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:example:dataspace_issuer#key-1", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzI1NiJ9..jBbYDdDuWLEgCVrtEvV_eCxWWK26Hxf56nEzRVaNS68jNx_oXLhtbQo-Jd-Th2d1q1g9gBRRuRlqmyKBp5rirw" - } -} diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/cx-credentials-context.json b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/cx-credentials-context.json new file mode 100644 index 000000000..110c98f99 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/cx-credentials-context.json @@ -0,0 +1,48 @@ +{ + "@context": { + "@version": 1.1, + "ctx": "https://raw.githubusercontent.com/catenax-ng/product-core-schemas/main/businessPartnerData#", + "schema": "https://schema.org/", + "BpnCredential": { + "@id": "ctx:BpnCredential", + "@context": { + "@version": 1.1, + "id": "@id", + "type": "@type", + "bpn": "schema:identifier" + } + }, + "MembershipCredential": { + "@id": "ctx:MembershipCredential", + "@context": { + "@version": 1.1, + "id": "@id", + "type": "@type", + "startTime": { + "@id": "schema:startTime", + "@type": "schema:DateTime" + }, + "memberOf": { + "@id": "schema:memberOf", + "@type": "schema:Text" + }, + "status": { + "@id": "ctx:status", + "@type": "schema:Text" + }, + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } + }, + "UseCaseFrameworkCondition": { + "@id": "ctx:UseCaseFrameworkCondition" + }, + "contractVersion": "ctx:contractVersion", + "contractTemplate": "ctx:contractTemplate", + "useCaseType": "ctx:useCaseType", + "holderIdentifier": { + "@id": "ctx:holderIdentifier" + } + } +} diff --git a/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java b/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java index 369c40fc4..e6e2c2932 100644 --- a/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java +++ b/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java @@ -18,10 +18,10 @@ public final class CoreConstants { public static final String TX_PREFIX = "tx"; public static final String TX_NAMESPACE = "https://w3id.org/tractusx/v0.0.1/ns/"; + public static final String TX_CREDENTIAL_NAMESPACE = "https://w3id.org/tractusx/credentials/v0.0.1/ns/"; public static final String TX_CONTEXT = "https://w3id.org/tractusx/edc/v0.0.1"; public static final String EDC_CONTEXT = "https://w3id.org/edc/v0.0.1"; - - + private CoreConstants() { } } From 4a616ff1ba5f6f2a1bf723fbeb9e6dff69da2732 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 09:34:28 +0100 Subject: [PATCH 42/83] chore(deps): bump org.slf4j:slf4j-api from 2.0.10 to 2.0.11 (#982) * chore(deps): bump org.slf4j:slf4j-api from 2.0.10 to 2.0.11 Bumps org.slf4j:slf4j-api from 2.0.10 to 2.0.11. --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 4 ++-- build.gradle.kts | 2 +- gradle/libs.versions.toml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 189ef4305..52042b659 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -477,7 +477,7 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.32, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.35, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 -maven/mavencentral/org.slf4j/slf4j-api/2.0.10, MIT, approved, #5915 +maven/mavencentral/org.slf4j/slf4j-api/2.0.11, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/database-commons/1.19.3, Apache-2.0, approved, #10345 @@ -538,7 +538,7 @@ maven/mavencentral/software.amazon.awssdk/s3/2.22.13, Apache-2.0, approved, #126 maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.13, Apache-2.0, approved, #12639 maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sts/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sts/2.22.6, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.13, Apache-2.0, approved, #12629 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 maven/mavencentral/software.amazon.awssdk/utils/2.22.13, Apache-2.0, approved, #12631 diff --git a/build.gradle.kts b/build.gradle.kts index 9ebf54de4..3875dbda8 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -59,7 +59,7 @@ allprojects { mavenCentral() } dependencies { - implementation("org.slf4j:slf4j-api:2.0.10") + implementation("org.slf4j:slf4j-api:2.0.11") // this is used to counter version conflicts between the JUnit version pulled in by the plugin, // and the one expected by IntelliJ testImplementation(platform("org.junit:junit-bom:5.10.1")) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0d1dd4ed3..4901695e3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.3" azure-identity = "1.11.1" -slf4j = "2.0.10" +slf4j = "2.0.11" okhttp = "4.12.0" mockwebserver = "5.0.0-alpha.12" bouncyCastle-jdk18on = "1.77" From 3b0a1ce3a8315b482a12ced4c395d579c5d59a13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 16 Jan 2024 10:23:06 +0100 Subject: [PATCH 43/83] chore(deps): bump aws from 2.22.13 to 2.23.3 (#981) * chore(deps): bump aws from 2.22.13 to 2.23.3 Bumps `aws` from 2.22.13 to 2.23.3. Updates `software.amazon.awssdk:s3` from 2.22.13 to 2.23.3 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.22.13 to 2.23.3 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 52042b659..00db6b145 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -488,59 +488,59 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.13, Apache-2.0, approved, #12618 maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.13, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/annotations/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/arns/2.22.13, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/auth/2.22.13, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/arns/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.13, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/auth/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.13, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.13, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.13, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums/2.22.13, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.13, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/checksums/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.13, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.13, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.13, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.13, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.13, Apache-2.0, approved, #12627 +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/iam/2.22.6, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.13, Apache-2.0, approved, #12636 maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.13, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.13, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.13, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/profiles/2.22.13, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.13, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/profiles/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/regions/2.22.13, Apache-2.0, approved, #12643 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.22.13, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.13, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/regions/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.13, Apache-2.0, approved, #12639 +maven/mavencentral/software.amazon.awssdk/s3/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sts/2.22.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.13, Apache-2.0, approved, #12629 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/utils/2.22.13, Apache-2.0, approved, #12631 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 +maven/mavencentral/software.amazon.awssdk/utils/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4901695e3..10c1d9737 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.11.0" testcontainers = "1.19.3" -aws = "2.22.13" +aws = "2.23.3" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.25.1" From 358c881819e050eb985e3c3e036b477982f9e5e8 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Fri, 19 Jan 2024 10:58:17 +0100 Subject: [PATCH 44/83] build(deps): upgrade eclipse-temurin to 17.0.9_9-jre-alpine (#991) * build(deps): upgrade eclipse-temurin to 17.0.9_9-jre-alpine * dependencies --- DEPENDENCIES | 2 +- .../edc-controlplane-postgresql-azure-vault/notice.md | 2 +- .../src/main/docker/Dockerfile | 2 +- .../edc-controlplane-postgresql-hashicorp-vault/notice.md | 2 +- .../src/main/docker/Dockerfile | 2 +- edc-controlplane/edc-runtime-memory/notice.md | 2 +- edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile | 2 +- edc-dataplane/edc-dataplane-azure-vault/notice.md | 2 +- .../edc-dataplane-azure-vault/src/main/docker/Dockerfile | 2 +- edc-dataplane/edc-dataplane-hashicorp-vault/notice.md | 2 +- .../edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 00db6b145..812fa39d1 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -518,7 +518,7 @@ maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved maven/mavencentral/software.amazon.awssdk/http-auth/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/iam/2.22.6, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/iam/2.22.6, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md b/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md index 2861275bb..fa34738d8 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.8.1_1-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile index 6f3762542..473b89158 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile @@ -18,7 +18,7 @@ # # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.8.1_1-jre-alpine +FROM eclipse-temurin:17.0.9_9-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md index 4881e84c2..42d662305 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.8.1_1-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile index 820a5b22e..67fa4151a 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile @@ -19,7 +19,7 @@ # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.8.1_1-jre-alpine +FROM eclipse-temurin:17.0.9_9-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES diff --git a/edc-controlplane/edc-runtime-memory/notice.md b/edc-controlplane/edc-runtime-memory/notice.md index 18697cf9f..19a980387 100644 --- a/edc-controlplane/edc-runtime-memory/notice.md +++ b/edc-controlplane/edc-runtime-memory/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.8.1_1-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile b/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile index 610d5a347..8932c1e60 100644 --- a/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile @@ -20,7 +20,7 @@ # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.8.1_1-jre-alpine +FROM eclipse-temurin:17.0.9_9-jre-alpine ARG JAR ARG APP_USER=docker diff --git a/edc-dataplane/edc-dataplane-azure-vault/notice.md b/edc-dataplane/edc-dataplane-azure-vault/notice.md index becd58900..26fd3bc66 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/notice.md +++ b/edc-dataplane/edc-dataplane-azure-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.8.1_1-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile index 5a76a10a2..5ab505140 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile +++ b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile @@ -18,7 +18,7 @@ # # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.8.1_1-jre-alpine +FROM eclipse-temurin:17.0.9_9-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md b/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md index b64fbe051..fc1834d86 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.8.1_1-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile index 70e33b876..fa32b71b2 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile @@ -19,7 +19,7 @@ # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.8.1_1-jre-alpine +FROM eclipse-temurin:17.0.9_9-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES From ceb926e975e8eecdad78929b3ea9065d30655b91 Mon Sep 17 00:00:00 2001 From: arnoweiss Date: Tue, 16 Jan 2024 08:41:20 +0100 Subject: [PATCH 45/83] docs: remove and merge redundant content - remove adoption view - consolidate edr-docs in the mgmt-api-walkthrough - remove postman collection - move overview on extensions to extensions/README.md - bugfixes in mgmt-api-walkthrough - remove docs for data-plane-http-oauth2 --- core/edr-core/README.md | 21 +- docs/development/README.md | 6 +- docs/development/data-plane-http-oauth2.md | 7 - docs/development/edr-api-overview.md | 261 ----- docs/development/postman/README.md | 35 - docs/development/postman/collection.json | 925 ------------------ .../project_structure.md} | 0 .../repository_structure.md} | 0 docs/kit/Adoption View/00_adoption-view.md | 51 - .../Adoption View/images/edc_architecture.png | Bin 7768 -> 0 bytes .../kit/Adoption View/images/edc_overview.png | Bin 430994 -> 0 bytes .../01_MGMT_API_Walkthrough/01_assets.md | 2 +- .../01_MGMT_API_Walkthrough/07_edrs.md | 106 +- .../{00_Intro.md => README.md} | 8 +- .../02_OpenAPI/00_open_api.md | 11 - .../README.md | 5 - 16 files changed, 130 insertions(+), 1308 deletions(-) delete mode 100644 docs/development/data-plane-http-oauth2.md delete mode 100644 docs/development/edr-api-overview.md delete mode 100644 docs/development/postman/README.md delete mode 100644 docs/development/postman/collection.json rename docs/{kit/Documentation/01_project_structure.md => development/project_structure.md} (100%) rename docs/{kit/Documentation/00_repository_structure.md => development/repository_structure.md} (100%) delete mode 100644 docs/kit/Adoption View/00_adoption-view.md delete mode 100644 docs/kit/Adoption View/images/edc_architecture.png delete mode 100644 docs/kit/Adoption View/images/edc_overview.png rename docs/kit/Development View/01_MGMT_API_Walkthrough/{00_Intro.md => README.md} (97%) delete mode 100644 docs/kit/Development View/02_OpenAPI/00_open_api.md rename docs/kit/Development View/05_EDC Extensions/00_extensions.md => edc-extensions/README.md (92%) diff --git a/core/edr-core/README.md b/core/edr-core/README.md index c6cf7ab9d..8632f1681 100644 --- a/core/edr-core/README.md +++ b/core/edr-core/README.md @@ -9,15 +9,30 @@ via EDR APIs, and it will go through two phases: - Contract Negotiation - Transfer Request -Once the latter has completed the EDR entry will be saved with the associated EDR in the primordial state `NEGOTIATED` +## EDR Core Configuration + +The new API is seamlessly deployed under the well-known management API context, requiring no additional configuration. +However, this is not the case for the EDR Cache storage. The EDR Cache provides two implementations: `InMemory` and `SQL`. +The `edc-runtime-memory` bundle utilizes the `InMemory` implementation for the EDR Cache without any extra setup. +On the other hand, the SQL Cache, found in the `edc-controlplane-postgresql-*` bundles, utilizes the SQL implementation +and requires database access for schema migration and data management. + +| property | description | required | default value | +|-----------------------------------------------------------|------------------------------------------------------|----------|---------------| +| edc.datasource.edr.name | Defines the name associated with the EDR data source | false | edr | +| edc.datasource.edr.url | Defines the database address to access the EDR data | true | | +| edc.datasource.edr.user | Defines EDR database username | true | | +| edc.datasource.edr.password | Defines EDR database password | true | | + +## EDR state machine Configuration + +Once the Transfer Request has completed, the EDR entry will be saved with the associated EDR in the primordial state `NEGOTIATED` The state machine will also manage the lifecycle and the renewal of the `EDR`. If a token is about to expire it will transition to the `REFRESHING` state and fire off another transfer process with the same parameter of the expiring one. Once completed the new `EDR` will be cached and the old ones, with same `assetId` and `agreementId` will transition into the `EXPIRED` state. Then the state machine will also monitor the `EXPIRED` ones, and will delete them according to the retention configuration. -## 1. EDR state machine Configuration - | Key | Description | Mandatory | Default | |:--------------------------------------------|:----------------------------------------------------------------------------------------------------|-----------|---------| | edc.edr.state-machine.iteration-wait-millis | The iteration wait time in milliseconds in the edr state machine | | 1000 | diff --git a/docs/development/README.md b/docs/development/README.md index 7887c3f44..374d19297 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -1,10 +1,10 @@ # Development Documentation - [Coding principles](coding-principles.md) +- [Project Structure](project_structure.md) +- [Repository Structure](repository_structure.md) - [Decision Records](decision-records) - [Release](Release.md) -## Deep Dives -- [Data Plane Http OAuth2](data-plane-http-oauth2.md) -- [EDR Api Overview](edr-api-overview.md) + diff --git a/docs/development/data-plane-http-oauth2.md b/docs/development/data-plane-http-oauth2.md deleted file mode 100644 index 63b99319f..000000000 --- a/docs/development/data-plane-http-oauth2.md +++ /dev/null @@ -1,7 +0,0 @@ -# Data Plane HTTP OAuth2 - -The Data Plane HTTP OAuth2 extension permits the data-plane to fetch the data requested from a consumer from an HTTP server -with an OAuth2 authentication layer. - -For further documentation, please refer to the extension README: - diff --git a/docs/development/edr-api-overview.md b/docs/development/edr-api-overview.md deleted file mode 100644 index e86290517..000000000 --- a/docs/development/edr-api-overview.md +++ /dev/null @@ -1,261 +0,0 @@ -# Endpoint Data Reference API Overview - -## Introduction - -The **Endpoint Data Reference** serves the purpose of streamlining the consumer connector operators' interactions. Through its API, acts as a facade for two fundamental processes involved in Asset consumption: **contract negotiation** and **transfer process** initialization and additionally, it enables the management of **EDR**s (Endpoint Data References). - -## Configuration - -The new API is seamlessly deployed under the well-known management API context, requiring no additional configuration. However, this is not the case for the EDR Cache storage. The EDR Cache provides two implementations: `InMemory` and `SQL`. The `edc-runtime-memory` bundle utilizes the `InMemory` implementation for the EDR Cache without any extra setup. On the other hand, the SQL Cache, found in the `edc-controlplane-postgresql-*` bundles, utilizes the SQL implementation and requires database access for schema migration and data management. - -| property | description | required | default value | -|-----------------------------------------------------------|------------------------------------------------------|----------|---------------| -| edc.datasource.edr.name | Defines the name associated with the EDR data source | false | edr | -| edc.datasource.edr.url | Defines the database address to access the EDR data | true | | -| edc.datasource.edr.user | Defines EDR database username | true | | -| edc.datasource.edr.password | Defines EDR database password | true | | - -## Features - -### EDR Negotiation | Contract Negotiation and Transfer Process in a single request - -This endpoint will perform the contract negotiation, transfer process and EDR storage respectively. - -> Please note that the `data destination` will always be `HttpProxy`, requiring a request against the provider's `data-plane` to fetch the asset data. - -| Path | Method | Spec | -|-------------------------|--------|----------------------------------------------------------------------------------------------------------------------------------------| -| `/edrs` | POST | [OpenApi](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1#/Control%20Plane%20EDR%20Api/initiateEdrNegotiation) | - -#### Payload - -```json -{ - "@context": { - "@vocab": "https://w3id.org/edc/v0.0.1/ns/", - "odrl": "http://www.w3.org/ns/odrl/2/" - }, - "@type": "NegotiationInitiateRequestDto", - "connectorAddress": "", - "protocol": "dataspace-protocol-http", - "connectorId": "", - "providerId": "", - "offer": { - "offerId": "", - "assetId": "", - "policy": { - "@type": "odrl:Set", - "odrl:permission": { - "odrl:target": "", - "odrl:action": { - "odrl:type": "USE" - } - }, - "odrl:target": "" - } - } -} -``` - -#### EDR Negotiation Response - -```json -{ - "@type": "edc:IdResponseDto", - "@id": "contract-negotiation-id", - "edc:createdAt": 1687405819736, - "@context": { - "dct": "https://purl.org/dc/terms/", - "tx": "https://w3id.org/tractusx/v0.0.1/ns/", - "edc": "https://w3id.org/edc/v0.0.1/ns/", - "dcat": "https://www.w3.org/ns/dcat/", - "odrl": "http://www.w3.org/ns/odrl/2/", - "dspace": "https://w3id.org/dspace/v0.8/" - } -} -``` - -The EDR negotiation returns only the id of the negotiation process that has been started. - -The EDR negotiation relies on two steps: contract negotiation and transfer process, both of which are asynchronous. -In order to get notified in every state transition of the two state machines, callbacks can be configured when starting -the EDR negotiation: - -```json -{ - ... - "callbackAddresses": [ - { - "uri": "http://localhost:8080/hooks", - "events": [ - "transfer.process.started" - ], - "transactional": false - } - ] -} -``` - -In this case we are interested only when the transfer process transition to the `STARTED` state. - -Available events type in callbacks are: - -- Transfer Process [`transfer.process.started`,`transfer.process.initiated`,`transfer.process.terminated`,`transfer.process.completed`] -- Contract Negotiation [`contract.negotiation.initiated`,`contract.negotiation.agreed`,`contract.negotiation.accepted`, `contract.negotiation.terminated`,`contract.negotiation.finalized`] - -For getting all events in transfer process or contract negotiation we can simply use `transfer.process` or `contract.negotiation` -in order to be notified of all state transition. - -Once the EDR has been negotiated with the provider, the EDR itself will be stored in the configured vault and the metadata -associated to it in the configured datasource for future querying. - -Since `tractusx-edc` [v0.5.1](https://github.com/eclipse-tractusx/tractusx-edc/releases/tag/0.5.1) the cached EDRs also come with a state machine that will manage the lifecycle of an EDR -on the consumer side. That means that it will auto-renew it is nearing its expiration date by -firing another transfer process request with the same parameters as the original one. Once renewed, the old EDR -will transition to the `EXPIRED` state, and it will be removed from the database and the vault according to the [configuration](../../core/edr-core/README.md). - -### EDR Management | Fetch cached EDRs - -This endpoint will retrieve all EDR entries by their `assetId` or `agreementId` references, which are passed as `query parameters`. - -| Path | Method | Spec | -|-------------------------|--------|---------------------------------------------------------------------------------------------------------------------------| -| `/edrs` | GET | [OpenApi](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1#/Control%20Plane%20EDR%20Api/queryEdrs) | - -#### EDR Entry Response - -```json -[ - { - "@type": "tx:EndpointDataReferenceEntry", - "edc:agreementId": "", - "edc:transferProcessId": "", - "edc:assetId": "", - "edc:providerId": "", - "tx:edrState": "NEGOTIATED", - "tx:expirationDate": 1693928132000, - "@context": { - "dct": "https://purl.org/dc/terms/", - "tx": "https://w3id.org/tractusx/v0.0.1/ns/", - "edc": "https://w3id.org/edc/v0.0.1/ns/", - "dcat": "https://www.w3.org/ns/dcat/", - "odrl": "http://www.w3.org/ns/odrl/2/", - "dspace": "https://w3id.org/dspace/v0.8/" - } - } -] -``` - -### EDR Management | Fetch single EDR - -This endpoint, through the `transfer-process-id` passed as `path variable`, will retrieve the actual EDR. - -| Path | Method | Spec | -|-----------------------------------------------|--------|------------------------------------------------------------------------------------------------------------------------| -| `/edrs/{transfer-process-id}` | GET | [OpenApi](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1#/Control%20Plane%20EDR%20Api/getEdr) | - -#### EDR Response - -```json -{ - "@type": "edc:DataAddress", - "edc:cid": "cid", - "edc:type": "EDR", - "edc:authCode": "authcode", - "edc:endpoint": "http://provider-data-plane/public-url", - "edc:id": "transfer-process-id", - "edc:authKey": "Authorization", - "@context": { - "dct": "https://purl.org/dc/terms/", - "tx": "https://w3id.org/tractusx/v0.0.1/ns/", - "edc": "https://w3id.org/edc/v0.0.1/ns/", - "dcat": "https://www.w3.org/ns/dcat/", - "odrl": "http://www.w3.org/ns/odrl/2/", - "dspace": "https://w3id.org/dspace/v0.8/" - } -} -``` - -> Please note that now with the EDR you are able to request the `Asset` data from provider's `data-plane`. - -### EDR Management | Deleting a cached EDR - -This endpoint will delete the EDR entry associated with the `transfer-process-id` and it will remove the EDR itself -from the vault. - -| Path | Method | Spec | -|-----------------------------------------------|--------|---------------------------------------------------------------------------------------------------------------------------| -| `/edrs/{transfer-process-id}` | DELETE | [OpenApi](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1#/Control%20Plane%20EDR%20Api/deleteEdr) | - -### EDR Usage | Fetching data - -Once the EDR has been negotiated and stored, the data can be fetched in two ways depending on the use-case: - -- Provider data-plane ("EDC way") -- Consumer proxy (Tractus-X EDC simplified) - -#### Provider data-plane - -Once the right EDR has been identified using the EDR management API the current asset/agreement/transfer-process that -you want to transfer, we can use the `endpont`, `authCode` and `authKey` to make the request: - -```sh -curl --request GET \ - --url http://provider-data-plane/public-url \ - --header 'Authorization: auth-code' \ - --header 'Content-Type: application/json' -``` - -If the HTTP asset has been configured to proxy also query parameters and path segments they will be forwarded -to the backend from the provider data-plane: - -```sh -curl --request GET \ - --url http://provider-data-plane/public-url/subroute?foo=bar \ - --header 'Authorization: auth-code' \ - --header 'Content-Type: application/json' -``` - -#### Consumer data-plane (proxy) - -The Consumer data-plane proxy is an extension available in `tractusx-edc` that will use the EDR store to simplify -the data request on consumer side. The documentation is available [here](../../edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/README.md). - -The only API is: - -| Path | Method | Spec | -|---------------------------|--------|-----------------------------------------------------------------------------------------------------------------------------| -| `/aas/request` | POST | [OpenApi](https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/0.5.1#/Data%20Plane%20Proxy%20API/requestAsset) | - -which fetches the data according to the input body. The body should contain the `assetId` plus `providerId` or the `transferProcessId`, -which identifies the EDR to use for fetching data and an `endpointUrl` which is the [provider gateway](../../edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/README.md) -on which the data is available. - -Example: - -```sh -curl --request POST \ - --url http://localhost:8186/proxy/aas/request \ - --header 'Content-Type: application/json' \ - --header 'X-Api-Key: password' \ - --data '{"assetId": "1","providerId": "BPNL000000000001","endpointUrl": "http://localhost:8080/api/gateway/aas/test"}' -``` - -Alternatively if the `endpointUrl` is not known or the gateway on the provider side is not configured, it can be omitted and the `Edr#endpointUrl` -will be used as base url. In this scenario if needed, users can provide additional properties to the request for composing the final -url: - -- `pathSegments` sub path to append to the base url -- `queryParams` query parameters to add to the url - -Example of an asset with base url `http://localhost:8080/test` - -```sh -curl --request POST \ - --url http://localhost:8186/proxy/aas/request \ - --header 'Content-Type: application/json' \ - --header 'X-Api-Key: password' \ - --data '{"assetId": "1","providerId": "BPNL000000000001","pathSegments": "/sub","queryParams": "foo=bar"}' -``` - -The final url will look like `http://localhost:8080/test/sub?foo=bar`. diff --git a/docs/development/postman/README.md b/docs/development/postman/README.md deleted file mode 100644 index ceaed922b..000000000 --- a/docs/development/postman/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# Postman Collection - -## Prerequisites - -[![Postman][postman-shield]][postman-url] - -## Postman - -The Postman app can be used to send and receive EDC messages. - -### Install/Download Postman - -please visit - -### Import Postman collection - -please visit - -## Collection - -The postman collection contains the most common API calls. Please note that the - -- Policy & Negotiation calls come in pairs for the different kinds of policies -- the 'Data' call only works when using the All-In-One Deployment of this repository - -[postman-shield]: https://img.shields.io/badge/Postman-URL-orange -[postman-url]: https://www.postman.com - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/development/postman/collection.json b/docs/development/postman/collection.json deleted file mode 100644 index b15fefd43..000000000 --- a/docs/development/postman/collection.json +++ /dev/null @@ -1,925 +0,0 @@ -{ - "info": { - "_postman_id": "e35463fb-d1be-4794-b35b-2d40d46c4655", - "name": "tractusx-edc_dsp", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", - "_exporter_id": "28118277" - }, - "item": [ - { - "name": "Create Asset", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Status code is 201\", function () {", - " pm.response.to.have.status(201);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"@context\": {\n \"edc\": \"https://w3id.org/edc/v0.0.1/ns/\"\n },\n \"@id\": \"{{ASSET_ID}}\",\n \"properties\": {\n \"key\": \"value\"\n },\n \"privateProperties\": {\n \"privateKey\": \"privateValue\"\n },\n \"dataAddress\": {\n \"@type\": \"DataAddress\",\n \"proxyPath\": \"true\",\n \"type\": \"HttpData\",\n \"proxyQueryParams\": \"true\",\n \"baseUrl\": \"https://jsonplaceholder.typicode.com/todos\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL_V3}}/assets", - "host": [ - "{{PROVIDER_MANAGEMENT_URL_V3}}" - ], - "path": [ - "assets" - ] - } - }, - "response": [] - }, - { - "name": "Get all Assets", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\r\n \"@context\": {\r\n \"edc\": \"https://w3id.org/edc/v0.0.1/ns/\"\r\n },\r\n \"@type\": \"QuerySpec\",\r\n \"offset\": 0,\r\n \"limit\": 10,\r\n \"sortOrder\": \"DESC\",\r\n \"sortField\": \"fieldName\",\r\n \"filterExpression\": []\r\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL_V3}}/assets/request", - "host": [ - "{{PROVIDER_MANAGEMENT_URL_V3}}" - ], - "path": [ - "assets", - "request" - ] - } - }, - "response": [] - }, - { - "name": "Get Asset by ID", - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL_V3}}/assets/{{ASSET_ID}}", - "host": [ - "{{PROVIDER_MANAGEMENT_URL_V3}}" - ], - "path": [ - "assets", - "{{ASSET_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Delete Asset by ID", - "request": { - "method": "DELETE", - "header": [], - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL_V3}}/assets/{{ASSET_ID}}", - "host": [ - "{{PROVIDER_MANAGEMENT_URL_V3}}" - ], - "path": [ - "assets", - "{{ASSET_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Create Policy", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"@context\": {\n \"odrl\": \"http://www.w3.org/ns/odrl/2/\"\n },\n \"@type\": \"PolicyDefinitionRequestDto\",\n \"@id\": \"{{POLICY_ID}}\",\n \"policy\": {\n\t\t\"@type\": \"Policy\",\n\t\t\"odrl:permission\" : [{\n\t\t\t\"odrl:action\" : \"USE\",\n\t\t\t\"odrl:constraint\" : {\n\t\t\t\t\"@type\": \"LogicalConstraint\",\n\t\t\t\t\"odrl:or\" : [{\n\t\t\t\t\t\"@type\" : \"Constraint\",\n\t\t\t\t\t\"odrl:leftOperand\" : \"BusinessPartnerNumber\",\n\t\t\t\t\t\"odrl:operator\" : {\n \"@id\": \"odrl:eq\"\n },\n\t\t\t\t\t\"odrl:rightOperand\" : \"{{POLICY_BPN}}\"\n\t\t\t\t}]\n\t\t\t}\n\t\t}]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/policydefinitions", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "policydefinitions" - ] - } - }, - "response": [] - }, - { - "name": "Get Policy by ID", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{POLICY_ID}}\",\n \"policy\": {\n \"prohibitions\": [],\n \"obligations\": [],\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": []\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/policydefinitions/{{POLICY_ID}}", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "policydefinitions", - "{{POLICY_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Get all Policies", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"@context\": {\n \"odrl\": \"http://www.w3.org/ns/odrl/2/\"\n },\n \"id\": \"{{POLICY_ID}}\",\n \"policy\": {\n \"prohibitions\": [],\n \"obligations\": [],\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": []\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/policydefinitions/request", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "policydefinitions", - "request" - ] - } - }, - "response": [] - }, - { - "name": "Delte Policy by ID", - "request": { - "method": "DELETE", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{POLICY_ID}}\",\n \"policy\": {\n \"prohibitions\": [],\n \"obligations\": [],\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": []\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/policydefinitions/{{POLICY_ID}}", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "policydefinitions", - "{{POLICY_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Create Contract Definitiion", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"@context\": {},\n \"@id\": \"{{CONTRACT_DEFINITION_ID}}\",\n \"@type\": \"ContractDefinition\",\n \"accessPolicyId\": \"{{ACCESS_POLICY_ID}}\",\n \"contractPolicyId\": \"{{CONTRACT_POLICY_ID}}\",\n \"assetsSelector\" : {\n \"@type\" : \"CriterionDto\",\n \"operandLeft\": \"{{EDC_NAMESPACE}}id\",\n \"operator\": \"=\",\n \"operandRight\": \"{{ASSET_ID}}\"\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/contractdefinitions", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "contractdefinitions" - ] - } - }, - "response": [] - }, - { - "name": "Get Contract Definition by ID", - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{POLICY_ID}}\",\n \"policy\": {\n \"prohibitions\": [],\n \"obligations\": [],\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": []\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/contractdefinitions/{{CONTRACT_DEFINITION_ID}}", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "contractdefinitions", - "{{CONTRACT_DEFINITION_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Get all Contract Definitiions", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/contractdefinitions/request", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "contractdefinitions", - "request" - ] - } - }, - "response": [] - }, - { - "name": "Delte Contract Definition", - "request": { - "method": "DELETE", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"id\": \"{{POLICY_ID}}\",\n \"policy\": {\n \"prohibitions\": [],\n \"obligations\": [],\n \"permissions\": [\n {\n \"edctype\": \"dataspaceconnector:permission\",\n \"action\": {\n \"type\": \"USE\"\n },\n \"constraints\": []\n }\n ]\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{PROVIDER_MANAGEMENT_URL}}/contractdefinitions/{{CONTRACT_DEFINITION_ID}}", - "host": [ - "{{PROVIDER_MANAGEMENT_URL}}" - ], - "path": [ - "contractdefinitions", - "{{CONTRACT_DEFINITION_ID}}" - ] - } - }, - "response": [] - }, - { - "name": "Query Catalog", - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\r\n \"@context\": {},\r\n \"protocol\": \"dataspace-protocol-http\",\r\n \"providerUrl\": \"{{PROVIDER_PROTOCOL_URL}}\",\r\n \"querySpec\": {\r\n \"offset\": 0,\r\n \"limit\": 100,\r\n \"filter\": \"\",\r\n \"range\": {\r\n \"from\": 0,\r\n \"to\": 100\r\n },\r\n \"criterion\": \"\"\r\n }\r\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/catalog/request", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "catalog", - "request" - ] - } - }, - "response": [] - }, - { - "name": "Initiate Negotation", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", function () {", - " var jsonData = pm.response.json();", - " pm.collectionVariables.set(\"NEGOTIATION_ID\", jsonData.id);", - "", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\"@context\": {\n\t\t\"odrl\": \"http://www.w3.org/ns/odrl/2/\"\n\t},\n\t\"@type\": \"NegotiationInitiateRequestDto\",\n\t\"connectorAddress\": \"{{PROVIDER_PROTOCOL_URL}}\",\n\t\"protocol\": \"dataspace-protocol-http\",\n\t\"connectorId\": \"{{PROVIDER_ID}}\",\n\t\"providerId\": \"{{PROVIDER_ID}}\",\n\t\"offer\": {\n\t\t\"offerId\": \"MQ==:MQ==:ZDM4Nzk3NmUtZjA0Ny00ZmNjLWFhNWItYjQwYmVkMDBhZGYy\",\n\t\t\"assetId\": \"{{ASSET_ID}}\",\n\t\t\"policy\": {\n\t\t\t\"@type\": \"odrl:Set\",\n\t\t\t\"odrl:permission\": {\n\t\t\t\t\"odrl:target\": \"{{ASSET_ID}}\",\n\t\t\t\t\"odrl:action\": {\n\t\t\t\t\t\"odrl:type\": \"USE\"\n\t\t\t\t},\n\t\t\t\t\"odrl:constraint\": {\n\t\t\t\t\t\"odrl:or\": {\n\t\t\t\t\t\t\"odrl:leftOperand\": \"BusinessPartnerNumber\",\n\t\t\t\t\t\t\"odrl:operator\": {\n \"@id\": \"odrl:eq\"\n },\n\t\t\t\t\t\t\"odrl:rightOperand\": \"{{POLICY_BPN}}\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"odrl:prohibition\": [],\n\t\t\t\"odrl:obligation\": [],\n\t\t\t\"odrl:target\": \"{{ASSET_ID}}\"\n\t\t}\n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/contractnegotiations", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "contractnegotiations" - ] - } - }, - "response": [] - }, - { - "name": "Get all Negotations", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/contractnegotiations/request", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "contractnegotiations", - "request" - ] - } - }, - "response": [] - }, - { - "name": "Cancel Negotation by ID", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/contractnegotiations/7cff6ecb-7e5e-40b8-b101-eba3f2045b1f/cancel", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "contractnegotiations", - "7cff6ecb-7e5e-40b8-b101-eba3f2045b1f", - "cancel" - ] - } - }, - "response": [] - }, - { - "name": "Initiate Transfer", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "pm.collectionVariables.set(\"TRANSFER_ID\", Math.random());" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", function () {", - " var jsonData = pm.response.json();", - " pm.collectionVariables.set(\"TRANSFER_PROCESS_ID\", jsonData.id);", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"@context\": {\n \"odrl\": \"http://www.w3.org/ns/odrl/2/\"\n },\n \"assetId\": \"{{ASSET_ID}}\",\n \"connectorAddress\": \"{{PROVIDER_PROTOCOL_URL}}\",\n \"connectorId\": \"{{PROVIDER_ID}}\",\n \"contractId\": \"MQ==:MQ==:NzgyYTVlMWMtY2UxNi00NDZmLThkZGQtMDc4MWZkMDg1NDU0\",\n \"dataDestination\": {\n \"type\": \"HttpProxy\"\n },\n \"managedResources\": false,\n \"privateProperties\": {\n \"receiverHttpEndpoint\": \"{{BACKEND_SERVICE}}\"\n },\n \"protocol\": \"dataspace-protocol-http\",\n \"transferType\": {\n \"contentType\": \"application/octet-stream\",\n \"isFinite\": true\n }\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/transferprocesses", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "transferprocesses" - ] - } - }, - "response": [] - }, - { - "name": "Get Transfer by ID", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "GET", - "header": [], - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/transferprocesses/8e428b80-46a5-4325-87e5-592518f7666b", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "transferprocesses", - "8e428b80-46a5-4325-87e5-592518f7666b" - ] - } - }, - "response": [] - }, - { - "name": "Get all Transfers", - "event": [ - { - "listen": "prerequest", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - }, - { - "listen": "test", - "script": { - "exec": [ - "" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_MANAGEMENT_URL}}/transferprocesses/request", - "host": [ - "{{CONSUMER_MANAGEMENT_URL}}" - ], - "path": [ - "transferprocesses", - "request" - ] - } - }, - "response": [] - }, - { - "name": "Initiate EDR Negotation", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", function () {", - " var jsonData = pm.response.json();", - " pm.collectionVariables.set(\"NEGOTIATION_ID\", jsonData.id);", - "", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n\t\"@context\": {\n\t\t\"odrl\": \"http://www.w3.org/ns/odrl/2/\"\n\t},\n\t\"@type\": \"NegotiationInitiateRequestDto\",\n\t\"connectorAddress\": \"{{PROVIDER_PROTOCOL_URL}}\",\n\t\"protocol\": \"dataspace-protocol-http\",\n\t\"connectorId\": \"{{PROVIDER_ID}}\",\n\t\"providerId\": \"{{PROVIDER_ID}}\",\n\t\"offer\": {\n\t\t\"offerId\": \"MQ==:MQ==:ZDM4Nzk3NmUtZjA0Ny00ZmNjLWFhNWItYjQwYmVkMDBhZGYy\",\n\t\t\"assetId\": \"{{ASSET_ID}}\",\n\t\t\"policy\": {\n\t\t\t\"@type\": \"odrl:Set\",\n\t\t\t\"odrl:permission\": {\n\t\t\t\t\"odrl:target\": \"{{ASSET_ID}}\",\n\t\t\t\t\"odrl:action\": {\n\t\t\t\t\t\"odrl:type\": \"USE\"\n\t\t\t\t},\n\t\t\t\t\"odrl:constraint\": {\n\t\t\t\t\t\"odrl:or\": {\n\t\t\t\t\t\t\"odrl:leftOperand\": \"BusinessPartnerNumber\",\n\t\t\t\t\t\t\"odrl:operator\": {\n \"@id\": \"odrl:eq\"\n },\n\t\t\t\t\t\t\"odrl:rightOperand\": \"{{POLICY_BPN}}\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"odrl:prohibition\": [],\n\t\t\t\"odrl:obligation\": [],\n\t\t\t\"odrl:target\": \"{{ASSET_ID}}\"\n\t\t}\n\t}\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_ADAPTER_URL}}/edrs", - "host": [ - "{{CONSUMER_ADAPTER_URL}}" - ], - "path": [ - "edrs" - ] - } - }, - "response": [] - }, - { - "name": "Query EDRs Cached", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", function () {", - " var jsonData = pm.response.json();", - " pm.collectionVariables.set(\"NEGOTIATION_ID\", jsonData.id);", - "", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_ADAPTER_URL}}/edrs?assetId={{ASSET_ID}}", - "host": [ - "{{CONSUMER_ADAPTER_URL}}" - ], - "path": [ - "edrs" - ], - "query": [ - { - "key": "assetId", - "value": "{{ASSET_ID}}" - } - ] - } - }, - "response": [] - }, - { - "name": "Get EDR by tp ID", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", function () {", - " var jsonData = pm.response.json();", - " pm.collectionVariables.set(\"NEGOTIATION_ID\", jsonData.id);", - "", - "});" - ], - "type": "text/javascript" - } - } - ], - "protocolProfileBehavior": { - "disableBodyPruning": true - }, - "request": { - "method": "GET", - "header": [], - "body": { - "mode": "raw", - "raw": "", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "{{CONSUMER_ADAPTER_URL}}/edrs/e1e986be-3ac3-4166-8fa9-b44be00a37ba", - "host": [ - "{{CONSUMER_ADAPTER_URL}}" - ], - "path": [ - "edrs", - "e1e986be-3ac3-4166-8fa9-b44be00a37ba" - ] - } - }, - "response": [] - }, - { - "name": "Get Asset Data with proxy", - "event": [ - { - "listen": "test", - "script": { - "exec": [ - "pm.test(\"Body matches string\", function () {", - " var jsonData = pm.response.json();", - " pm.collectionVariables.set(\"NEGOTIATION_ID\", jsonData.id);", - "", - "});" - ], - "type": "text/javascript" - } - } - ], - "request": { - "method": "POST", - "header": [], - "body": { - "mode": "raw", - "raw": "{\n \"assetId\": \"{{ASSET_ID}}\",\n \"endpointUrl\": \"http://plato-dataplane:8080/api/gateway/aas/1\"\n}", - "options": { - "raw": { - "language": "json" - } - } - }, - "url": { - "raw": "http://localhost:8186/proxy/aas/request", - "protocol": "http", - "host": [ - "localhost" - ], - "port": "8186", - "path": [ - "proxy", - "aas", - "request" - ] - } - }, - "response": [] - } - ], - "auth": { - "type": "apikey", - "apikey": [ - { - "key": "value", - "value": "password", - "type": "string" - }, - { - "key": "key", - "value": "X-Api-Key", - "type": "string" - } - ] - }, - "event": [ - { - "listen": "prerequest", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - }, - { - "listen": "test", - "script": { - "type": "text/javascript", - "exec": [ - "" - ] - } - } - ], - "variable": [ - { - "key": "CONSUMER_MANAGEMENT_URL", - "value": "http://localhost:31364/management/v2" - }, - { - "key": "CONSUMER_MANAGEMENT_URL_V3", - "value": "http://localhost:31364/management/v3", - "type": "string" - }, - { - "key": "PROVIDER_PROTOCOL_URL", - "value": "http://plato-controlplane:8084/api/v1/dsp" - }, - { - "key": "PROVIDER_MANAGEMENT_URL", - "value": "http://localhost:30279/management/v2" - }, - { - "key": "PROVIDER_MANAGEMENT_URL_V3", - "value": "http://localhost:30279/management/v3", - "type": "string" - }, - { - "key": "ASSET_ID", - "value": "1", - "type": "default" - }, - { - "key": "POLICY_ID", - "value": "1", - "type": "default" - }, - { - "key": "CONTRACT_POLICY_ID", - "value": "1", - "type": "default" - }, - { - "key": "ACCESS_POLICY_ID", - "value": "1", - "type": "default" - }, - { - "key": "CONTRACT_DEFINITION_ID", - "value": "1", - "type": "default" - }, - { - "key": "POLICY_BPN", - "value": "BPNSOKRATES", - "type": "default" - }, - { - "key": "NEGOTIATION_ID", - "value": "" - }, - { - "key": "AGREEMENT_ID", - "value": "" - }, - { - "key": "TRANSFER_ID", - "value": "" - }, - { - "key": "TRANSFER_PROCESS_ID", - "value": "" - }, - { - "key": "BACKEND_SERVICE", - "value": "http://backend:8080", - "type": "string" - }, - { - "key": "AGREEMENT-ID", - "value": "" - }, - { - "key": "authCode", - "value": "" - }, - { - "key": "PROVIDER_ID", - "value": "BPNPLATO", - "type": "string" - }, - { - "key": "EDC_NAMESPACE", - "value": "https://w3id.org/edc/v0.0.1/ns/", - "type": "string" - }, - { - "key": "CONSUMER_ADAPTER_URL", - "value": "http://localhost:31364/management", - "type": "string" - } - ] -} \ No newline at end of file diff --git a/docs/kit/Documentation/01_project_structure.md b/docs/development/project_structure.md similarity index 100% rename from docs/kit/Documentation/01_project_structure.md rename to docs/development/project_structure.md diff --git a/docs/kit/Documentation/00_repository_structure.md b/docs/development/repository_structure.md similarity index 100% rename from docs/kit/Documentation/00_repository_structure.md rename to docs/development/repository_structure.md diff --git a/docs/kit/Adoption View/00_adoption-view.md b/docs/kit/Adoption View/00_adoption-view.md deleted file mode 100644 index 4e850b530..000000000 --- a/docs/kit/Adoption View/00_adoption-view.md +++ /dev/null @@ -1,51 +0,0 @@ -# Adoption View - -The ConnectorKit provides a connector framework, based on the [Eclipse Dataspace Connector][edc-url] for sovereign, cross-enterprise data exchange. - -![EDC Overview](images/edc_overview.png) - -Trust, interoperability and data sovereignty, these are the objectives and values for secure and sustainable peer-to-peer data exchange between organizations and companies. The claim is data sovereignty: Whoever makes data available retains control and decides individually who is involved in the data exchange, how, when, where and under what conditions. - -A corresponding concept was developed in the context of [Gaia-X][gaiax-url] and the [International Data Space Association][idsa-url]. The essential software component is the connector. - -With the [EDC][edc-url], a new central communication component was created, which implements the following architectural principles: - -- Simple, maintaining a small and efficient core with as few external dependencies as possible -- Interoperable, independent of platforms and ecosystems -- Decentralized, software components with the necessary capabilities for participating in a data room are located on the partners' side, data is only exchanged between the agreed points. -- Data protection is more important than data sharing, data to be transmitted are fundamentally linked to policies via contracts; a transfer without a contract is not possible. -- Separation of metadata and data enables high throughput rates for the actual data transfer. -- Consistent semantics for the data is the basis for the consistency of digital value creation. -- As far as possible, all processes, starting with determining the identity, through ensuring the contractually agreed regulations to data transmission, are automated. -- Existing standards and protocols ([GAIA-X][gaiax-url] and [IDSA][idsa-url]) are used as far as possible. - -The [EDC][edc-url] as a connector implements a framework agreement for sovereign, cross-organizational data exchange. The International Data Spaces Standard (IDS) and relevant principles in connection with [GAIA-X][gaiax-url] were implemented. The connector is designed to be extensible to support alternative protocols and to be integrated into different ecosystems. - -The objective is to set up a decentralized software component on the part of the respective partner, which bundles the skills required to participate in a data room and enables peer-to-peer connections between participants. -The focus here is particularly on the data sovereignty of the independent companies. -The functionality required for this is bundled in the open-source project "Eclipse Dataspace Connector", to which members of the Eclipse Foundation contribute. - -The main difference between the EDC and the previous connectors of the [IDSA][idsa-url] is the separation of the communication into a channel for the metadata and one for the actual data exchange. The channel for the data supports various transmission protocols via so-called data plane extensions. The metadata is transmitted directly via the EDC interface, while the actual data exchange then takes place via the appropriate channel extension. In this way, a highly scalable data exchange is made possible. - -![EDC Architecture](images/edc_architecture.png) - -The architecture of the EDC combines various services that are necessary for the above principles: - -- An interface to the Identity Provider service, currently [IDSA][idsa-url]'s [Identity And Trust Protocol][iatp-url]. This central service provides the identity and the corresponding authentication of the participants in the data exchange. (There is no authorization at this point). Decentralized solutions will also be supported in the future. -- The provision of possible offers (contract offering) which, on the one hand, stipulates the data offered and the associated terms of use (policies) in corresponding contracts. -- An interface for manual selection of data and associated contract offers. -- The actual data transfer via the data plane extension -- The connection of software systems on the customer and provider side - -[edc-url]: https://github.com/eclipse-edc/Connector -[gaiax-url]: https://www.data-infrastructure.eu/GAIAX/Navigation/EN/Home/home.html -[idsa-url]: https://internationaldataspaces.org/ -[iatp-url]: https://github.com/eclipse-tractusx/ssi-docu - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Adoption View/images/edc_architecture.png b/docs/kit/Adoption View/images/edc_architecture.png deleted file mode 100644 index 99b5525eae8358c94213239d15610c004bcadb2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7768 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/edrs` | Consumer App, Consumer EDC & Provider EDC | | Data Plane | `` | Consumer App & Provider EDC | +## OpenAPI + +The most recent OpenApi documentation can be found on SwaggerHub. +https://app.swaggerhub.com/apis/eclipse-tractusx-bot/tractusx-edc/ + ## Brief JSON-LD Introduction JSON-LD (JSON for Linked Data) is an extension of JSON that introduces a set of principles and mechanisms to serialize diff --git a/docs/kit/Development View/02_OpenAPI/00_open_api.md b/docs/kit/Development View/02_OpenAPI/00_open_api.md deleted file mode 100644 index 9af6df7e0..000000000 --- a/docs/kit/Development View/02_OpenAPI/00_open_api.md +++ /dev/null @@ -1,11 +0,0 @@ -# OpenAPI - -The following is an automatically generated OpenAPI spec for the TractusX EDC. - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Development View/05_EDC Extensions/00_extensions.md b/edc-extensions/README.md similarity index 92% rename from docs/kit/Development View/05_EDC Extensions/00_extensions.md rename to edc-extensions/README.md index 030c4aa12..e2c2855f9 100644 --- a/docs/kit/Development View/05_EDC Extensions/00_extensions.md +++ b/edc-extensions/README.md @@ -13,11 +13,6 @@ The goal of this extension is to simplify the process of retrieving data out of It returns `EndpointDataReference` object, hiding all the communication details for contract offers, contract negotiation, transfer process and retrieving the underlying data through the data-planes. -## CX OAuth2 - -This extension enables OAuth2 authentication between EDC connectors, -instead of the more complex authentication flow used by core EDC. - ## Data Encryption The EDC encrypts sensitive information inside a token it sends to other applications (potentially cross-company). From 9d25a06504a5786e1d0452b5e4088267bc83e3b4 Mon Sep 17 00:00:00 2001 From: arnoweiss Date: Tue, 23 Jan 2024 09:36:07 +0100 Subject: [PATCH 46/83] docs: fix #980, #537 docs: point to deployment properties in charts folder docs: harmonize file naming docs: remove operation view docs: reorganize docs folder structure update DEPENDENCIES readd blank line to DEPENDENCIES --- DEPENDENCIES | 2 +- docs/development/README.md | 6 +- ...ject_structure.md => project-structure.md} | 0 docs/development/{Release.md => release.md} | 0 ...y_structure.md => repository-structure.md} | 0 docs/kit/Development View/01_domain_model.md | 67 -------- docs/kit/Operation View/00_operation_view.md | 32 ---- .../01_technical_prerequisites.md | 51 ------ .../00_local_setup_controlplane.md | 143 ----------------- .../01_local_setup_dataplane.md | 106 ------------- .../04_Test Your Setup/01_api.md | 72 --------- .../05_Migration/00_upgrading.md | 28 ---- docs/usage/README.md | 78 +++++++++ .../images/domain-model.png | Bin .../management-api-walkthrough}/01_assets.md | 4 +- .../02_policies.md | 12 +- .../03_contractdefinitions.md | 4 +- .../management-api-walkthrough}/04_catalog.md | 0 .../05_contractnegotiations.md | 7 - .../06_transferprocesses.md | 0 .../management-api-walkthrough}/07_edrs.md | 2 +- .../08_contractagreements.md | 0 .../management-api-walkthrough}/README.md | 18 +-- .../README.md | 149 +----------------- .../README.md | 146 +---------------- edc-controlplane/edc-runtime-memory/README.md | 89 +---------- .../edc-dataplane-azure-vault/README.md | 77 +-------- .../edc-dataplane-hashicorp-vault/README.md | 75 +-------- 28 files changed, 123 insertions(+), 1045 deletions(-) rename docs/development/{project_structure.md => project-structure.md} (100%) rename docs/development/{Release.md => release.md} (100%) rename docs/development/{repository_structure.md => repository-structure.md} (100%) delete mode 100644 docs/kit/Development View/01_domain_model.md delete mode 100644 docs/kit/Operation View/00_operation_view.md delete mode 100644 docs/kit/Operation View/01_technical_prerequisites.md delete mode 100644 docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md delete mode 100644 docs/kit/Operation View/02_Local Setup/01_local_setup_dataplane.md delete mode 100644 docs/kit/Operation View/04_Test Your Setup/01_api.md delete mode 100644 docs/kit/Operation View/05_Migration/00_upgrading.md create mode 100644 docs/usage/README.md rename docs/{kit/Development View => usage}/images/domain-model.png (100%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/01_assets.md (98%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/02_policies.md (93%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/03_contractdefinitions.md (96%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/04_catalog.md (100%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/05_contractnegotiations.md (98%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/06_transferprocesses.md (100%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/07_edrs.md (98%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/08_contractagreements.md (100%) rename docs/{kit/Development View/01_MGMT_API_Walkthrough => usage/management-api-walkthrough}/README.md (87%) diff --git a/DEPENDENCIES b/DEPENDENCIES index 812fa39d1..dc0fc2812 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -34,7 +34,7 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.3, Apache-2. maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.0, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.1, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #9160 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, , restricted, clearlydefined +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, Apache-2.0, restricted, clearlydefined maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1, Apache-2.0, approved, #12438 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.1, Apache-2.0, approved, #8802 diff --git a/docs/development/README.md b/docs/development/README.md index 374d19297..9b0dcc351 100644 --- a/docs/development/README.md +++ b/docs/development/README.md @@ -1,10 +1,10 @@ # Development Documentation - [Coding principles](coding-principles.md) -- [Project Structure](project_structure.md) -- [Repository Structure](repository_structure.md) +- [Project Structure](project-structure.md) +- [Repository Structure](repository-structure.md) - [Decision Records](decision-records) -- [Release](Release.md) +- [Release](release.md) diff --git a/docs/development/project_structure.md b/docs/development/project-structure.md similarity index 100% rename from docs/development/project_structure.md rename to docs/development/project-structure.md diff --git a/docs/development/Release.md b/docs/development/release.md similarity index 100% rename from docs/development/Release.md rename to docs/development/release.md diff --git a/docs/development/repository_structure.md b/docs/development/repository-structure.md similarity index 100% rename from docs/development/repository_structure.md rename to docs/development/repository-structure.md diff --git a/docs/kit/Development View/01_domain_model.md b/docs/kit/Development View/01_domain_model.md deleted file mode 100644 index 729987aed..000000000 --- a/docs/kit/Development View/01_domain_model.md +++ /dev/null @@ -1,67 +0,0 @@ -# Domain Model - -![domain-model](images/domain-model.png) - -> The shown picture illustrates only a generic view of the Domain Model and is not intended to show all aspects of the project. - -## Asset - -An asset represents data (databases, files, cache information, etc.) which should be published and shared between -organizations. For each asset, a [`DataAddress`](#data-address) needs to be resolvable. - -## Data address - -A data address is a pointer into the physical storage location where an asset will be stored. - -## Contract - -A contract always contains one or more [`Assets`](#asset) and a single [`Policy`](#policy). The contract construct is -used to define the arrangement between two parties ("consumer" and "provider"). Regarding this arrangement, the contract -passes several stages which are explained below: - -### Contract definition - - Contract definitions associate a policy with assets. A `ContractDefinition` object contains an access policy, a contract - policy, and an asset selector which links the contract to one or more assets. - -### Contract offer - - The contract offer is a dynamic representation of the [`ContractDefinition`](#contract-definition) - for a specific consumer and serves as protocol's data transfer object (DTO) for a particular contract negotiation. - Contract offers are not persisted and will be regenerated on every request. The connector acting as data provider will - generate contract offers only for contract definitions dedicated to the organization or data space participant - operating the requesting connector acting as data consumer. A contract offer is always related to a single asset of - the `ContractDefinition` object (e.g. for a `ContractDefinition` containing three `Asset` objects, the connector will - generate three `ContractOffer` objects). - -### Contract negotiation - - A `ContractNegotiation` captures the current state of the negotiation of a contract (`ContractOffer` -> - `ContractAgreement`) between two parties. This process is inherently asynchronous. - -### Contract agreement - - A contract agreement represents the agreed-upon terms of access and usage of an asset's data between two data space - participants, including a start and an end date and further relevant information. - -## Policy - -Contract policies represent permitted and prohibited actions over a certain asset. These actions can be limited further -by constraints (temporal or spatial) and duties ("e.g. deletion of the data after 30 days"). - -## Transfer process - -After a successful contract negotiation, a `DataRequest` is sent from a consumer connector to a provider connector to -initiate the data transfer. It references the requested [`Asset`](#asset) and [`ContractAgreement`](#contract-agreement) -as well as information about the [data destination](#data-address). - -Similar to the `ContractNegotiation`, this object captures the current state of a data transfer. This process is -inherently asynchronous, so the `TransferProcess` objects are stored in a backing data store (`TransferProcessStore`). - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Operation View/00_operation_view.md b/docs/kit/Operation View/00_operation_view.md deleted file mode 100644 index e9508f5cb..000000000 --- a/docs/kit/Operation View/00_operation_view.md +++ /dev/null @@ -1,32 +0,0 @@ -# Software Operation View - -## Introduction - -The following documentation will guide you through the Tractus-X EDC deployment. -You will be setting up multiple controllers and enabling communication between them. - -:::note Tractus-X EDC or Core EDC? - -The following guide assumes the use of the Tractus-X EDC. -It includes the Core EDC with all of its functionality. -However, this core is supplemented by extensions that allow for the use of additional backends and connection types. -Furthermore, the provided Helm charts, build configuration and tests allow for a smoother deployment. -::: - -## Connector Components - -In a usual EDC environment, each participant would operate at least one connector. -Each of these connectors consists of a control plane and a data plane. -The control plane functions as administration layer and is responsible for resource management, contract negotiation and administering data transfer. -The data plane does the heavy lifting of transferring and receiving data streams. - -Each of these planes comes in several variants, allowing for example secrets to be stored in Azure Vault or a Hashicorp Vault. -The setup on the following pages assumes the use of Hashicorp Vault for secrets and PostgreSQL for data storage. - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Operation View/01_technical_prerequisites.md b/docs/kit/Operation View/01_technical_prerequisites.md deleted file mode 100644 index fb3dcf602..000000000 --- a/docs/kit/Operation View/01_technical_prerequisites.md +++ /dev/null @@ -1,51 +0,0 @@ -# Technical Prerequisites - -## Obtaining Releases - -The most recent release of Tractus-X EDC can be obtained under `https://github.com/eclipse-tractusx/tractusx-edc/releases`. -To create your own build, you can clone the repository at `https://github.com/eclipse-tractusx/tractusx-edc` and consult the provided README.md. -This can be useful if you want to use non-standard extensions or configuration. - -## Container Environment - -Tractus-X releases come in the form of Docker containers and corresponding Helm charts. -As such, recent versions of the following are required. - -- Docker -- Kubernetes -- Helm - -Seeing as these are standard tools, Tractus-X EDC will run on any cloud environment that can accept Helm charts. - -## Backend Dependencies - -The EDC requires backend services for persistence of data and secrets. The following backends are currently supported. - -Data Storage: - -- PostgreSQL database -- In memory database - -Secret Storage: - -- Hashicorp Vault -- Azure Vault - -The default setup assumes data storage via PostgreSQL database. -In memory storage is only recommended for running tests. -Hashicorp Vault is the default secret provider, because it is platform-agnostic. - -Helm charts are provided to set up these services locally. -**These are not suited for production environments.** - -## All-in-one deployment - -An all-in-one deployment is no longer in scope and will not be provided. - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md b/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md deleted file mode 100644 index 9de21147f..000000000 --- a/docs/kit/Operation View/02_Local Setup/00_local_setup_controlplane.md +++ /dev/null @@ -1,143 +0,0 @@ -# Setting up a local EDC Control Plane - -## Basics - -The EDC is split into control and data plane. -The data plane handles the actual data transfer between parties. -The control plane manages the following: - -- Resource Management (e.g. Assets, Policies & Contract Definitions CRUD) -- Contract Offering & Contract Negotiation -- Data Transfer Coordination / Management - -The EDC control plane can run as a single container on your local machine. -The following is a short overview of the necessary steps to start up the default configuration. - -## Building - -Tractus-X EDC is build with Gradle. The following command creates the default control plane as a docker container: - -```shell -./gardlew :edc-controlplane:edc-controlplane-postgresql-hashicorp-vault:dockerize -``` - -## Example Configuration - -The following commands can be used to create the necessary configuration files for the EDC container. -They assume sane - but unsafe - defaults. An explanation of the respective parameters can be found [here](https://github.com/eclipse-tractusx/tractusx-edc/blob/main/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md). - -:::danger -The following configuration is for testing purposes only. Do not use it in production. -::: - -### Example configuration.properties - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.management.port=8181 -web.http.management.path=/data -web.http.control.port=9999 -web.http.control.path=/api/controlplane/control -web.http.protocol.port=8282 -web.http.protocol.path=/api/v1/ids - -edc.receiver.http.dynamic.endpoint=http://backend-service - -edc.ids.title=Eclipse Dataspace Connector -edc.ids.description=Eclipse Dataspace Connector -edc.ids.id=urn:connector:edc -edc.ids.security.profile=base -edc.ids.endpoint=http://localhost:8282/api/v1/ids -edc.ids.maintainer=http://localhost -edc.ids.curator=http://localhost -edc.ids.catalog.id=urn:catalog:default -ids.webhook.address=http://localhost:8282/api/v1/ids - -edc.hostname=localhost - -edc.api.auth.key=password - -# HashiCorp vault related configuration -edc.vault.hashicorp.url=http://vault -edc.vault.hashicorp.token=55555555-6666-7777-8888-999999999999 -edc.vault.hashicorp.timeout.seconds=30 - -# Control- / Data- Plane configuration -edc.transfer.proxy.endpoint=http://dataplane-public-endpoint/public -edc.transfer.proxy.token.signer.privatekey.alias=token-signer-private-key - -# Postgresql related configuration -edc.datasource.asset.name=asset -edc.datasource.asset.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_asset -edc.datasource.asset.user=user -edc.datasource.asset.password=pass -edc.datasource.contractdefinition.name=contractdefinition -edc.datasource.contractdefinition.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractdefinition -edc.datasource.contractdefinition.user=user -edc.datasource.contractdefinition.password=pass -edc.datasource.contractnegotiation.name=contractnegotiation -edc.datasource.contractnegotiation.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractnegotiation -edc.datasource.contractnegotiation.user=user -edc.datasource.contractnegotiation.password=pass -edc.datasource.policy.name=policy -edc.datasource.policy.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_policy -edc.datasource.policy.user=user -edc.datasource.policy.password=pass -edc.datasource.transferprocess.name=transferprocess -edc.datasource.transferprocess.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_transferprocess -edc.datasource.transferprocess.user=user -edc.datasource.transferprocess.password=pass -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` - -### Example opentelemetry.properties - -```shell -# Create opentelemetry.properties -export OPENTELEMETRY_PROPERTIES_FILE=$(mktemp /tmp/opentelemetry.properties.XXXXXX) -cat << 'EOF' > ${OPENTELEMETRY_PROPERTIES_FILE} -otel.javaagent.enabled=false -otel.javaagent.debug=false -EOF -``` - -## Running the Control Plane - -Once the configuration is created, the container can be run directly via docker. - -```shell -docker run \ - -p 8080:8080 -p 8181:8181 -p 8282:8282 -p 9090:9090 -p 9999:9999 \ - -v ${CONFIGURATION_PROPERTIES_FILE:-/dev/null}:/app/configuration.properties \ - -v ${LOGGING_PROPERTIES_FILE:-/dev/null}:/app/logging.properties \ - -v ${OPENTELEMETRY_PROPERTIES_FILE:-/dev/null}:/app/opentelemetry.properties \ - -i edc-controlplane-postgresql-hashicorp-vault:latest -``` - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Operation View/02_Local Setup/01_local_setup_dataplane.md b/docs/kit/Operation View/02_Local Setup/01_local_setup_dataplane.md deleted file mode 100644 index c3e977ef8..000000000 --- a/docs/kit/Operation View/02_Local Setup/01_local_setup_dataplane.md +++ /dev/null @@ -1,106 +0,0 @@ -# Setting up a local EDC Data Plane - -## Basics - -The EDC is split into control and data plane. -The data plane handles the actual data transfer between parties. -The control plane manages the following: - -- Resource Management (e.g. Assets, Policies & Contract Definitions CRUD) -- Contract Offering & Contract Negotiation -- Data Transfer Coordination / Management - -The EDC data plane can run as a single container on your local machine. -The following is a short overview of the necessary steps to start up the default configuration. - -## Building - -Tractus-X EDC is build with Gradle. The following command creates the default data plane as a docker container: - -```shell -./gardlew :edc-dataplane:edc-dataplane-hashicorp-vault:dockerize -``` - -## Example Configuration - -The following commands can be used to create the necessary configuration files for the EDC container. -They assume sane - but unsafe - defaults. An explanation of the respective parameters can be found [here](https://github.com/eclipse-tractusx/tractusx-edc/blob/main/edc-dataplane/edc-dataplane-hashicorp-vault/README.md). - -:::danger - -The following configuration is for testing purposes only. Do not use it in production. -::: - -### Example configuration.properties - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.public.port=8185 -web.http.public.path=/public -web.http.control.port=9999 -web.http.control.path=/api/dataplane/control - -# Validation endpoint of controlplane -edc.dataplane.token.validation.endpoint=http://controlplane:9999/api/controlplane/control/token - -# EDC hostname -edc.hostname=localhost - -# HashiCorp vault related configuration -edc.vault.hashicorp.url=http://vault -edc.vault.hashicorp.token=55555555-6666-7777-8888-999999999999 -edc.vault.hashicorp.timeout.seconds=30 -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` - -### Example opentelemetry.properties - -```shell -# Create opentelemetry.properties -export OPENTELEMETRY_PROPERTIES_FILE=$(mktemp /tmp/opentelemetry.properties.XXXXXX) -cat << 'EOF' > ${OPENTELEMETRY_PROPERTIES_FILE} -otel.javaagent.enabled=true -otel.javaagent.debug=false -EOF -``` - -## Running - -Once the configuration is created, the container can be run directly via docker. - -```shell -docker run \ - -p 8080:8080 -p 8185:8185 -p 9999:9999 -p 9090:9090 \ - -v ${CONFIGURATION_PROPERTIES_FILE:-/dev/null}:/app/configuration.properties \ - -v ${LOGGING_PROPERTIES_FILE:-/dev/null}:/app/logging.properties \ - -v ${OPENTELEMETRY_PROPERTIES_FILE:-/dev/null}:/app/opentelemetry.properties \ - -i edc-dataplane-hashicorp-vault:latest -``` - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Operation View/04_Test Your Setup/01_api.md b/docs/kit/Operation View/04_Test Your Setup/01_api.md deleted file mode 100644 index 0572c8ad8..000000000 --- a/docs/kit/Operation View/04_Test Your Setup/01_api.md +++ /dev/null @@ -1,72 +0,0 @@ -# EDC API Examples - -## API Spec - -The API spec of the EDC is constantly evolving. -The full API documentation for each release can be viewed on [management-api](../Development View/02_OpenAPI/management-api/management-api.info.mdx). -The following are some example API calls for common use cases. -They assume the default parameters from the previous local setup. - -## Create an Asset - -All objects in EDC are created by posting their JSON-serialized representation to the respective API input. -Since most EDC objects are rather openly defined, most of the properties provided depend on the need of the individual user. -Assets are no exception here. - -URL - -```http request -POST http://localhost:8080/api/v1/assets/ -``` - -Body - -```json -{ - "asset": { - "id": "asset1", - "properties": { - "exampleProperty": "exampleValue" - } - }, - "dataAddress": { - "properties": { - "baseUrl": "https://path.to/the_asset", - "type": "HttpData" - } - } -} -``` - -## Request an Asset Catalog - -To inspect the assets available to an EDC connector, we request its catalog. - -URL - -```http request -POST http://localhost:8080/api/v1/catalog/request -``` - -Body - -```json -{ - "providerUrl": "www.example.provider", - "querySpec": { - "filter": "AvailableWithPolicyXYZ", - "limit": 0, - "offset": 0, - "sortField": "id", - "sortOrder": "ASC" - } -} -``` - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/kit/Operation View/05_Migration/00_upgrading.md b/docs/kit/Operation View/05_Migration/00_upgrading.md deleted file mode 100644 index ad9a27b65..000000000 --- a/docs/kit/Operation View/05_Migration/00_upgrading.md +++ /dev/null @@ -1,28 +0,0 @@ -# Upgrading Tractus-X EDC - -Among the goals of Tractus-X EDC is making EDC upgrades as painless as possible. -The changes in each release are documented [here](https://github.com/eclipse-tractusx/tractusx-edc/tree/main/docs/migration). -Usually there are only three steps to each upgrade. - -## Database Migration - -Database migration is simple to accomplish with a PostgreSQL backend. -The [PostgreSQL Migration Extension](https://github.com/eclipse-tractusx/tractusx-edc/tree/main/edc-extensions/postgresql-migration) is the preferred approach. -Alternatively, the `.sql` files therein can be used to manually update the database schema. - -## Updating EDC - -The easy part of the upgrade process is to simply switch the outdated EDC containers with their newer counterparts. - -## Updating Settings - -Check the newest [Migration Documents](https://github.com/eclipse-tractusx/tractusx-edc/tree/develop/docs/migration) -for any changes to the settings structure and apply them to your settings. - -## NOTICE - -This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). - -- SPDX-License-Identifier: Apache-2.0 -- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation -- Source URL: diff --git a/docs/usage/README.md b/docs/usage/README.md new file mode 100644 index 000000000..ac8354321 --- /dev/null +++ b/docs/usage/README.md @@ -0,0 +1,78 @@ +# Domain Model + +The Domain Model explains on a high level the concepts that the EDC introduces. As a lot of the terminology maps to +endpoints of the EDC Management API, it is preliminary for understanding the [Management API Walkthrough](management-api-walkthrough/README.md). + +![domain-model](images/domain-model.png) + +> The shown picture illustrates only a generic view of the Domain Model and is not intended to show all aspects of the project. + +## Asset + +An asset represents data (databases, files, cache information, etc.) which should be published and shared between +organizations. For each asset, a [`DataAddress`](#data-address) needs to be resolvable. Its [API is documented](management-api-walkthrough/01_assets.md) +in the Management API Walkthrough. + +## Data address + +A data address is a pointer into the physical storage location where an asset will be stored. + +## Contract + +A contract always contains one or more [`Assets`](#asset) and a single [`Policy`](#policy). The contract construct is +used to define the arrangement between two parties ("consumer" and "provider"). Regarding this arrangement, the contract +passes several stages which are explained below: + +### Contract definition + +Contract definitions associate a policy with assets. A `ContractDefinition` object contains an access policy, a contract +policy, and an asset selector which links the contract to one or more assets. + +Its [API is documented](management-api-walkthrough/03_contractdefinitions.md) in the Management API Walkthrough. + + +### Contract offer + +The contract offer is a dynamic representation of the [`ContractDefinition`](#contract-definition) +for a specific consumer and serves as protocol's data transfer object (DTO) for a particular contract negotiation. +Contract offers are not persisted and will be regenerated on every request. The connector acting as data provider will +generate contract offers only for contract definitions dedicated to the organization or data space participant +operating the requesting connector acting as data consumer. A contract offer is always related to a single asset of +the `ContractDefinition` object (e.g. for a `ContractDefinition` containing three `Asset` objects, the connector will +generate three `ContractOffer` objects). + +### Contract negotiation + +A `ContractNegotiation` captures the current state of the negotiation of a contract (`ContractOffer` -> +`ContractAgreement`) between two parties. This process is inherently asynchronous. + +Its [API is documented](management-api-walkthrough/05_contractnegotiations.md) in the Management API Walkthrough. + +### Contract agreement + +A contract agreement represents the agreed-upon terms of access and usage of an asset's data between two data space +participants, including a start and an end date and further relevant information. + +## Policy + +Contract policies represent permitted and prohibited actions over a certain asset. These actions can be limited further +by constraints (temporal or spatial) and duties ("e.g. deletion of the data after 30 days"). + +They can be created via the [Policy Definition API](management-api-walkthrough/02_policies.md). + +## Transfer process + +After a successful contract negotiation, a `DataRequest` is sent from a consumer connector to a provider connector to +initiate the data transfer. It references the requested [`Asset`](#asset) and [`ContractAgreement`](#contract-agreement) +as well as information about the [data destination](#data-address). + +Similar to the `ContractNegotiation`, this object captures the current state of a data transfer. This process is +inherently asynchronous, so the `TransferProcess` objects are stored in a backing data store (`TransferProcessStore`). + +## NOTICE + +This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). + +- SPDX-License-Identifier: Apache-2.0 +- SPDX-FileCopyrightText: 2021,2022,2023 Contributors to the Eclipse Foundation +- Source URL: diff --git a/docs/kit/Development View/images/domain-model.png b/docs/usage/images/domain-model.png similarity index 100% rename from docs/kit/Development View/images/domain-model.png rename to docs/usage/images/domain-model.png diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md b/docs/usage/management-api-walkthrough/01_assets.md similarity index 98% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md rename to docs/usage/management-api-walkthrough/01_assets.md index f3f31ed66..1eb0c59c5 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/01_assets.md +++ b/docs/usage/management-api-walkthrough/01_assets.md @@ -90,13 +90,13 @@ have proven to enable an integration that's quite complete from a functional vie | parameter | description | mandatory | default | |--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------|---------| | `baseUrl` | This parameter indicates the location of the backend data source. It's invisible to the Data Consumer and thus, the Data Plane will always resolve the contractId associated with the request's token to the baseUrl, forward the request and pass on the returned data. Thus, for the example above, a request to `https://data.plane` with a valid token attached will be forwarded to `https://mycorp.org/api`. | yes | - | -| `proxyPath` | This string determines whether the Data Plane allows the Data Consumer to attach additional URL-segments to the request. Can be either `"true"` or `"false"`. If this parameter is set `"true"`, the a request `https://data.plane/resources/abcd` will be forwarded to https://mycorp.org/api/resources/abcd. | no | false | +| `proxyPath` | This string determines whether the Data Plane allows the Data Consumer to attach additional URL-segments to the request. Can be either `"true"` or `"false"`. If this parameter is set `"true"`, the a request `https://data.plane/resources/abcd` will be forwarded to `https://mycorp.org/api/resources/abcd`. | no | false | | `path` | If `proxyPath` is false, this parameter can be used to add an additional path to the request when it passes the Data Plane. | no | null | | `proxyMethod` | This string determines whether the Data Plane allows incoming requests to use HTTP-verbs that are not GET. Can be either `"true"` or `"false"`. If this parameter is set `"false"`, the Data Plane will rewrite `POST https://data.plane` to `GET https://mycorp.org/api` | no | false | | `method` | If `proxyMethod` is false, this parameter can be used to change the HTTP verb that the Http Data Plane will forward to the backend. | no | "GET" | | `proxyBody` | This string determines whether the Data Plane forwards the Data Plane request's body to the backend. Can be either `"true"` or `"false"`. | no | false | | `body` | If `proxyBody` is false, this parameter can be used to set a fixed request body that the Http Data Plane will forward to the backend. | no | null | -| `proxyQueryParams` | This string determines whether the Data Plane forwards the headers that a request has attached. Thus, if `"true"`, a request `GET https://data.plane?q=z` will be rewritten to "https://mycorp.org/api?q=z". Can be either `"true"` or `"false"`. | no | false | +| `proxyQueryParams` | This string determines whether the Data Plane forwards the headers that a request has attached. Thus, if `"true"`, a request `GET https://data.plane?q=z` will be rewritten to `https://mycorp.org/api?q=z`. Can be either `"true"` or `"false"`. | no | false | | `queryParams` | Independently of `proxyQueryParams`, this string may include fixed headers that the Data Plane will attach to the incoming request and forward to the backend. | no | null | | `oauth2:tokenUrl` | If the backend is secured by an oauth2 authentication mechanism, the Data Plane will request an access token at this URL. | no | null | | `oauth2:clientId` | This is the clientId of the (technical) user that the credential was created for by the backend application. | no | null | diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md b/docs/usage/management-api-walkthrough/02_policies.md similarity index 93% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md rename to docs/usage/management-api-walkthrough/02_policies.md index 50ebe7293..13fd7f978 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/02_policies.md +++ b/docs/usage/management-api-walkthrough/02_policies.md @@ -149,12 +149,12 @@ and `odrl:xone` (exactly one constraint evaluates to `true`). Some permission-constraints trigger specific behavior in the EDC. That should be kept in mind when designing policies and requires an understanding of how the EDC evaluates and acts upon them. -| `leftOperand` | `rightOperand` | usage in
[Contract Definition](03_contractdefinitions.md) | description | -|--------------------------------------------------------------|--------------------------------------------------|-----------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `BusinessPartnerNumber` | a BPNL | access or contract | _This function is deprecated._
The leftOperand "BusinessPartnerNumber" will trigger a check against the property in a Consumer's Verfifiable Credential (VC) that holds said BPNL. | -| `https://w3id.org/tractusx/v0.0.1/ns/BusinessPartnerGroup` | a Business Partner Group | access or contract | see [above](#only-let-pass-a-business-partner-group). The `leftOperand` is in this case not queried from the Consumer's VC but acts as a signal to check the Consumer's BPN for membership in the designated Business Partner Group. | -| `https://w3id.org/edc/v0.0.1/ns/InForceDate` | json-object with properties `@value` and `@type` | contract | If the negotiation via either [Contract Negotiation](6-contract-negotiation.md) or the [EDR process](8-edr.md) is successful, the EDC will only renew short-lived Data-Plane tokens for a contract if the contract is still valid (in force). Start and end dates can be set with absolute timestamps or relative to the time of the contract agreement. For exact syntax, visit the [playground](https://eclipse-tractusx.github.io/tutorial-resources/policy-playground/). | -| `https://w3id.org/tractusx/v0.0.1/ns/FrameworkAgreement.pcf` | "active" | access or contract | Framework agreements in Catena-X are legal documents signed by a Business Partner to participate in a Business Scenario. In return, her credential is enhanced with a reference to the corresponding framework agreement - like in this case `pcf`. A complete list of framework agreements is maintained by the Catena-X association in standards CX-0049 and -0050. | +| `leftOperand` | `rightOperand` | usage in
[Contract Definition](03_contractdefinitions.md) | description | +|--------------------------------------------------------------|--------------------------------------------------|-----------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `BusinessPartnerNumber` | a BPNL | access or contract | _This function is deprecated._
The leftOperand "BusinessPartnerNumber" will trigger a check against the property in a Consumer's Verfifiable Credential (VC) that holds said BPNL. | +| `https://w3id.org/tractusx/v0.0.1/ns/BusinessPartnerGroup` | a Business Partner Group | access or contract | see [above](#only-let-a-business-partner-group-pass). The `leftOperand` is in this case not queried from the Consumer's VC but acts as a signal to check the Consumer's BPN for membership in the designated Business Partner Group. | +| `https://w3id.org/edc/v0.0.1/ns/InForceDate` | json-object with properties `@value` and `@type` | contract | If the negotiation via either [Contract Negotiation](05_contractnegotiations.md) or the [EDR process](07_edrs.md) is successful, the EDC will only renew short-lived Data-Plane tokens for a contract if the contract is still valid (in force). Start and end dates can be set with absolute timestamps or relative to the time of the contract agreement. For exact syntax, visit the [playground](https://eclipse-tractusx.github.io/tutorial-resources/policy-playground/). | +| `https://w3id.org/tractusx/v0.0.1/ns/FrameworkAgreement.pcf` | "active" | access or contract | Framework agreements in Catena-X are legal documents signed by a Business Partner to participate in a Business Scenario. In return, her credential is enhanced with a reference to the corresponding framework agreement - like in this case `pcf`. A complete list of framework agreements is maintained by the Catena-X association in standards CX-0049 and -0050. | For more on the integration of Verifiable Credentials and the EDC in Catena-X, see the [specification of the Identity and Trust Protocol (IATP)](https://github.com/eclipse-tractusx/identity-trust). diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md b/docs/usage/management-api-walkthrough/03_contractdefinitions.md similarity index 96% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md rename to docs/usage/management-api-walkthrough/03_contractdefinitions.md index b2cb25d9b..821ba7692 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/03_contractdefinitions.md +++ b/docs/usage/management-api-walkthrough/03_contractdefinitions.md @@ -36,7 +36,7 @@ sequence will fail later when the Data Consumer attempts to find the offer in th ## assetsSelector The `assetsSelector` is a EDC-Criterion. This class specifies filters over a set of objects, Assets in this case. The -concept is functionally similar to the `odrl:Constraint` in a [Policy](3-policy-definitions.md) but syntactically different. +concept is functionally similar to the `odrl:Constraint` in a [Policy](02_policies.md) but syntactically different. - `operandLeft` is a property in the Entity (`edc:Asset` in this case) that is assigned a value. If the property is nested, traversion can be achieved by chaining the properties like `"'https://w3id.org/edc/v0.0.1/ns/nested'.'https://w3id.org/edc/v0.0.1/ns/key'"` Note that this function is namespace-aware so the `operandLeft` must either be written in extended form (see above) @@ -86,7 +86,7 @@ part of the `edc:QuerySpec` objects that also allow pagination: ## Side-Effects -The [Adoption View](../01_domain_model.md) shows the basic connection between the core concepts of +The [Domain Model](../README) shows the basic connection between the core concepts of the EDC. Contract Offers for a particular Data Consumer are created dynamically from the Contract Definitions created by a Data Provider. The mechanics are explained in the section on the [catalog-API](04_catalog.md). But already at this stage, Data Providers must be aware that creating a Contract Definition is sufficient to expose a Backend System diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/04_catalog.md b/docs/usage/management-api-walkthrough/04_catalog.md similarity index 100% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/04_catalog.md rename to docs/usage/management-api-walkthrough/04_catalog.md diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md b/docs/usage/management-api-walkthrough/05_contractnegotiations.md similarity index 98% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md rename to docs/usage/management-api-walkthrough/05_contractnegotiations.md index b692767fe..fc46feef3 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/05_contractnegotiations.md +++ b/docs/usage/management-api-walkthrough/05_contractnegotiations.md @@ -1,10 +1,3 @@ ---- -id: Contract Negotiation -title: Contract Negotiation -description: 'Connector Kit' -sidebar_position: 6 ---- - # Initiating a Contract Negotiation Contract Negotiation is the second check a Data Consumer has to pass before getting access rights to a backend resource. diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/06_transferprocesses.md b/docs/usage/management-api-walkthrough/06_transferprocesses.md similarity index 100% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/06_transferprocesses.md rename to docs/usage/management-api-walkthrough/06_transferprocesses.md diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md b/docs/usage/management-api-walkthrough/07_edrs.md similarity index 98% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md rename to docs/usage/management-api-walkthrough/07_edrs.md index 7a930570b..26e6527ac 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/07_edrs.md +++ b/docs/usage/management-api-walkthrough/07_edrs.md @@ -2,7 +2,7 @@ EDR is short for Endpoint Data Reference. It describes a more ergonomic process for the Data Consumer to negotiate access to a Data Offer and receive the corresponding token for the HTTP Data Plane. Unlike the process via -[Contract-Negotiation](6-contract-negotiation.md)- and [Transfer-Process](06_transferprocesses.md)-APIs, the EDR-process does not require a Consumer to operate a +[Contract-Negotiation](05_contractnegotiations.md)- and [Transfer-Process](06_transferprocesses.md)-APIs, the EDR-process does not require a Consumer to operate a separate service that receives the Tokens from the Provider Control Plane. Instead, the Consumer Control Plane receives and stores the Data Plane Tokens. Consumer Applications query it for valid tokens and use these for Data Plane calls. As a consumer-side abstraction, the checks of the Contract Negotiation and Transfer Process phases are still executed diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/08_contractagreements.md b/docs/usage/management-api-walkthrough/08_contractagreements.md similarity index 100% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/08_contractagreements.md rename to docs/usage/management-api-walkthrough/08_contractagreements.md diff --git a/docs/kit/Development View/01_MGMT_API_Walkthrough/README.md b/docs/usage/management-api-walkthrough/README.md similarity index 87% rename from docs/kit/Development View/01_MGMT_API_Walkthrough/README.md rename to docs/usage/management-api-walkthrough/README.md index 961891e8c..6cfed4534 100644 --- a/docs/kit/Development View/01_MGMT_API_Walkthrough/README.md +++ b/docs/usage/management-api-walkthrough/README.md @@ -69,15 +69,15 @@ defined. Some namespaces are known to the EDC internally. That means that the EDC will resolve all resources to non-prefixed IRIs given they are not part of the following list: -| Key | Description | -|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| dct | Defines the prefix "dct" and associates it with the URI "". The prefix "dct" can now be used in the JSON-LD document to represent terms from the Dublin Core Metadata Terms vocabulary. | -| edc | Defines the prefix "edc" and associates it with the URI "". The prefix "edc" can now be used to represent terms from the EDC (Eclipse Dataspace Connect) vocabulary. | -| dcat | Defines the prefix "dcat" and associates it with the URI "". The prefix "dcat" can now be used to represent terms from the DCAT (Data Catalog Vocabulary) vocabulary. | -| odrl | Defines the prefix "odrl" and associates it with the URI "". The prefix "odrl" can now be used to represent terms from the ODRL (Open Digital Rights Language) vocabulary. | -| dspace | Defines the prefix "dspace" and associates it with the URI "". The prefix "dspace" can now be used to represent terms from the DSpace vocabulary. | - -> Please note: The namespace `edc` currently is only a placeholder and does not lead to any JSON-LD context definition +| Key | Description | +|--------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| dct | Defines the prefix "dct" and associates it with the URI `https://purl.org/dc/terms/`. The prefix "dct" can now be used in the JSON-LD document to represent terms from the [Dublin Core Metadata Terms vocabulary](https://purl.org/dc/terms/). | +| edc | Defines the prefix "edc" and associates it with the URI `https://w3id.org/edc/v0.0.1/ns/`. The prefix "edc" can now be used to represent terms from the EDC (Eclipse Dataspace Connect) vocabulary. | +| dcat | Defines the prefix "dcat" and associates it with the URI `https://www.w3.org/ns/dcat/`. The prefix "dcat" can now be used to represent terms from the [DCAT (Data Catalog Vocabulary) vocabulary](https://www.w3.org/ns/dcat/). | +| odrl | Defines the prefix "odrl" and associates it with the URI `http://www.w3.org/ns/odrl/2/`. The prefix "odrl" can now be used to represent terms from the [ODRL (Open Digital Rights Language) vocabulary](http://www.w3.org/ns/odrl/2/). | +| dspace | Defines the prefix "dspace" and associates it with the URI `https://w3id.org/dspace/v0.8/`. The prefix "dspace" can now be used to represent terms from the DSpace vocabulary. | + +> Please note: The namespaces `edc` and `dspace` are currently is only a placeholder and does not lead to any JSON-LD context definition > or vocabulary. > This may change at a later date. > Please note: In our samples, except from `odrl` vocabulary terms that must override `edc` default prefixing, diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md index ff163cb54..1e432e799 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/README.md @@ -10,152 +10,11 @@ This verison of the EDC Control-Plane is backed by [PostgreSQL](https://www.post ## Configuration -Listed below are configuration keys needed to get the `edc-controlplane-postgresql-azure-vault` up and running. -Details regarding each configuration property can be found at the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tree/main/docs). +Details regarding each configuration property can be found in the [docs for the chart](../../charts/tractusx-connector-azure-vault/README.md). -| Key | Required | Example | Description | -|--------------------------------------------------|----------|------------------------------------------------------------------------------|----------------------------| -| edc.api.auth.key | | password | default value: random UUID | -| web.http.default.port | X | 8080 | | -| web.http.default.path | X | /api | | -| web.http.data.port | X | 8181 | | -| web.http.data.path | X | | | -| web.http.control.port | X | 9999 | | -| web.http.control.path | X | /api/controlplane/control | | -| web.http.ids.port | X | 8282 | | -| web.http.ids.path | X | /api/v1/ids | | -| edc.receiver.http.endpoint | X | | | -| edc.ids.title | | Eclipse Dataspace Connector | | -| edc.ids.description | | Eclipse Dataspace Connector | | -| edc.ids.id | | urn:connector:edc | | -| edc.ids.security.profile | | base | | -| edc.ids.endpoint | | | | -| edc.ids.maintainer | | | | -| edc.ids.curator | | | | -| edc.ids.catalog.id | | urn:catalog:default | | -| ids.webhook.address | | | | -| edc.hostname | | localhost | | -| edc.vault.clientid | X | 00000000-1111-2222-3333-444444444444 | | -| edc.vault.tenantid | X | 55555555-6666-7777-8888-999999999999 | | -| edc.vault.name | X | my-vault-name | | -| edc.vault.clientsecret | X | 34-chars-secret | | -| edc.datasource.asset.name | X | asset | | -| edc.datasource.asset.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_asset_db | | -| edc.datasource.asset.user | X | username | | -| edc.datasource.asset.password | X | password | | -| edc.datasource.contractdefinition.name | X | contractdefinition | | -| edc.datasource.contractdefinition.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractdefinition_db | | -| edc.datasource.contractdefinition.user | X | username | | -| edc.datasource.contractdefinition.password | X | password | | -| edc.datasource.contractnegotiation.name | X | contractnegotiation | | -| edc.datasource.contractnegotiation.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractnegotiation_db | | -| edc.datasource.contractnegotiation.user | X | username | | -| edc.datasource.contractnegotiation.password | X | password | | -| edc.datasource.policy.name | X | policy | | -| edc.datasource.policy.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_policy_db | | -| edc.datasource.policy.user | X | username | | -| edc.datasource.policy.password | X | password | | -| edc.datasource.transferprocess.name | X | transferprocess | | -| edc.datasource.transferprocess.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_transferprocess_db | | -| edc.datasource.transferprocess.user | X | username | | -| edc.datasource.transferprocess.password | X | password | | -| edc.transfer.proxy.endpoint | X | | | -| edc.transfer.proxy.token.signer.privatekey.alias | X | | | - -### Example configuration.properties - -JDK properties-style configuration of the EDC Control-Plane is expected to be mounted to `/app/configuration.properties` within the container. - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.data.port=8181 -web.http.data.path=/data -web.http.control.port=9999 -web.http.control.path=/api/controlplane/control -web.http.ids.port=8282 -web.http.ids.path=/api/v1/ids - -edc.receiver.http.endpoint=http://backend-service - -edc.ids.title=Eclipse Dataspace Connector -edc.ids.description=Eclipse Dataspace Connector -edc.ids.id=urn:connector:edc -edc.ids.security.profile=base -edc.ids.endpoint=http://localhost:8282/api/v1/ids -edc.ids.maintainer=http://localhost -edc.ids.curator=http://localhost -edc.ids.catalog.id=urn:catalog:default -ids.webhook.address=http://localhost:8282/api/v1/ids - -edc.hostname=localhost - -edc.api.auth.key=password - -# Azure vault related configuration -edc.vault.clientid=00000000-1111-2222-3333-444444444444 -edc.vault.tenantid=55555555-6666-7777-8888-999999999999 -edc.vault.name=my-vault-name -edc.vault.clientsecret=34-chars-secret - -# Control- / Data- Plane configuration -edc.transfer.proxy.endpoint=http://dataplane-public-endpoint/public -edc.transfer.proxy.token.signer.privatekey.alias=azure-vault-token-signer-private-key - -# Postgresql related configuration -edc.datasource.asset.name=asset -edc.datasource.asset.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_asset -edc.datasource.asset.user=user -edc.datasource.asset.password=pass -edc.datasource.contractdefinition.name=contractdefinition -edc.datasource.contractdefinition.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractdefinition -edc.datasource.contractdefinition.user=user -edc.datasource.contractdefinition.password=pass -edc.datasource.contractnegotiation.name=contractnegotiation -edc.datasource.contractnegotiation.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractnegotiation -edc.datasource.contractnegotiation.user=user -edc.datasource.contractnegotiation.password=pass -edc.datasource.policy.name=policy -edc.datasource.policy.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_policy -edc.datasource.policy.user=user -edc.datasource.policy.password=pass -edc.datasource.transferprocess.name=transferprocess -edc.datasource.transferprocess.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_transferprocess -edc.datasource.transferprocess.user=user -edc.datasource.transferprocess.password=pass - -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` - -### Example opentelemetry.properties - -```shell -# Create opentelemetry.properties -export OPENTELEMETRY_PROPERTIES_FILE=$(mktemp /tmp/opentelemetry.properties.XXXXXX) -cat << 'EOF' > ${OPENTELEMETRY_PROPERTIES_FILE} -otel.javaagent.enabled=true -otel.javaagent.debug=false -EOF -``` +Please note that the properties list may not be complete as the tractusx-edc may elect to fall back to the default behavior of an +extension. When in doubt, check the extensions' README that will likely be in [this repo's](../../edc-extensions) or in the [eclipse-edc's](https://github.com/eclipse-edc/Connector/tree/main/extensions) +`extensions` folder. ## Running diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md index 3655f0c88..99bb8af11 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/README.md @@ -10,149 +10,11 @@ This version of the EDC Control-Plane is backed by [PostgreSQL](https://www.post ## Configuration -Listed below are configuration keys needed to get the `edc-controlplane-postgresql-hashicorp-vault` up and running. -Details regarding each configuration property can be found at the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tree/main/docs). +Details regarding each configuration property can be found in the [docs for the chart](../../charts/tractusx-connector/README.md). -| Key | Required | Example | Description | -|--------------------------------------------------|----------|------------------------------------------------------------------------------|----------------------------| -| edc.api.auth.key | | password | default value: random UUID | -| web.http.default.port | X | 8080 | | -| web.http.default.path | X | /api | | -| web.http.data.port | X | 8181 | | -| web.http.data.path | X | /data | | -| web.http.control.port | X | 9999 | | -| web.http.control.path | X | /api/controlplane/control | | -| web.http.ids.port | X | 8282 | | -| web.http.ids.path | X | /api/v1/ids | | -| edc.receiver.http.endpoint | X | | | -| edc.ids.title | | Eclipse Dataspace Connector | | -| edc.ids.description | | Eclipse Dataspace Connector | | -| edc.ids.id | | urn:connector:edc | | -| edc.ids.security.profile | | base | | -| edc.ids.endpoint | | | | -| edc.ids.maintainer | | | | -| edc.ids.curator | | | | -| edc.ids.catalog.id | | urn:catalog:default | | -| ids.webhook.address | | | | -| edc.hostname | | localhost | | -| edc.vault.hashicorp.url | X | | | -| edc.vault.hashicorp.token | X | 55555555-6666-7777-8888-999999999999 | | -| edc.vault.hashicorp.timeout.seconds | | 30 | | -| edc.datasource.asset.name | X | asset | | -| edc.datasource.asset.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_asset_db | | -| edc.datasource.asset.user | X | username | | -| edc.datasource.asset.password | X | password | | -| edc.datasource.contractdefinition.name | X | contractdefinition | | -| edc.datasource.contractdefinition.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractdefinition_db | | -| edc.datasource.contractdefinition.user | X | username | | -| edc.datasource.contractdefinition.password | X | password | | -| edc.datasource.contractnegotiation.name | X | contractnegotiation | | -| edc.datasource.contractnegotiation.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractnegotiation_db | | -| edc.datasource.contractnegotiation.user | X | username | | -| edc.datasource.contractnegotiation.password | X | password | | -| edc.datasource.policy.name | X | policy | | -| edc.datasource.policy.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_policy_db | | -| edc.datasource.policy.user | X | username | | -| edc.datasource.policy.password | X | password | | -| edc.datasource.transferprocess.name | X | transferprocess | | -| edc.datasource.transferprocess.url | X | jdbc:postgresql://postgres.svc.cluster.local:5432/edc_transferprocess_db | | -| edc.datasource.transferprocess.user | X | username | | -| edc.datasource.transferprocess.password | X | password | | -| edc.transfer.proxy.endpoint | X | | | -| edc.transfer.proxy.token.signer.privatekey.alias | X | | | - -### Example configuration.properties - -JDK properties-style configuration of the EDC Control-Plane is expected to be mounted to `/app/configuration.properties` within the container. - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.data.port=8181 -web.http.data.path=/data -web.http.control.port=9999 -web.http.control.path=/api/controlplane/control -web.http.ids.port=8282 -web.http.ids.path=/api/v1/ids - -edc.receiver.http.endpoint=http://backend-service - -edc.ids.title=Eclipse Dataspace Connector -edc.ids.description=Eclipse Dataspace Connector -edc.ids.id=urn:connector:edc -edc.ids.security.profile=base -edc.ids.endpoint=http://localhost:8282/api/v1/ids -edc.ids.maintainer=http://localhost -edc.ids.curator=http://localhost -edc.ids.catalog.id=urn:catalog:default -ids.webhook.address=http://localhost:8282/api/v1/ids - -edc.hostname=localhost - -edc.api.auth.key=password - -# HashiCorp vault related configuration -edc.vault.hashicorp.url=http://vault -edc.vault.hashicorp.token=55555555-6666-7777-8888-999999999999 -edc.vault.hashicorp.timeout.seconds=30 - -# Control- / Data- Plane configuration -edc.transfer.proxy.endpoint=http://dataplane-public-endpoint/public -edc.transfer.proxy.token.signer.privatekey.alias=token-signer-private-key - -# Postgresql related configuration -edc.datasource.asset.name=asset -edc.datasource.asset.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_asset -edc.datasource.asset.user=user -edc.datasource.asset.password=pass -edc.datasource.contractdefinition.name=contractdefinition -edc.datasource.contractdefinition.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractdefinition -edc.datasource.contractdefinition.user=user -edc.datasource.contractdefinition.password=pass -edc.datasource.contractnegotiation.name=contractnegotiation -edc.datasource.contractnegotiation.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_contractnegotiation -edc.datasource.contractnegotiation.user=user -edc.datasource.contractnegotiation.password=pass -edc.datasource.policy.name=policy -edc.datasource.policy.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_policy -edc.datasource.policy.user=user -edc.datasource.policy.password=pass -edc.datasource.transferprocess.name=transferprocess -edc.datasource.transferprocess.url=jdbc:postgresql://postgres.svc.cluster.local:5432/edc_transferprocess -edc.datasource.transferprocess.user=user -edc.datasource.transferprocess.password=pass -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` - -### Example opentelemetry.properties - -```shell -# Create opentelemetry.properties -export OPENTELEMETRY_PROPERTIES_FILE=$(mktemp /tmp/opentelemetry.properties.XXXXXX) -cat << 'EOF' > ${OPENTELEMETRY_PROPERTIES_FILE} -otel.javaagent.enabled=false -otel.javaagent.debug=false -EOF -``` +Please note that the properties list may not be complete as the tractusx-edc may elect to fall back to the default behavior of an +extension. When in doubt, check the extensions' README that will likely be in [this repo's](../../edc-extensions) or in the [eclipse-edc's](https://github.com/eclipse-edc/Connector/tree/main/extensions) +`extensions` folder. ## Running diff --git a/edc-controlplane/edc-runtime-memory/README.md b/edc-controlplane/edc-runtime-memory/README.md index b356fa206..6ba6cdc5a 100644 --- a/edc-controlplane/edc-runtime-memory/README.md +++ b/edc-controlplane/edc-runtime-memory/README.md @@ -18,92 +18,13 @@ its ephemeral nature makes it unsuitable for replicated/multi-instance scenarios ./gradlew :edc-controlplane:edc-runtime-memory:dockerize ``` -## Configuration (configuration.properties) +## Configuration -Listed below are configuration keys needed to get the `edc-runtime-memory` up and running. -Details regarding each configuration property can be found at -the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tree/main/docs). +Details regarding each configuration property can be found in the [docs for the chart](../../charts/tractusx-connector-memory/README.md). -| Key | Required | Example | Description | -|--------------------------------------------------|----------|-------------------------------------|----------------------------| -| edc.api.auth.key | | password | default value: random UUID | -| web.http.default.port | X | 8080 | | -| web.http.default.path | X | /api | | -| web.http.data.port | X | 8181 | | -| web.http.data.path | X | /data | | -| web.http.control.port | X | 9999 | | -| web.http.control.path | X | /api/controlplane/control | | -| web.http.ids.port | X | 8282 | | -| web.http.ids.path | X | /api/v1/ids | | -| edc.receiver.http.endpoint | X | | | -| edc.ids.title | | Eclipse Dataspace Connector | | -| edc.ids.description | | Eclipse Dataspace Connector | | -| edc.ids.id | | urn:connector:edc | | -| edc.ids.security.profile | | base | | -| edc.ids.endpoint | | | | -| edc.ids.maintainer | | | | -| edc.ids.curator | | | | -| edc.ids.catalog.id | | urn:catalog:default | | -| ids.webhook.address | | | | -| edc.hostname | | localhost | | -| edc.transfer.proxy.endpoint | X | | | -| edc.transfer.proxy.token.signer.privatekey.alias | X | | | - -### Example configuration.properties - -JDK properties-style configuration of the EDC Control-Plane is expected to be mounted to `/app/configuration.properties` -within the container. - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.data.port=8181 -web.http.data.path=/data -web.http.control.port=9999 -web.http.control.path=/api/controlplane/control -web.http.ids.port=8282 -web.http.ids.path=/api/v1/ids - -edc.receiver.http.endpoint=http://backend-service - -edc.ids.title=Eclipse Dataspace Connector -edc.ids.description=Eclipse Dataspace Connector -edc.ids.id=urn:connector:edc -edc.ids.security.profile=base -edc.ids.endpoint=http://localhost:8282/api/v1/ids -edc.ids.maintainer=http://localhost -edc.ids.curator=http://localhost -edc.ids.catalog.id=urn:catalog:default -ids.webhook.address=http://localhost:8282/api/v1/ids - -edc.hostname=localhost - -edc.api.auth.key=password - -# Control- / Data- Plane configuration -edc.transfer.proxy.endpoint=http://dataplane-public-endpoint/public -edc.transfer.proxy.token.signer.privatekey.alias=azure-vault-token-signer-private-key -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` +Please note that the properties list may not be complete as the tractusx-edc may elect to fall back to the default behavior of an +extension. When in doubt, check the extensions' README that will likely be in [this repo's](../../edc-extensions) or in the [eclipse-edc's](https://github.com/eclipse-edc/Connector/tree/main/extensions) +`extensions` folder. ## Running diff --git a/edc-dataplane/edc-dataplane-azure-vault/README.md b/edc-dataplane/edc-dataplane-azure-vault/README.md index 470301c2a..6fedc1823 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/README.md +++ b/edc-dataplane/edc-dataplane-azure-vault/README.md @@ -10,80 +10,11 @@ This build of the EDC Data-Plane utilizes [Azure Key Vault](https://azure.micros ## Configuration -Listed below are configuration keys needed to get the `edc-dataplane-azure-vault` up and running. -Details regarding each configuration property can be found at the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tree/main/docs). +Details regarding each configuration property can be found in the [docs for the chart](../../charts/tractusx-connector-azure-vault/README.md). -| Key | Required | Example | Description | -|-----------------------------------------|----------|---------------------------------------------|-------------| -| web.http.default.port | X | 8080 | | -| web.http.default.path | X | /api | | -| web.http.public.port | X | 8181 | | -| web.http.public.path | X | | | -| web.http.control.port | X | 9999 | | -| web.http.control.path | X | /api/controlplane/control | | -| edc.receiver.http.endpoint | X | | | -| edc.hostname | | localhost | | -| edc.vault.clientid | X | 00000000-1111-2222-3333-444444444444 | | -| edc.vault.tenantid | X | 55555555-6666-7777-8888-999999999999 | | -| edc.vault.name | X | my-vault-name | | -| edc.vault.clientsecret | X | 34-chars-secret | | -| edc.dataplane.token.validation.endpoint | X | | | - -### Example configuration.properties - -JDK properties-style configuration of the EDC Control-Plane is expected to be mounted to `/app/configuration.properties` within the container. - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.public.port=8185 -web.http.public.path=/public -web.http.control.port=9999 -web.http.control.path=/api/dataplane/control - -# Validation endpoint of controlplane -edc.dataplane.token.validation.endpoint=http://controlplane:9999/control/token - -# EDC hostname -edc.hostname=localhost - -# Azure vault related configuration -edc.vault.clientid=00000000-1111-2222-3333-444444444444 -edc.vault.tenantid=55555555-6666-7777-8888-999999999999 -edc.vault.name=my-vault-name -edc.vault.clientsecret=34-chars-secret -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` - -### Example opentelemetry.properties - -```shell -# Create opentelemetry.properties -export OPENTELEMETRY_PROPERTIES_FILE=$(mktemp /tmp/opentelemetry.properties.XXXXXX) -cat << 'EOF' > ${OPENTELEMETRY_PROPERTIES_FILE} -otel.javaagent.enabled=true -otel.javaagent.debug=false -EOF -``` +Please note that the properties list may not be complete as the tractusx-edc may elect to fall back to the default behavior of an +extension. When in doubt, check the extensions' README that will likely be in [this repo's](../../edc-extensions) or in the [eclipse-edc's](https://github.com/eclipse-edc/Connector/tree/main/extensions) +`extensions` folder. ## Running diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md index 55a42b471..a4ee253f0 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/README.md +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/README.md @@ -10,78 +10,11 @@ This build of the EDC Data-Plane utilizes [Hashicorp Vault](https://www.vaultpro ## Configuration -Listed below are configuration keys needed to get the `edc-dataplane-hashicorp-vault` up and running. -Details regarding each configuration property can be found at the [documentary section of the EDC](https://github.com/eclipse-edc/Connector/tree/main/docs). +Details regarding each configuration property can be found in the [docs for the chart](../../charts/tractusx-connector/README.md). -| Key | Required | Example | Description | -|-----------------------------------------|----------|---------------------------------------------|-------------| -| web.http.default.port | X | 8080 | | -| web.http.default.path | X | /api | | -| web.http.public.port | X | 8181 | | -| web.http.public.path | X | | | -| web.http.control.port | X | 9999 | | -| web.http.control.path | X | /api/controlplane/control | | -| edc.receiver.http.endpoint | X | | | -| edc.hostname | | localhost | | -| edc.vault.hashicorp.url | X | | | -| edc.vault.hashicorp.token | X | 55555555-6666-7777-8888-999999999999 | | -| edc.vault.hashicorp.timeout.seconds | | 30 | | -| edc.dataplane.token.validation.endpoint | X | | | - -### Example configuration.properties - -JDK properties-style configuration of the EDC Control-Plane is expected to be mounted to `/app/configuration.properties` within the container. - -```shell -# Create configuration.properties -export CONFIGURATION_PROPERTIES_FILE=$(mktemp /tmp/configuration.properties.XXXXXX) -cat << 'EOF' > ${CONFIGURATION_PROPERTIES_FILE} - -web.http.default.port=8080 -web.http.default.path=/api -web.http.public.port=8185 -web.http.public.path=/public -web.http.control.port=9999 -web.http.control.path=/api/dataplane/control - -# Validation endpoint of controlplane -edc.dataplane.token.validation.endpoint=http://controlplane:9999/control/token - -# EDC hostname -edc.hostname=localhost - -# HashiCorp vault related configuration -edc.vault.hashicorp.url=http://vault -edc.vault.hashicorp.token=55555555-6666-7777-8888-999999999999 -edc.vault.hashicorp.timeout.seconds=30 -EOF -``` - -### Example logging.properties - -```shell -# Create logging.properties -export LOGGING_PROPERTIES_FILE=$(mktemp /tmp/logging.properties.XXXXXX) -cat << 'EOF' > ${LOGGING_PROPERTIES_FILE} -.level=INFO -org.eclipse.edc.level=ALL -handlers=java.util.logging.ConsoleHandler -java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter -java.util.logging.ConsoleHandler.level=ALL -java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n -EOF -``` - -### Example opentelemetry.properties - -```shell -# Create opentelemetry.properties -export OPENTELEMETRY_PROPERTIES_FILE=$(mktemp /tmp/opentelemetry.properties.XXXXXX) -cat << 'EOF' > ${OPENTELEMETRY_PROPERTIES_FILE} -otel.javaagent.enabled=true -otel.javaagent.debug=false -EOF -``` +Please note that the properties list may not be complete as the tractusx-edc may elect to fall back to the default behavior of an +extension. When in doubt, check the extensions' README that will likely be in [this repo's](../../edc-extensions) or in the [eclipse-edc's](https://github.com/eclipse-edc/Connector/tree/main/extensions) +`extensions` folder. ## Running From f088411fbacfcd9987edc572dca12c7cef415558 Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Tue, 23 Jan 2024 14:46:10 +0100 Subject: [PATCH 47/83] chore: updgrade to EDC 0.5.0 (#989) * chore: updgrade to EDC 0.5.0 * chore: apply dynamic receiver fix * chore: disabled iatp tests * chore: dependencies file * chore: test fix * pr suggestions --- DEPENDENCIES | 377 +++++++++--------- .../summary/SummaryTokenPolicyFunction.java | 10 +- .../SummaryTokenPolicyFunctionTest.java | 4 +- .../build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../TransferProcessLocalCallback.java | 6 +- .../iam/iatp/scope/DefaultScopeExtractor.java | 4 +- .../iatp/scope/DefaultScopeExtractorTest.java | 2 +- ...ctNegotiation_AddProtocolMessagesField.sql | 15 + ...er_TransferProcess_AddProtocolMessages.sql | 15 + .../ssi/ssi-identity-core/build.gradle.kts | 3 +- .../iam/ssi/identity/SsiIdentityService.java | 15 +- .../identity/SsiIdentityServiceExtension.java | 24 +- ...ava => SsiTokenValidationServiceImpl.java} | 21 +- .../SsiValidationRulesRegistryImpl.java | 21 - .../rule/SsiAudienceValidationRule.java | 2 +- .../SsiIdentityServiceExtensionTest.java | 2 - .../ssi/identity/SsiIdentityServiceTest.java | 22 +- ...=> SsiTokenValidationServiceImplTest.java} | 20 +- .../rule/SsiAudienceValidationRuleTest.java | 2 +- .../build.gradle.kts | 1 + .../miw/SsiMiwValidationRuleExtension.java | 10 +- .../credentials/SsiMiwCredentialClient.java | 12 +- .../SsiCredentialIssuerValidationRule.java | 2 +- .../SsiCredentialSubjectIdValidationRule.java | 2 +- .../SsiMiwValidationRuleExtensionTest.java | 12 +- .../SsiMiwCredentialClientTest.java | 4 +- edc-tests/e2e-tests/build.gradle.kts | 1 - .../edc/lifecycle/ParticipantRuntime.java | 20 +- .../edc/lifecycle/tx/TxParticipant.java | 3 +- .../lifecycle/tx/iatp/SecureTokenService.java | 1 + ...HttpConsumerPullWithProxyInMemoryTest.java | 3 + ...HttpConsumerPullWithProxyInMemoryTest.java | 3 + .../runtime-memory-iatp-ih/build.gradle.kts | 1 - gradle/libs.versions.toml | 9 +- gradle/wrapper/gradle-wrapper.properties | 2 +- ...ionRuleRegistry.java => SsiConstants.java} | 8 +- .../ssi/spi/SsiTokenValidationService.java | 33 ++ 38 files changed, 400 insertions(+), 296 deletions(-) create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractnegotiation/V0_0_8__Alter_ContractNegotiation_AddProtocolMessagesField.sql create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_13__Alter_TransferProcess_AddProtocolMessages.sql rename edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/{SsiTokenValidationService.java => SsiTokenValidationServiceImpl.java} (70%) delete mode 100644 edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiValidationRulesRegistryImpl.java rename edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/{SsiTokenValidationServiceTest.java => SsiTokenValidationServiceImplTest.java} (79%) rename spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/{SsiValidationRuleRegistry.java => SsiConstants.java} (59%) create mode 100644 spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java diff --git a/DEPENDENCIES b/DEPENDENCIES index 812fa39d1..706cc2439 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -19,11 +19,9 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.13.5, Apache maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.1, Apache-2.0, approved, #7947 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.2, Apache-2.0, approved, #7947 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.3, Apache-2.0, approved, #7947 -maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.0, Apache-2.0, approved, #11606 maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.16.1, Apache-2.0, approved, #11606 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.13.5, Apache-2.0, approved, #2133 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.1, MIT AND Apache-2.0, approved, #7932 -maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.0, Apache-2.0 AND MIT, approved, #11602 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.16.1, Apache-2.0 AND MIT, approved, #11602 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.4.2, Apache-2.0, approved, #2134 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.13.5, Apache-2.0, approved, #2134 @@ -31,10 +29,9 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.2, Apache-2. maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.1, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.2, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.3, Apache-2.0, approved, #7934 -maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.0, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.1, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #9160 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, , restricted, clearlydefined +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, Apache-2.0, restricted, clearlydefined maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1, Apache-2.0, approved, #12438 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.1, Apache-2.0, approved, #8802 @@ -44,7 +41,6 @@ maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.13.5, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.1, Apache-2.0, approved, #7930 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.2, Apache-2.0, approved, #7930 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.0, Apache-2.0, approved, #11853 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.16.1, Apache-2.0, approved, #11853 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/2.16.1, Apache-2.0, approved, #11851 maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/2.15.1, Apache-2.0, approved, #9236 @@ -53,7 +49,6 @@ maven/mavencentral/com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-prov maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.15.3, Apache-2.0, approved, #9241 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.16.1, Apache-2.0, approved, #11856 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.1, Apache-2.0, approved, #7929 -maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.16.0, Apache-2.0, approved, #11852 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.16.1, Apache-2.0, approved, #11852 maven/mavencentral/com.fasterxml.woodstox/woodstox-core/6.5.1, Apache-2.0, approved, #7950 maven/mavencentral/com.github.docker-java/docker-java-api/3.3.4, Apache-2.0, approved, #10346 @@ -102,9 +97,9 @@ maven/mavencentral/dev.failsafe/failsafe/3.3.2, Apache-2.0, approved, #9268 maven/mavencentral/info.picocli/picocli/4.6.3, Apache-2.0, approved, clearlydefined maven/mavencentral/io.github.classgraph/classgraph/4.8.154, MIT, approved, CQ22530 maven/mavencentral/io.github.classgraph/classgraph/4.8.162, MIT, approved, CQ22530 -maven/mavencentral/io.micrometer/micrometer-commons/1.12.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 -maven/mavencentral/io.micrometer/micrometer-core/1.12.1, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 -maven/mavencentral/io.micrometer/micrometer-observation/1.12.1, Apache-2.0, approved, #11680 +maven/mavencentral/io.micrometer/micrometer-commons/1.12.2, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 +maven/mavencentral/io.micrometer/micrometer-core/1.12.2, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 +maven/mavencentral/io.micrometer/micrometer-observation/1.12.2, Apache-2.0, approved, #11680 maven/mavencentral/io.netty/netty-buffer/4.1.100.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-buffer/4.1.101.Final, Apache-2.0, approved, CQ21842 maven/mavencentral/io.netty/netty-codec-dns/4.1.100.Final, Apache-2.0 AND BSD-3-Clause AND MIT, approved, CQ20926 @@ -231,150 +226,155 @@ maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clea maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.41.0, MIT, approved, #12032 maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 -maven/mavencentral/org.eclipse.edc/api-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/api-observability/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-index-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/autodoc-processor/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-test/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-blob-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-test/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/crypto-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-client/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-util/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/iam-mock/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-crypto/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-service/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/junit/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jws2020/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-configuration/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/micrometer-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-client/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/public-key-provider/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-lease/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/state-machine/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-local/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-api/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-core/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-azure/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.4.2-20240103-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-observability/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-index-sql/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/autodoc-processor/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-test/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-blob-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-test/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-api-configuration/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/crypto-common/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-client/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-util/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/iam-mock/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-service/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/junit/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jws2020/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-configuration/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/micrometer-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-client/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-lease/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/state-machine/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-local/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-api/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-core/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-azure/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.5.0, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty @@ -417,10 +417,10 @@ maven/mavencentral/org.hamcrest/hamcrest-core/1.3, BSD-2-Clause, approved, CQ114 maven/mavencentral/org.hamcrest/hamcrest/2.1, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hamcrest/hamcrest/2.2, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hdrhistogram/HdrHistogram/2.1.12, BSD-2-Clause OR LicenseRef-Public-Domain, approved, CQ13192 -maven/mavencentral/org.jacoco/org.jacoco.agent/0.8.8, EPL-2.0, approved, CQ23285 -maven/mavencentral/org.jacoco/org.jacoco.ant/0.8.8, EPL-2.0, approved, #1068 -maven/mavencentral/org.jacoco/org.jacoco.core/0.8.8, EPL-2.0, approved, CQ23283 -maven/mavencentral/org.jacoco/org.jacoco.report/0.8.8, EPL-2.0 AND Apache-2.0, approved, CQ23284 +maven/mavencentral/org.jacoco/org.jacoco.agent/0.8.9, EPL-2.0, approved, CQ23285 +maven/mavencentral/org.jacoco/org.jacoco.ant/0.8.9, EPL-2.0, approved, #1068 +maven/mavencentral/org.jacoco/org.jacoco.core/0.8.9, EPL-2.0, approved, CQ23283 +maven/mavencentral/org.jacoco/org.jacoco.report/0.8.9, EPL-2.0 AND Apache-2.0, approved, CQ23284 maven/mavencentral/org.javassist/javassist/3.28.0-GA, Apache-2.0 OR LGPL-2.1-or-later OR MPL-1.1, approved, #327 maven/mavencentral/org.javassist/javassist/3.29.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.10, Apache-2.0, approved, clearlydefined @@ -457,13 +457,12 @@ maven/mavencentral/org.mockito/mockito-core/5.8.0, MIT AND (Apache-2.0 AND MIT) maven/mavencentral/org.mockito/mockito-inline/5.2.0, MIT, approved, clearlydefined maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 -maven/mavencentral/org.ow2.asm/asm-analysis/9.2, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.ow2.asm/asm-commons/9.2, BSD-3-Clause, approved, clearlydefined +maven/mavencentral/org.ow2.asm/asm-commons/9.5, BSD-3-Clause, approved, #7553 maven/mavencentral/org.ow2.asm/asm-commons/9.6, BSD-3-Clause, approved, #10775 -maven/mavencentral/org.ow2.asm/asm-tree/9.2, BSD-3-Clause, approved, clearlydefined +maven/mavencentral/org.ow2.asm/asm-tree/9.5, BSD-3-Clause, approved, #7555 maven/mavencentral/org.ow2.asm/asm-tree/9.6, BSD-3-Clause, approved, #10773 -maven/mavencentral/org.ow2.asm/asm/9.2, BSD-3-Clause, approved, CQ23635 maven/mavencentral/org.ow2.asm/asm/9.3, BSD-3-Clause, approved, clearlydefined +maven/mavencentral/org.ow2.asm/asm/9.5, BSD-3-Clause, approved, #7554 maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 maven/mavencentral/org.postgresql/postgresql/42.7.0, BSD-2-Clause AND Apache-2.0, approved, #11681 maven/mavencentral/org.postgresql/postgresql/42.7.1, BSD-2-Clause AND Apache-2.0, approved, #11681 @@ -488,59 +487,59 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 maven/mavencentral/software.amazon.awssdk/annotations/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 maven/mavencentral/software.amazon.awssdk/apache-client/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 maven/mavencentral/software.amazon.awssdk/arns/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 maven/mavencentral/software.amazon.awssdk/auth/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 maven/mavencentral/software.amazon.awssdk/aws-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 maven/mavencentral/software.amazon.awssdk/checksums/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 maven/mavencentral/software.amazon.awssdk/crt-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 maven/mavencentral/software.amazon.awssdk/http-auth/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/iam/2.22.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/iam/2.22.9, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 maven/mavencentral/software.amazon.awssdk/json-utils/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 maven/mavencentral/software.amazon.awssdk/profiles/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 +maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 maven/mavencentral/software.amazon.awssdk/regions/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 maven/mavencentral/software.amazon.awssdk/s3/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sts/2.22.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/sts/2.22.9, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 +maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.awssdk/utils/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java index 693325e5d..be46efc73 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java @@ -19,6 +19,7 @@ import org.eclipse.edc.spi.EdcException; import org.eclipse.edc.spi.iam.TokenParameters; +import java.util.Optional; import java.util.function.BiFunction; import static java.lang.String.format; @@ -35,7 +36,14 @@ public Boolean apply(Policy policy, PolicyContext context) { if (params == null) { throw new EdcException(format("%s not set in policy context", TokenParameters.Builder.class.getName())); } - params.additional(CX_SUMMARY_CREDENTIAL, CX_SUMMARY_CREDENTIAL); + + var scope = params.build().getStringClaim("scope"); + + var newScope = Optional.ofNullable(scope) + .map(s -> s + " " + CX_SUMMARY_CREDENTIAL) + .orElse(CX_SUMMARY_CREDENTIAL); + + params.claims("scope", newScope); return true; } } diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java index d6d9a26ca..5f67ace89 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java @@ -32,13 +32,13 @@ void verify_add_credential() { var function = new SummaryTokenPolicyFunction(); var context = mock(PolicyContext.class); - var builder = TokenParameters.Builder.newInstance().audience("aud"); + var builder = TokenParameters.Builder.newInstance().claims("aud", "aud"); when(context.getContextData(eq(TokenParameters.Builder.class))).thenReturn(builder); var policy = Policy.Builder.newInstance().build(); function.apply(policy, context); - assertThat(builder.build().getAdditional().containsKey(CX_SUMMARY_CREDENTIAL)).isTrue(); + assertThat(builder.build().getStringClaim("scope").contains(CX_SUMMARY_CREDENTIAL)).isTrue(); } } diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts index df6358ab8..dec370fa9 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts @@ -24,7 +24,7 @@ dependencies { implementation(libs.edc.dpf.util) implementation(libs.edc.ext.http) implementation(libs.edc.spi.jwt) - implementation(libs.edc.jwt.core) + implementation(libs.edc.token.core) implementation(libs.edc.spi.dataplane.http) implementation(libs.jakarta.rsApi) diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts index 1e0be9029..1719bcfc3 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts @@ -20,7 +20,7 @@ dependencies { implementation(libs.edc.util) implementation(libs.edc.dpf.util) - implementation(libs.edc.jwt.core) + implementation(libs.edc.token.core) implementation(libs.edc.ext.http) implementation(libs.edc.spi.http) diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java index 7337f59d2..0482bff8d 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java @@ -35,6 +35,7 @@ import java.text.ParseException; import java.time.ZoneOffset; +import java.util.Optional; import static java.lang.String.format; import static org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntryStates.REFRESHING; @@ -87,10 +88,11 @@ private Result handleTransferProcessTermination(TransferProcessTerminated private Result storeEdr(EndpointDataReference edr) { return transactionContext.execute(() -> { - var transferProcess = transferProcessStore.findForCorrelationId(edr.getId()); + var transferProcess = Optional.ofNullable(transferProcessStore.findById(edr.getId())) + .orElseGet(() -> transferProcessStore.findForCorrelationId(edr.getId())); if (transferProcess != null) { - String contractNegotiationId = null; + String contractNegotiationId; var contractNegotiation = agreementService.findNegotiation(transferProcess.getContractId()); if (contractNegotiation != null) { contractNegotiationId = contractNegotiation.getId(); diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java index 99badf854..781f6a6e4 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java @@ -38,10 +38,10 @@ public Boolean apply(Policy policy, PolicyContext policyContext) { } var tokenParam = tokenBuilder.build(); - var existingScope = tokenParam.getScope(); + var existingScope = tokenParam.getStringClaim("scope"); var newScopes = new HashSet<>(defaultScopes); newScopes.add(existingScope); - tokenBuilder.scope(String.join(" ", newScopes).trim()); + tokenBuilder.claims("scope", String.join(" ", newScopes).trim()); return true; } } diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java index a29a1cb85..e988dd855 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java @@ -42,7 +42,7 @@ void verify_applyExtractor() { var ctx = PolicyContextImpl.Builder.newInstance().additional(TokenParameters.Builder.class, builder).build(); extractor.apply(Policy.Builder.newInstance().build(), ctx); - assertThat(builder.build().getScope().split(" ")).contains("scope1", "scope2"); + assertThat(builder.build().getStringClaim("scope").split(" ")).contains("scope1", "scope2"); } @Test diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractnegotiation/V0_0_8__Alter_ContractNegotiation_AddProtocolMessagesField.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractnegotiation/V0_0_8__Alter_ContractNegotiation_AddProtocolMessagesField.sql new file mode 100644 index 000000000..4e7363a21 --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/contractnegotiation/V0_0_8__Alter_ContractNegotiation_AddProtocolMessagesField.sql @@ -0,0 +1,15 @@ +-- +-- Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +-- + +-- alter type of column "type" +ALTER TABLE edc_contract_negotiation ADD COLUMN protocol_messages JSON DEFAULT '{}'; \ No newline at end of file diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_13__Alter_TransferProcess_AddProtocolMessages.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_13__Alter_TransferProcess_AddProtocolMessages.sql new file mode 100644 index 000000000..4c94631de --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/transferprocess/V0_0_13__Alter_TransferProcess_AddProtocolMessages.sql @@ -0,0 +1,15 @@ +-- +-- Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +-- + +-- add column +ALTER TABLE edc_transfer_process ADD COLUMN protocol_messages JSON DEFAULT '{}'; diff --git a/edc-extensions/ssi/ssi-identity-core/build.gradle.kts b/edc-extensions/ssi/ssi-identity-core/build.gradle.kts index 4a7a3da37..3e47fc6e5 100644 --- a/edc-extensions/ssi/ssi-identity-core/build.gradle.kts +++ b/edc-extensions/ssi/ssi-identity-core/build.gradle.kts @@ -21,7 +21,8 @@ dependencies { implementation(project(":spi:ssi-spi")) implementation(libs.edc.spi.core) implementation(libs.edc.spi.jwt) - implementation(libs.edc.jwt.core) + implementation(libs.edc.spi.token) + implementation(libs.edc.token.core) implementation(libs.nimbus.jwt) testImplementation(testFixtures(libs.edc.junit)) } diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java index ac634d7ae..d17d4242b 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java @@ -14,23 +14,30 @@ package org.eclipse.tractusx.edc.iam.ssi.identity; -import org.eclipse.edc.jwt.spi.TokenValidationService; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.iam.TokenParameters; import org.eclipse.edc.spi.iam.TokenRepresentation; import org.eclipse.edc.spi.iam.VerificationContext; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; +import org.eclipse.tractusx.edc.iam.ssi.spi.SsiTokenValidationService; + +import static org.eclipse.tractusx.edc.iam.ssi.spi.SsiConstants.SSI_TOKEN_CONTEXT; public class SsiIdentityService implements IdentityService { - private final TokenValidationService tokenValidationService; + private final SsiTokenValidationService tokenValidationService; + + private final TokenValidationRulesRegistry rulesRegistry; private final SsiCredentialClient client; - public SsiIdentityService(TokenValidationService tokenValidationService, SsiCredentialClient client) { + public SsiIdentityService(SsiTokenValidationService tokenValidationService, TokenValidationRulesRegistry rulesRegistry, + SsiCredentialClient client) { this.tokenValidationService = tokenValidationService; + this.rulesRegistry = rulesRegistry; this.client = client; } @@ -41,6 +48,6 @@ public Result obtainClientCredentials(TokenParameters param @Override public Result verifyJwtToken(TokenRepresentation tokenRepresentation, VerificationContext verificationContext) { - return tokenValidationService.validate(tokenRepresentation); + return tokenValidationService.validate(tokenRepresentation, rulesRegistry.getRules(SSI_TOKEN_CONTEXT)); } } diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java index ca69eb878..c1a463e02 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java @@ -21,11 +21,14 @@ import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.identity.rule.SsiAudienceValidationRule; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; -import org.eclipse.tractusx.edc.iam.ssi.spi.SsiValidationRuleRegistry; +import org.eclipse.tractusx.edc.iam.ssi.spi.SsiTokenValidationService; -@Provides({ IdentityService.class, SsiValidationRuleRegistry.class }) +import static org.eclipse.tractusx.edc.iam.ssi.spi.SsiConstants.SSI_TOKEN_CONTEXT; + +@Provides({ IdentityService.class, SsiTokenValidationService.class }) @Extension(SsiIdentityServiceExtension.EXTENSION_NAME) public class SsiIdentityServiceExtension implements ServiceExtension { @@ -37,6 +40,9 @@ public class SsiIdentityServiceExtension implements ServiceExtension { @Inject private SsiCredentialClient credentialClient; + @Inject + private TokenValidationRulesRegistry rulesRegistry; + @Override public String name() { return EXTENSION_NAME; @@ -44,18 +50,18 @@ public String name() { @Override public void initialize(ServiceExtensionContext context) { - var validationRulesRegistry = new SsiValidationRulesRegistryImpl(); - configureRules(context, validationRulesRegistry); - context.registerService(SsiValidationRuleRegistry.class, validationRulesRegistry); - var identityService = new SsiIdentityService(new SsiTokenValidationService(validationRulesRegistry, credentialClient), credentialClient); + var tokenValidationService = new SsiTokenValidationServiceImpl(credentialClient); + configureRules(context, rulesRegistry); + + var identityService = new SsiIdentityService(tokenValidationService, rulesRegistry, credentialClient); context.registerService(IdentityService.class, identityService); + context.registerService(SsiTokenValidationService.class, tokenValidationService); } - - private void configureRules(ServiceExtensionContext context, SsiValidationRuleRegistry registry) { + private void configureRules(ServiceExtensionContext context, TokenValidationRulesRegistry registry) { var endpointAudience = context.getConfig().getString(ENDPOINT_AUDIENCE); - registry.addRule(new SsiAudienceValidationRule(endpointAudience)); + registry.addRule(SSI_TOKEN_CONTEXT, new SsiAudienceValidationRule(endpointAudience)); } } diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationService.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java similarity index 70% rename from edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationService.java rename to edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java index 80a99d915..d0e8cd2b6 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationService.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at @@ -14,36 +14,35 @@ package org.eclipse.tractusx.edc.iam.ssi.identity; -import org.eclipse.edc.jwt.spi.TokenValidationRulesRegistry; -import org.eclipse.edc.jwt.spi.TokenValidationService; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.iam.TokenRepresentation; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRule; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; +import org.eclipse.tractusx.edc.iam.ssi.spi.SsiTokenValidationService; import org.jetbrains.annotations.Nullable; import java.util.Collection; +import java.util.List; import java.util.Map; import java.util.stream.Collectors; -public class SsiTokenValidationService implements TokenValidationService { +public class SsiTokenValidationServiceImpl implements SsiTokenValidationService { - private final TokenValidationRulesRegistry rulesRegistry; private final SsiCredentialClient credentialClient; - public SsiTokenValidationService(TokenValidationRulesRegistry rulesRegistry, SsiCredentialClient credentialClient) { - this.rulesRegistry = rulesRegistry; + public SsiTokenValidationServiceImpl(SsiCredentialClient credentialClient) { this.credentialClient = credentialClient; } @Override - public Result validate(TokenRepresentation tokenRepresentation) { + public Result validate(TokenRepresentation tokenRepresentation, List rules) { return credentialClient.validate(tokenRepresentation) - .compose(claimToken -> checkRules(claimToken, tokenRepresentation.getAdditional())); + .compose(claimToken -> checkRules(claimToken, tokenRepresentation.getAdditional(), rules)); } - private Result checkRules(ClaimToken claimToken, @Nullable Map additional) { - var errors = rulesRegistry.getRules().stream() + private Result checkRules(ClaimToken claimToken, @Nullable Map additional, List rules) { + var errors = rules.stream() .map(r -> r.checkRule(claimToken, additional)) .filter(Result::failed) .map(Result::getFailureMessages) diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiValidationRulesRegistryImpl.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiValidationRulesRegistryImpl.java deleted file mode 100644 index 077c35862..000000000 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiValidationRulesRegistryImpl.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 - * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation - * - */ - -package org.eclipse.tractusx.edc.iam.ssi.identity; - -import org.eclipse.edc.jwt.TokenValidationRulesRegistryImpl; -import org.eclipse.tractusx.edc.iam.ssi.spi.SsiValidationRuleRegistry; - -public class SsiValidationRulesRegistryImpl extends TokenValidationRulesRegistryImpl implements SsiValidationRuleRegistry { -} diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java index dc3c7eae9..3fd62bf5d 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java @@ -14,9 +14,9 @@ package org.eclipse.tractusx.edc.iam.ssi.identity.rule; -import org.eclipse.edc.jwt.spi.TokenValidationRule; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRule; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java index 3255f83b3..ee97dbc2a 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java @@ -20,7 +20,6 @@ import org.eclipse.edc.spi.system.configuration.Config; import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; -import org.eclipse.tractusx.edc.iam.ssi.spi.SsiValidationRuleRegistry; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -54,7 +53,6 @@ void initialize() { extension.initialize(context); assertThat(context.getService(IdentityService.class)).isNotNull().isInstanceOf(SsiIdentityService.class); - assertThat(context.getService(SsiValidationRuleRegistry.class)).isNotNull().isInstanceOf(SsiValidationRulesRegistryImpl.class); verify(cfg).getString(ENDPOINT_AUDIENCE); diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java index 8a776f475..d78a26bf3 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java @@ -14,29 +14,37 @@ package org.eclipse.tractusx.edc.iam.ssi.identity; -import org.eclipse.edc.jwt.spi.TokenValidationService; import org.eclipse.edc.spi.iam.ClaimToken; +import org.eclipse.edc.spi.iam.PublicKeyResolver; import org.eclipse.edc.spi.iam.TokenParameters; import org.eclipse.edc.spi.iam.TokenRepresentation; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; +import org.eclipse.tractusx.edc.iam.ssi.spi.SsiTokenValidationService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import java.util.List; + import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.AUDIENCE; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; public class SsiIdentityServiceTest { SsiCredentialClient credentialClient = mock(SsiCredentialClient.class); - TokenValidationService tokenValidationService = mock(TokenValidationService.class); + SsiTokenValidationService tokenValidationService = mock(SsiTokenValidationService.class); + TokenValidationRulesRegistry rulesRegistry = mock(TokenValidationRulesRegistry.class); + PublicKeyResolver publicKeyResolver = mock(PublicKeyResolver.class); SsiIdentityService identityService; @BeforeEach void setup() { - identityService = new SsiIdentityService(tokenValidationService, credentialClient); + identityService = new SsiIdentityService(tokenValidationService, rulesRegistry, credentialClient); } @Test @@ -44,7 +52,7 @@ void verifyJwtToken_success() { var token = TokenRepresentation.Builder.newInstance().token("test").build(); var claim = ClaimToken.Builder.newInstance().build(); - when(tokenValidationService.validate(token)).thenReturn(Result.success(claim)); + when(tokenValidationService.validate(eq(token), eq(List.of()))).thenReturn(Result.success(claim)); var result = identityService.verifyJwtToken(token, "audience"); @@ -55,7 +63,7 @@ void verifyJwtToken_success() { void verifyJwtToken_failed() { var token = TokenRepresentation.Builder.newInstance().token("test").build(); - when(tokenValidationService.validate(token)).thenReturn(Result.failure("fail")); + when(tokenValidationService.validate(eq(token), eq(List.of()))).thenReturn(Result.failure("fail")); var result = identityService.verifyJwtToken(token, "audience"); @@ -65,7 +73,7 @@ void verifyJwtToken_failed() { @Test void obtainClientCredentials_success() { - var tokenParameters = TokenParameters.Builder.newInstance().audience("audience").build(); + var tokenParameters = TokenParameters.Builder.newInstance().claims(AUDIENCE, "audience").build(); var tokenRepresentation = TokenRepresentation.Builder.newInstance().token("test").build(); when(credentialClient.obtainClientCredentials(tokenParameters)).thenReturn(Result.success(tokenRepresentation)); @@ -77,7 +85,7 @@ void obtainClientCredentials_success() { @Test void obtainClientCredentials_fail() { - var tokenParameters = TokenParameters.Builder.newInstance().audience("audience").build(); + var tokenParameters = TokenParameters.Builder.newInstance().claims(AUDIENCE, "audience").build(); when(credentialClient.obtainClientCredentials(tokenParameters)).thenReturn(Result.failure("fail")); diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java similarity index 79% rename from edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceTest.java rename to edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java index 56f30c3eb..961f0fd86 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java @@ -14,12 +14,12 @@ package org.eclipse.tractusx.edc.iam.ssi.identity; -import org.eclipse.edc.jwt.spi.TokenValidationRule; -import org.eclipse.edc.jwt.spi.TokenValidationRulesRegistry; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.iam.TokenRepresentation; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRule; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; +import org.eclipse.tractusx.edc.iam.ssi.spi.SsiTokenValidationService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -33,29 +33,27 @@ import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; -public class SsiTokenValidationServiceTest { +public class SsiTokenValidationServiceImplTest { SsiCredentialClient credentialClient = mock(SsiCredentialClient.class); - TokenValidationRulesRegistry validationRulesRegistry = mock(TokenValidationRulesRegistry.class); SsiTokenValidationService validationService; @BeforeEach void setup() { - validationService = new SsiTokenValidationService(validationRulesRegistry, credentialClient); + validationService = new SsiTokenValidationServiceImpl(credentialClient); } - + @Test void validate_success() { var token = TokenRepresentation.Builder.newInstance().token("test").build(); var rule = mock(TokenValidationRule.class); var claim = ClaimToken.Builder.newInstance().build(); - when(validationRulesRegistry.getRules()).thenReturn(List.of(rule)); when(credentialClient.validate(token)).thenReturn(Result.success(claim)); when(rule.checkRule(any(), any())).thenReturn(Result.success()); - var result = validationService.validate(token); + var result = validationService.validate(token, List.of(rule)); assertThat(result).isNotNull().extracting(Result::getContent).isEqualTo(claim); @@ -68,11 +66,10 @@ void validate_fail_whenClientFails() { var token = TokenRepresentation.Builder.newInstance().token("test").build(); var rule = mock(TokenValidationRule.class); - when(validationRulesRegistry.getRules()).thenReturn(List.of(rule)); when(credentialClient.validate(token)).thenReturn(Result.failure("failure")); when(rule.checkRule(any(), any())).thenReturn(Result.success()); - var result = validationService.validate(token); + var result = validationService.validate(token, List.of(rule)); assertThat(result).isNotNull().matches(Result::failed); @@ -87,11 +84,10 @@ void validate_fail_whenRuleFails() { var claim = ClaimToken.Builder.newInstance().build(); - when(validationRulesRegistry.getRules()).thenReturn(List.of(rule)); when(credentialClient.validate(token)).thenReturn(Result.success(claim)); when(rule.checkRule(any(), any())).thenReturn(Result.failure("failure")); - var result = validationService.validate(token); + var result = validationService.validate(token, List.of(rule)); assertThat(result).isNotNull().matches(Result::failed); diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java index d6a1567e7..183c698c4 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java @@ -14,8 +14,8 @@ package org.eclipse.tractusx.edc.iam.ssi.identity.rule; -import org.eclipse.edc.jwt.spi.TokenValidationRule; import org.eclipse.edc.spi.iam.ClaimToken; +import org.eclipse.edc.token.spi.TokenValidationRule; import org.junit.jupiter.api.Test; import java.util.List; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts b/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts index 37455f538..6db816b84 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts +++ b/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts @@ -24,6 +24,7 @@ dependencies { implementation(libs.edc.spi.jsonld) implementation(libs.edc.auth.oauth2.client) implementation(libs.edc.spi.jwt) + implementation(libs.edc.spi.token) implementation(libs.jakartaJson) implementation(libs.nimbus.jwt) diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java index 44c58955d..964b08e6c 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java @@ -19,17 +19,19 @@ import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.miw.config.SsiMiwConfiguration; import org.eclipse.tractusx.edc.iam.ssi.miw.rule.SsiCredentialIssuerValidationRule; import org.eclipse.tractusx.edc.iam.ssi.miw.rule.SsiCredentialSubjectIdValidationRule; -import org.eclipse.tractusx.edc.iam.ssi.spi.SsiValidationRuleRegistry; + +import static org.eclipse.tractusx.edc.iam.ssi.spi.SsiConstants.SSI_TOKEN_CONTEXT; @Extension(SsiMiwValidationRuleExtension.EXTENSION_NAME) public class SsiMiwValidationRuleExtension implements ServiceExtension { protected static final String EXTENSION_NAME = "SSI MIW validation rules extension"; @Inject - private SsiValidationRuleRegistry registry; + private TokenValidationRulesRegistry registry; @Inject private Monitor monitor; @@ -44,7 +46,7 @@ public String name() { @Override public void initialize(ServiceExtensionContext context) { - registry.addRule(new SsiCredentialSubjectIdValidationRule(monitor)); - registry.addRule(new SsiCredentialIssuerValidationRule(miwConfiguration.getAuthorityIssuer(), monitor)); + registry.addRule(SSI_TOKEN_CONTEXT, new SsiCredentialSubjectIdValidationRule(monitor)); + registry.addRule(SSI_TOKEN_CONTEXT, new SsiCredentialIssuerValidationRule(miwConfiguration.getAuthorityIssuer(), monitor)); } } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java index 13c4f88cd..c5b91e696 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java @@ -26,10 +26,13 @@ import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; import java.text.ParseException; +import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.AUDIENCE; +import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.SCOPE; import static org.eclipse.tractusx.edc.iam.ssi.miw.api.MiwApiClient.VP; public class SsiMiwCredentialClient implements SsiCredentialClient { @@ -47,7 +50,12 @@ public SsiMiwCredentialClient(MiwApiClient apiClient, JsonLd jsonLdService, Moni @Override public Result obtainClientCredentials(TokenParameters parameters) { - return apiClient.getCredentials(parameters.getAdditional().keySet()) + var scopes = Arrays.stream(parameters.getStringClaim(SCOPE).split(" ")) + .map(String::trim) + .filter((s) -> !s.isEmpty()) + .collect(Collectors.toSet()); + + return apiClient.getCredentials(scopes) .compose(credentials -> createPresentation(credentials, parameters)) .compose(this::createToken); } @@ -69,7 +77,7 @@ private Result createToken(Map presentation private Result> createPresentation(List> credentials, TokenParameters tokenParameters) { if (!credentials.isEmpty()) { - return apiClient.createPresentation(credentials, tokenParameters.getAudience()); + return apiClient.createPresentation(credentials, tokenParameters.getStringClaim(AUDIENCE)); } else { return Result.failure("Cannot create a presentation from an empty credentials list"); } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java index 418fd44ad..a220d1c27 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java @@ -15,10 +15,10 @@ package org.eclipse.tractusx.edc.iam.ssi.miw.rule; import jakarta.json.JsonObject; -import org.eclipse.edc.jwt.spi.TokenValidationRule; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRule; import org.eclipse.tractusx.edc.iam.ssi.spi.jsonld.JsonLdFieldExtractor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java index dcd37ec15..5fb3748db 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java @@ -15,10 +15,10 @@ package org.eclipse.tractusx.edc.iam.ssi.miw.rule; import jakarta.json.JsonObject; -import org.eclipse.edc.jwt.spi.TokenValidationRule; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRule; import org.eclipse.tractusx.edc.iam.ssi.spi.jsonld.JsonLdFieldExtractor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java index 89439aab1..e3dbabf75 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java @@ -17,14 +17,16 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.injection.ObjectFactory; +import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.miw.config.SsiMiwConfiguration; import org.eclipse.tractusx.edc.iam.ssi.miw.rule.SsiCredentialIssuerValidationRule; import org.eclipse.tractusx.edc.iam.ssi.miw.rule.SsiCredentialSubjectIdValidationRule; -import org.eclipse.tractusx.edc.iam.ssi.spi.SsiValidationRuleRegistry; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; +import static org.eclipse.tractusx.edc.iam.ssi.spi.SsiConstants.SSI_TOKEN_CONTEXT; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.ArgumentMatchers.isA; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -33,14 +35,14 @@ @ExtendWith(DependencyInjectionExtension.class) public class SsiMiwValidationRuleExtensionTest { - private final SsiValidationRuleRegistry registry = mock(SsiValidationRuleRegistry.class); + private final TokenValidationRulesRegistry registry = mock(TokenValidationRulesRegistry.class); private final SsiMiwConfiguration cfg = mock(SsiMiwConfiguration.class); private SsiMiwValidationRuleExtension extension; @BeforeEach void setup(ObjectFactory factory, ServiceExtensionContext context) { context.registerService(SsiMiwConfiguration.class, cfg); - context.registerService(SsiValidationRuleRegistry.class, registry); + context.registerService(TokenValidationRulesRegistry.class, registry); extension = factory.constructInstance(SsiMiwValidationRuleExtension.class); } @@ -49,8 +51,8 @@ void initialize(ServiceExtensionContext context) { when(cfg.getAuthorityIssuer()).thenReturn("issuer"); extension.initialize(context); - verify(registry).addRule(isA(SsiCredentialSubjectIdValidationRule.class)); - verify(registry).addRule(isA(SsiCredentialIssuerValidationRule.class)); + verify(registry).addRule(eq(SSI_TOKEN_CONTEXT), isA(SsiCredentialSubjectIdValidationRule.class)); + verify(registry).addRule(eq(SSI_TOKEN_CONTEXT), isA(SsiCredentialIssuerValidationRule.class)); verify(cfg).getAuthorityIssuer(); } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java index 0164302d4..7c708f383 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java @@ -42,6 +42,8 @@ import java.util.UUID; import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.AUDIENCE; +import static org.eclipse.edc.jwt.spi.JwtRegisteredClaimNames.SCOPE; import static org.eclipse.tractusx.edc.iam.ssi.miw.api.MiwApiClient.VP; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; @@ -111,7 +113,7 @@ void obtainCredentials_success() { when(apiClient.getCredentials(Set.of())).thenReturn(Result.success(credentials)); when(apiClient.createPresentation(credentials, audience)).thenReturn(Result.success(presentation)); - var result = credentialClient.obtainClientCredentials(TokenParameters.Builder.newInstance().audience(audience).build()); + var result = credentialClient.obtainClientCredentials(TokenParameters.Builder.newInstance().claims(AUDIENCE, audience).claims(SCOPE, "").build()); assertThat(result).isNotNull() .extracting(Result::getContent) diff --git a/edc-tests/e2e-tests/build.gradle.kts b/edc-tests/e2e-tests/build.gradle.kts index 6c20d054b..2c7296072 100644 --- a/edc-tests/e2e-tests/build.gradle.kts +++ b/edc-tests/e2e-tests/build.gradle.kts @@ -38,7 +38,6 @@ dependencies { testImplementation(libs.edc.spi.dataplane.selector) testImplementation(libs.edc.ext.jsonld) testImplementation(libs.edc.dsp) - testImplementation(libs.edc.identity.core.did) testImplementation(libs.edc.identity.jws2020) testImplementation(libs.edc.identity.vc.ldp) testImplementation(libs.edc.ih.spi.store) diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java index eed7cfe80..75fa297bd 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java @@ -16,6 +16,7 @@ import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; import org.eclipse.edc.spi.iam.IdentityService; +import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.injection.InjectionContainer; @@ -27,13 +28,18 @@ import java.util.List; import java.util.Map; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.generateKeyPair; +import static org.eclipse.tractusx.edc.helpers.IatpHelperFunctions.toPemEncoded; + public class ParticipantRuntime extends EdcRuntimeExtension implements BeforeAllCallback, AfterAllCallback { + private final Map properties; private DataWiper wiper; public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map properties) { super(moduleName, runtimeName, properties); + this.properties = properties; if (!properties.containsKey("tx.ssi.miw.url") && !properties.containsKey("edc.iam.issuer.id")) { this.registerServiceMock(IdentityService.class, new MockBpnIdentityService(bpn)); } @@ -60,11 +66,23 @@ public void afterAll(ExtensionContext context) throws Exception { super.afterTestExecution(context); } - @Override protected void bootExtensions(ServiceExtensionContext context, List> serviceExtensions) { super.bootExtensions(context, serviceExtensions); wiper = new DataWiper(context); + registerConsumerPullKeys(properties); + } + + private void registerConsumerPullKeys(Map properties) { + var privateAlias = properties.get("edc.transfer.proxy.token.signer.privatekey.alias"); + var publicAlias = properties.get("edc.transfer.proxy.token.verifier.publickey.alias"); + + if (privateAlias != null && publicAlias != null) { + var keyPair = generateKeyPair(); + var vault = getContext().getService(Vault.class); + vault.storeSecret(privateAlias, toPemEncoded(keyPair.getPrivate())); + vault.storeSecret(publicAlias, toPemEncoded(keyPair.getPublic())); + } } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java index 8fa08b996..971718b7a 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java @@ -148,7 +148,8 @@ public Map getConfiguration() { put("web.http.public.port", String.valueOf(dataPlanePublic.getPort())); put("web.http.gateway.path", gateway.getPath()); put("web.http.gateway.port", String.valueOf(gateway.getPort())); - + put("edc.transfer.proxy.token.signer.privatekey.alias", "private-key"); + put("edc.transfer.proxy.token.verifier.publickey.alias", "public-key"); put("edc.transfer.send.retry.limit", "1"); put("edc.transfer.send.retry.base-delay.ms", "100"); put("tx.dpf.consumer.proxy.port", String.valueOf(dataPlaneProxy.getPort())); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java index c91c28268..191263070 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java @@ -53,6 +53,7 @@ public Map stsConfiguration(IatpParticipant... participants) { stsConfiguration.put(prefix + ".client_id", participant.getBpn()); stsConfiguration.put(prefix + ".secret.alias", "client_secret_alias"); stsConfiguration.put(prefix + ".private-key.alias", participant.verificationId()); + stsConfiguration.put(prefix + ".public-key.reference", participant.verificationId()); }); var baseConfiguration = stsParticipant.getConfiguration(); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java index a3ef1f2da..830187c68 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java @@ -16,6 +16,7 @@ import jakarta.json.JsonObject; import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.junit.jupiter.api.Disabled; import java.util.Map; @@ -23,6 +24,8 @@ import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest +// waiting for https://github.com/eclipse-edc/Connector/issues/3796 +@Disabled public class IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest extends IatpHttpConsumerPullWithProxyInMemoryTest { @Override diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java index c0ae00177..6a97dfe24 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java @@ -31,6 +31,7 @@ import org.eclipse.tractusx.edc.lifecycle.tx.iatp.SecureTokenService; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.extension.RegisterExtension; import java.io.IOException; @@ -42,6 +43,8 @@ import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest +// waiting for https://github.com/eclipse-edc/Connector/issues/3796 +@Disabled public class IatpHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsumerPullWithProxyTest { protected static final DataspaceIssuer DATASPACE_ISSUER_PARTICIPANT = new DataspaceIssuer(); diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts index f74c2a928..620159baa 100644 --- a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts @@ -47,7 +47,6 @@ dependencies { implementation(libs.edc.auth.oauth2.client) implementation(libs.edc.ih.api) implementation(libs.edc.ih.credentials) - implementation(libs.edc.ih.pkprovider) // for the controller implementation(libs.jakarta.rsApi) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 10c1d9737..602857529 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ format.version = "1.1" [versions] -edc = "0.4.2-20240103-SNAPSHOT" +edc = "0.5.0" postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.3" @@ -41,8 +41,9 @@ edc-spi-web = { module = "org.eclipse.edc:web-spi", version.ref = "edc" } edc-spi-http = { module = "org.eclipse.edc:http-spi", version.ref = "edc" } edc-spi-jsonld = { module = "org.eclipse.edc:json-ld-spi", version.ref = "edc" } edc-spi-jwt = { module = "org.eclipse.edc:jwt-spi", version.ref = "edc" } +edc-spi-token = { module = "org.eclipse.edc:token-spi", version.ref = "edc" } edc-spi-transform = { module = "org.eclipse.edc:transform-spi", version.ref = "edc" } -edc-jwt-core = { module = "org.eclipse.edc:jwt-core", version.ref = "edc" } +edc-token-core = { module = "org.eclipse.edc:token-core", version.ref = "edc" } edc-spi-oauth2 = { module = "org.eclipse.edc:oauth2-spi", version.ref = "edc" } edc-util = { module = "org.eclipse.edc:util", version.ref = "edc" } edc-boot = { module = "org.eclipse.edc:boot", version.ref = "edc" } @@ -113,6 +114,7 @@ edc-controlplane-callback-dispatcher-http = { module = "org.eclipse.edc:callback edc-identity-core-trust = { module = "org.eclipse.edc:identity-trust-core", version.ref = "edc" } edc-identity-core-did = { module = "org.eclipse.edc:identity-did-core", version.ref = "edc" } +edc-identity-did-web = { module = "org.eclipse.edc:identity-did-web", version.ref = "edc" } edc-identity-vc-ldp = { module = "org.eclipse.edc:ldp-verifiable-credentials", version.ref = "edc" } edc-identity-vc-jwt = { module = "org.eclipse.edc:jwt-verifiable-credentials", version.ref = "edc" } edc-identity-jws2020 = { module = "org.eclipse.edc:jws2020", version.ref = "edc" } @@ -131,7 +133,6 @@ edc-identity-trust-sts-client-configuration = { module = "org.eclipse.edc:identi edc-ih-api = { module = "org.eclipse.edc:identity-hub-api", version.ref = "edc" } edc-ih-credentials = { module = "org.eclipse.edc:identity-hub-credentials", version.ref = "edc" } -edc-ih-pkprovider = { module = "org.eclipse.edc:public-key-provider", version.ref = "edc" } edc-ih-spi-store = { module = "org.eclipse.edc:identity-hub-store-spi", version.ref = "edc" } # DPF modules @@ -157,7 +158,7 @@ edc-micrometer-core = { module = "org.eclipse.edc:micrometer-core", version.ref edc-micrometer-jersey = { module = "org.eclipse.edc:jersey-micrometer", version.ref = "edc" } edc-micrometer-jetty = { module = "org.eclipse.edc:jetty-micrometer", version.ref = "edc" } edc-monitor-jdklogger = { module = "org.eclipse.edc:monitor-jdk-logger", version.ref = "edc" } -edc-transfer-dynamicreceiver = { module = "org.eclipse.edc:transfer-pull-http-dynamic-receiver", version.ref = "edc" } +edc-transfer-dynamicreceiver = { module = "org.eclipse.edc:transfer-pull-http-dynamic-receiver", version = "0.5.1-20240122-SNAPSHOT" } edc-transfer-receiver = { module = "org.eclipse.edc:transfer-pull-http-receiver", version.ref = "edc" } # other deps diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index da1db5f04..a59520664 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiValidationRuleRegistry.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java similarity index 59% rename from spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiValidationRuleRegistry.java rename to spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java index 95bff34e3..a09d52d85 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiValidationRuleRegistry.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at @@ -14,9 +14,7 @@ package org.eclipse.tractusx.edc.iam.ssi.spi; -import org.eclipse.edc.jwt.spi.TokenValidationRulesRegistry; -import org.eclipse.edc.runtime.metamodel.annotation.ExtensionPoint; +public interface SsiConstants { + String SSI_TOKEN_CONTEXT = "ssi-token-context"; -@ExtensionPoint -public interface SsiValidationRuleRegistry extends TokenValidationRulesRegistry { } diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java new file mode 100644 index 000000000..9ffafd6e7 --- /dev/null +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iam.ssi.spi; + +import org.eclipse.edc.runtime.metamodel.annotation.ExtensionPoint; +import org.eclipse.edc.spi.iam.ClaimToken; +import org.eclipse.edc.spi.iam.TokenRepresentation; +import org.eclipse.edc.spi.result.Result; +import org.eclipse.edc.token.spi.TokenValidationRule; + +import java.util.List; + +/** + * Validates SSI tokens + */ + +@ExtensionPoint +public interface SsiTokenValidationService { + + Result validate(TokenRepresentation tokenRepresentation, List rules); +} From b2dfe622499d19d1187939e78192359a7e35855c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 15:42:46 +0100 Subject: [PATCH 48/83] chore(deps): bump aws from 2.23.3 to 2.23.8 (#1000) * chore(deps): bump aws from 2.23.3 to 2.23.8 Bumps `aws` from 2.23.3 to 2.23.8. Updates `software.amazon.awssdk:s3` from 2.23.3 to 2.23.8 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.23.3 to 2.23.8 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 706cc2439..3c645ec0b 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -488,58 +488,58 @@ maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/iam/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sts/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.23.8, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 602857529..3fc605319 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.11.0" testcontainers = "1.19.3" -aws = "2.23.3" +aws = "2.23.8" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.25.1" From 3f4a0b6423f56e145ec8d2679d9ee1681a705fbe Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 16:30:55 +0100 Subject: [PATCH 49/83] chore(deps): bump apache-sshd from 2.11.0 to 2.12.0 (#996) * chore(deps): bump apache-sshd from 2.11.0 to 2.12.0 Bumps `apache-sshd` from 2.11.0 to 2.12.0. Updates `org.apache.sshd:sshd-core` from 2.11.0 to 2.12.0 - [Release notes](https://github.com/apache/mina-sshd/releases) - [Changelog](https://github.com/apache/mina-sshd/blob/master/CHANGES.md) - [Commits](https://github.com/apache/mina-sshd/compare/sshd-2.11.0...sshd-2.12.0) Updates `org.apache.sshd:sshd-sftp` from 2.11.0 to 2.12.0 - [Release notes](https://github.com/apache/mina-sshd/releases) - [Changelog](https://github.com/apache/mina-sshd/blob/master/CHANGES.md) - [Commits](https://github.com/apache/mina-sshd/compare/sshd-2.11.0...sshd-2.12.0) --- updated-dependencies: - dependency-name: org.apache.sshd:sshd-core dependency-type: direct:production update-type: version-update:semver-minor - dependency-name: org.apache.sshd:sshd-sftp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 6 +++--- gradle/libs.versions.toml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 3c645ec0b..50f11f670 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -211,9 +211,9 @@ maven/mavencentral/org.apache.groovy/groovy/4.0.16, Apache-2.0 AND BSD-3-Clause maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.13, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ23527 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.13, Apache-2.0, approved, CQ23528 maven/mavencentral/org.apache.httpcomponents/httpmime/4.5.13, Apache-2.0, approved, CQ11718 -maven/mavencentral/org.apache.sshd/sshd-common/2.11.0, Apache-2.0 AND ISC, approved, #11101 -maven/mavencentral/org.apache.sshd/sshd-core/2.11.0, Apache-2.0, approved, #11100 -maven/mavencentral/org.apache.sshd/sshd-sftp/2.11.0, Apache-2.0, approved, #11103 +maven/mavencentral/org.apache.sshd/sshd-common/2.12.0, Apache-2.0 AND ISC, approved, #12842 +maven/mavencentral/org.apache.sshd/sshd-core/2.12.0, Apache-2.0, approved, #12841 +maven/mavencentral/org.apache.sshd/sshd-sftp/2.12.0, Apache-2.0, approved, #12840 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.assertj/assertj-core/3.25.1, Apache-2.0, approved, #12585 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3fc605319..fcb6511f7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ mockwebserver = "5.0.0-alpha.12" bouncyCastle-jdk18on = "1.77" mockito = "5.2.0" restAssured = "5.4.0" -apache-sshd = "2.11.0" +apache-sshd = "2.12.0" testcontainers = "1.19.3" aws = "2.23.8" rsApi = "3.1.0" From afad91dcf52d747274b0e82ea0f502d41c7b7a34 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 23 Jan 2024 17:29:32 +0100 Subject: [PATCH 50/83] chore(deps): bump actions/cache from 3 to 4 (#994) Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4. - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/cache 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/deployment-test.yaml | 2 +- .github/workflows/upgradeability-test.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deployment-test.yaml b/.github/workflows/deployment-test.yaml index 118d855f8..61d058aea 100644 --- a/.github/workflows/deployment-test.yaml +++ b/.github/workflows/deployment-test.yaml @@ -47,7 +47,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache ContainerD Image Layers - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs key: ${{ runner.os }}-io.containerd.snapshotter.v1.overlayfs diff --git a/.github/workflows/upgradeability-test.yaml b/.github/workflows/upgradeability-test.yaml index 27362a33a..83dca6d82 100644 --- a/.github/workflows/upgradeability-test.yaml +++ b/.github/workflows/upgradeability-test.yaml @@ -32,7 +32,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Cache ContainerD Image Layers - uses: actions/cache@v3 + uses: actions/cache@v4 with: path: /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs key: ${{ runner.os }}-io.containerd.snapshotter.v1.overlayfs From 1f4dc8fed5bf38708d52659a7ff8b77e3ffd8943 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Thu, 25 Jan 2024 11:21:11 +0100 Subject: [PATCH 51/83] build(deps): bump eclipse-temurin base image to java 21 (#1001) * build(deps): bump eclipse-temurin base image to java 21 * Update build java version --- build.gradle.kts | 7 +------ .../edc-controlplane-postgresql-azure-vault/notice.md | 2 +- .../src/main/docker/Dockerfile | 2 +- .../edc-controlplane-postgresql-hashicorp-vault/notice.md | 2 +- .../src/main/docker/Dockerfile | 2 +- edc-controlplane/edc-runtime-memory/notice.md | 2 +- .../edc-runtime-memory/src/main/docker/Dockerfile | 2 +- edc-dataplane/edc-dataplane-azure-vault/notice.md | 2 +- .../edc-dataplane-azure-vault/src/main/docker/Dockerfile | 2 +- edc-dataplane/edc-dataplane-hashicorp-vault/notice.md | 2 +- .../src/main/docker/Dockerfile | 2 +- 11 files changed, 11 insertions(+), 16 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 3875dbda8..d2bcd793b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -77,7 +77,7 @@ allprojects { // configure which version of the annotation processor to use. defaults to the same version as the plugin configure { processorVersion.set(edcVersion) - outputDirectory.set(project.buildDir) + outputDirectory.set(project.layout.buildDirectory.asFile.get()) // uncomment the following lines to enable the Autodoc-2-Markdown converter // only available with EDC 0.2.1 SNAPSHOT // additionalInputDirectory.set(downloadDir.asFile) @@ -85,11 +85,6 @@ allprojects { } configure { - versions { - // override default dependency versions here - metaModel.set(edcVersion) - - } pom { // this is actually important, so we can publish under the correct GID groupId = project.group.toString() diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md b/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md index fa34738d8..ab3ec7a1d 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:21.0.2_13-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile index 473b89158..d01776c49 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile @@ -18,7 +18,7 @@ # # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.9_9-jre-alpine +FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md index 42d662305..7c8c1658c 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:21.0.2_13-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile index 67fa4151a..418eec1f7 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile @@ -19,7 +19,7 @@ # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.9_9-jre-alpine +FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES diff --git a/edc-controlplane/edc-runtime-memory/notice.md b/edc-controlplane/edc-runtime-memory/notice.md index 19a980387..f72b20232 100644 --- a/edc-controlplane/edc-runtime-memory/notice.md +++ b/edc-controlplane/edc-runtime-memory/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:21.0.2_13-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile b/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile index 8932c1e60..8c93d6a28 100644 --- a/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile @@ -20,7 +20,7 @@ # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.9_9-jre-alpine +FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG APP_USER=docker diff --git a/edc-dataplane/edc-dataplane-azure-vault/notice.md b/edc-dataplane/edc-dataplane-azure-vault/notice.md index 26fd3bc66..423885b08 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/notice.md +++ b/edc-dataplane/edc-dataplane-azure-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:21.0.2_13-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile index 5ab505140..68c730258 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile +++ b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile @@ -18,7 +18,7 @@ # # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.9_9-jre-alpine +FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md b/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md index fc1834d86..0aaf194ca 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/notice.md @@ -15,7 +15,7 @@ Eclipse Tractus-X product(s) installed within the image: ## Used base image -- [eclipse-temurin:17.0.9_9-jre-alpine](https://github.com/adoptium/containers) +- [eclipse-temurin:21.0.2_13-jre-alpine](https://github.com/adoptium/containers) - Official Eclipse Temurin DockerHub page: - Eclipse Temurin Project: - Additional information about the Eclipse Temurin diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile index fa32b71b2..5e42900a9 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile @@ -19,7 +19,7 @@ # SPDX-License-Identifier: Apache-2.0 # -FROM eclipse-temurin:17.0.9_9-jre-alpine +FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG OTEL_JAR ARG ADDITIONAL_FILES From acbc1950849a3c96200e29e8c4abf16e5f821732 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 09:25:50 +0100 Subject: [PATCH 52/83] chore(deps): bump org.assertj:assertj-core from 3.25.1 to 3.25.2 (#1006) * chore(deps): bump org.assertj:assertj-core from 3.25.1 to 3.25.2 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.1 to 3.25.2. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.1...assertj-build-3.25.2) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 1 + gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 50f11f670..e24dc0c35 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -217,6 +217,7 @@ maven/mavencentral/org.apache.sshd/sshd-sftp/2.12.0, Apache-2.0, approved, #1284 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.assertj/assertj-core/3.25.1, Apache-2.0, approved, #12585 +maven/mavencentral/org.assertj/assertj-core/3.25.2, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.77, MIT AND CC0-1.0, approved, #11595 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fcb6511f7..61c3a684b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ testcontainers = "1.19.3" aws = "2.23.8" rsApi = "3.1.0" jupiter = "5.10.0" -assertj = "3.25.1" +assertj = "3.25.2" titanium = "1.3.3" jackson = "2.16.1" jakarta-json = "2.0.1" From 2b35a1f826cff5fa212774e11cb43de0ff9cb523 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 10:31:01 +0100 Subject: [PATCH 53/83] chore(deps): bump testcontainers from 1.19.3 to 1.19.4 (#1004) * chore(deps): bump testcontainers from 1.19.3 to 1.19.4 Bumps `testcontainers` from 1.19.3 to 1.19.4. Updates `org.testcontainers:junit-jupiter` from 1.19.3 to 1.19.4 - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.19.3...1.19.4) Updates `org.testcontainers:postgresql` from 1.19.3 to 1.19.4 - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.19.3...1.19.4) Updates `org.testcontainers:vault` from 1.19.3 to 1.19.4 - [Release notes](https://github.com/testcontainers/testcontainers-java/releases) - [Changelog](https://github.com/testcontainers/testcontainers-java/blob/main/CHANGELOG.md) - [Commits](https://github.com/testcontainers/testcontainers-java/compare/1.19.3...1.19.4) --- updated-dependencies: - dependency-name: org.testcontainers:junit-jupiter dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.testcontainers:postgresql dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.testcontainers:vault dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 8 +++++++- gradle/libs.versions.toml | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index e24dc0c35..d6c6d3ffc 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -200,6 +200,7 @@ maven/mavencentral/net.minidev/json-smart/2.5.0, Apache-2.0, approved, clearlyde maven/mavencentral/net.sf.saxon/Saxon-HE/10.6, MPL-2.0 AND W3C, approved, #7945 maven/mavencentral/org.antlr/antlr4-runtime/4.9.3, BSD-3-Clause, approved, #322 maven/mavencentral/org.apache.commons/commons-compress/1.24.0, Apache-2.0 AND BSD-3-Clause AND bzip2-1.0.6 AND LicenseRef-Public-Domain, approved, #10368 +maven/mavencentral/org.apache.commons/commons-compress/1.25.0, Apache-2.0, approved, #11600 maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, CQ22642 maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-lang3/3.13.0, Apache-2.0, approved, #9820 @@ -481,11 +482,16 @@ maven/mavencentral/org.slf4j/slf4j-api/2.0.11, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/database-commons/1.19.3, Apache-2.0, approved, #10345 +maven/mavencentral/org.testcontainers/database-commons/1.19.4, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/jdbc/1.19.3, Apache-2.0, approved, #10348 +maven/mavencentral/org.testcontainers/jdbc/1.19.4, Apache-2.0, approved, #10348 maven/mavencentral/org.testcontainers/junit-jupiter/1.19.3, MIT, approved, #10344 +maven/mavencentral/org.testcontainers/junit-jupiter/1.19.4, MIT, approved, #10344 maven/mavencentral/org.testcontainers/postgresql/1.19.3, MIT, approved, #10350 +maven/mavencentral/org.testcontainers/postgresql/1.19.4, MIT, approved, #10350 maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, approved, #10347 -maven/mavencentral/org.testcontainers/vault/1.19.3, MIT, approved, #10852 +maven/mavencentral/org.testcontainers/testcontainers/1.19.4, Apache-2.0 AND MIT, approved, #10347 +maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 61c3a684b..071a860fc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ bouncyCastle-jdk18on = "1.77" mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.12.0" -testcontainers = "1.19.3" +testcontainers = "1.19.4" aws = "2.23.8" rsApi = "3.1.0" jupiter = "5.10.0" From cc19d1cca5aa051c5fdb822a618f068f150c0edc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 11:32:14 +0100 Subject: [PATCH 54/83] chore(deps): bump aws from 2.23.8 to 2.23.12 (#1005) * chore(deps): bump aws from 2.23.8 to 2.23.12 Bumps `aws` from 2.23.8 to 2.23.12. Updates `software.amazon.awssdk:s3` from 2.23.8 to 2.23.12 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.23.8 to 2.23.12 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index d6c6d3ffc..6a4da9e8a 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -495,58 +495,58 @@ maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/iam/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.23.8, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/sts/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.23.8, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 071a860fc..7d77acfad 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.12.0" testcontainers = "1.19.4" -aws = "2.23.8" +aws = "2.23.12" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.25.2" From c0e16854fe88c868a795eaccca40a5575dca15a8 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Tue, 30 Jan 2024 12:12:16 +0100 Subject: [PATCH 55/83] feat: set default EDR data source name as default --- .../edc/edr/core/EdrCacheCoreExtension.java | 9 ++------ ...qlEndpointDataReferenceCacheExtension.java | 14 +++++++----- ...dpointDataReferenceCacheExtensionTest.java | 22 +++++++------------ 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java index 14fd2bea0..120ca4cff 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java @@ -15,11 +15,8 @@ package org.eclipse.tractusx.edc.edr.core; import org.eclipse.edc.runtime.metamodel.annotation.Extension; -import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; -import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.tractusx.edc.edr.core.defaults.InMemoryEndpointDataReferenceCache; import org.eclipse.tractusx.edc.edr.spi.store.EndpointDataReferenceCache; @@ -28,10 +25,8 @@ */ @Extension(value = EdrCacheCoreExtension.NAME) public class EdrCacheCoreExtension implements ServiceExtension { - static final String NAME = "EDR Cache Core"; - @Inject - private Monitor monitor; + static final String NAME = "EDR Cache Core"; @Override public String name() { @@ -39,7 +34,7 @@ public String name() { } @Provider(isDefault = true) - public EndpointDataReferenceCache edrCache(ServiceExtensionContext context) { + public EndpointDataReferenceCache edrCache() { return new InMemoryEndpointDataReferenceCache(); } diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java index 2c871dbdc..603e93736 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java @@ -36,12 +36,13 @@ public class SqlEndpointDataReferenceCacheExtension implements ServiceExtension public static final String NAME = "SQL EDR cache store"; - @Setting(required = true, defaultValue = SqlEndpointDataReferenceCacheExtension.DEFAULT_DATASOURCE_NAME) + @Setting(required = true, value = "Datasource name for EDR Cache SQL store", defaultValue = DataSourceRegistry.DEFAULT_DATASOURCE) public static final String DATASOURCE_SETTING_NAME = "edc.datasource.edr.name"; - @Setting(value = "Directory/Path where to store EDRs in the vault for vaults that supports hierarchical structuring.", required = false, defaultValue = "") + private static final String DEFAULT_EDR_VAULT_PATH = ""; + @Setting(value = "Directory/Path where to store EDRs in the vault for vaults that supports hierarchical structuring.", defaultValue = DEFAULT_EDR_VAULT_PATH) public static final String EDC_EDR_VAULT_PATH = "edc.edr.vault.path"; - public static final String DEFAULT_DATASOURCE_NAME = "edr"; + @Inject private DataSourceRegistry dataSourceRegistry; @Inject @@ -65,9 +66,10 @@ public String name() { @Provider public EndpointDataReferenceCache edrCache(ServiceExtensionContext context) { - var dataSourceName = context.getConfig().getString(DATASOURCE_SETTING_NAME, DEFAULT_DATASOURCE_NAME); - var vaultDirectory = context.getConfig().getString(EDC_EDR_VAULT_PATH, ""); - return new SqlEndpointDataReferenceCache(dataSourceRegistry, dataSourceName, transactionContext, getStatementImpl(), typeManager.getMapper(), vault, vaultDirectory, clock, queryExecutor, context.getConnectorId()); + var dataSourceName = context.getConfig().getString(DATASOURCE_SETTING_NAME, DataSourceRegistry.DEFAULT_DATASOURCE); + var vaultDirectory = context.getConfig().getString(EDC_EDR_VAULT_PATH, DEFAULT_EDR_VAULT_PATH); + return new SqlEndpointDataReferenceCache(dataSourceRegistry, dataSourceName, transactionContext, getStatementImpl(), + typeManager.getMapper(), vault, vaultDirectory, clock, queryExecutor, context.getConnectorId()); } private EdrStatements getStatementImpl() { diff --git a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java index dfc13befa..b905e5b6d 100644 --- a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java +++ b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java @@ -17,7 +17,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.configuration.Config; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.edc.spi.types.TypeManager; import org.eclipse.edc.transaction.datasource.spi.DataSourceRegistry; import org.junit.jupiter.api.BeforeEach; @@ -25,8 +24,8 @@ import org.junit.jupiter.api.extension.ExtendWith; import static org.assertj.core.api.Assertions.assertThat; +import static org.eclipse.edc.transaction.datasource.spi.DataSourceRegistry.DEFAULT_DATASOURCE; import static org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCacheExtension.DATASOURCE_SETTING_NAME; -import static org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCacheExtension.DEFAULT_DATASOURCE_NAME; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -35,26 +34,21 @@ @ExtendWith(DependencyInjectionExtension.class) public class SqlEndpointDataReferenceCacheExtensionTest { - SqlEndpointDataReferenceCacheExtension extension; - ServiceExtensionContext context; - - @BeforeEach - void setUp(ObjectFactory factory, ServiceExtensionContext context) { - this.context = context; + void setUp(ServiceExtensionContext context) { context.registerService(TypeManager.class, new TypeManager()); - context.registerService(DataSourceRegistry.class, mock(DataSourceRegistry.class)); - extension = factory.constructInstance(SqlEndpointDataReferenceCacheExtension.class); + context.registerService(DataSourceRegistry.class, mock()); } @Test - void shouldInitializeTheStore() { + void shouldInitializeTheStore(ServiceExtensionContext context, SqlEndpointDataReferenceCacheExtension extension) { var config = mock(Config.class); when(context.getConfig()).thenReturn(config); - when(config.getString(any(), any())).thenReturn(DEFAULT_DATASOURCE_NAME); + when(config.getString(any(), any())).thenReturn(DEFAULT_DATASOURCE); - assertThat(extension.edrCache(context)).isInstanceOf(SqlEndpointDataReferenceCache.class); + var cache = extension.edrCache(context); - verify(config).getString(DATASOURCE_SETTING_NAME, DEFAULT_DATASOURCE_NAME); + assertThat(cache).isInstanceOf(SqlEndpointDataReferenceCache.class); + verify(config).getString(DATASOURCE_SETTING_NAME, DEFAULT_DATASOURCE); } } From 76374012987e7354657a72447635cfbe0a8b8c14 Mon Sep 17 00:00:00 2001 From: bcronin90 Date: Tue, 16 Jan 2024 08:07:39 +0100 Subject: [PATCH 56/83] Remove docusaurus publish workflow Signed-off-by: Brendan Cronin --- .github/workflows/publish-docusaurus.yaml | 77 ----------------------- .github/workflows/publish-new-release.yml | 11 ---- .github/workflows/publish.yaml | 9 --- 3 files changed, 97 deletions(-) delete mode 100644 .github/workflows/publish-docusaurus.yaml diff --git a/.github/workflows/publish-docusaurus.yaml b/.github/workflows/publish-docusaurus.yaml deleted file mode 100644 index 1a6512cb4..000000000 --- a/.github/workflows/publish-docusaurus.yaml +++ /dev/null @@ -1,77 +0,0 @@ -# -# Copyright (c) 2023 Mercedes Benz Tech Innovation GmbH -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation -# -# See the NOTICE file(s) distributed with this work for additional -# information regarding copyright ownership. -# -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://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. -# -# SPDX-License-Identifier: Apache-2.0 -# - ---- -name: "Publish docusaurus documentation" - -on: - workflow_dispatch: - inputs: - downstream-version: - required: false - type: string - workflow_call: - inputs: - downstream-version: - required: false - type: string - -jobs: - publish-docusaurus: - permissions: - contents: write - packages: write - name: "Publish docusaurus documentation as zip file" - runs-on: ubuntu-latest - env: - SWAGGERHUB_API_KEY: ${{ secrets.SWAGGERHUB_API_KEY }} - SWAGGERHUB_USER: ${{ secrets.SWAGGERHUB_USER }} - steps: - - uses: actions/checkout@v4 - - - uses: ./.github/actions/setup-java - - - name: "Extract version" - id: extract_version - run: | - if [ -z ${{ inputs.downstream-version }} ]; then - echo "DOWNSTREAM_VERSION=$(grep "version" gradle.properties | awk -F= '{print $2}')" >> "$GITHUB_OUTPUT" - else - echo "DOWNSTREAM_VERSION=${{ inputs.downstream-version }}" >> "$GITHUB_OUTPUT" - fi - - - name: "Run autodoc" - run: | - ./gradlew autodoc - ./gradlew mergeManifests - ./gradlew doc2md - - - name: "Gather documentation files" - run: | - chmod +x ./resources/create_kit_documentation.sh - ./resources/create_kit_documentation.sh ${{ runner.temp }} $(pwd) ${{ steps.extract_version.outputs.DOWNSTREAM_VERSION }} - - - name: Publish zip to GitHub Release - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - overwrite: true - file: ${{ runner.temp }}/tractusx-edc-docusaurus-${{ steps.extract_version.outputs.DOWNSTREAM_VERSION }}.zip - tag: ${{ steps.extract_version.outputs.DOWNSTREAM_VERSION }} diff --git a/.github/workflows/publish-new-release.yml b/.github/workflows/publish-new-release.yml index bdd65625a..22a0b4256 100644 --- a/.github/workflows/publish-new-release.yml +++ b/.github/workflows/publish-new-release.yml @@ -248,14 +248,3 @@ jobs: with: downstream-version: ${{ needs.release-version.outputs.RELEASE_VERSION }} secrets: inherit - - publish-docusaurus: - name: Publish docusaurus docs - permissions: - contents: write - packages: write - needs: [ publish-to-swaggerhub, github-release ] - with: - downstream-version: ${{ needs.release-version.outputs.RELEASE_VERSION }} - uses: ./.github/workflows/publish-docusaurus.yaml - secrets: inherit diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 56253741a..4cc7693b5 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -137,12 +137,3 @@ jobs: if: needs.secret-presence.outputs.HAS_SWAGGER uses: ./.github/workflows/publish-swaggerhub.yaml secrets: inherit - - publish-docusaurus: - name: Publish docusaurus docs - permissions: - contents: write - packages: write - needs: [ secret-presence, publish-to-swaggerhub ] - if: needs.secret-presence.outputs.HAS_SWAGGER - uses: ./.github/workflows/publish-docusaurus.yaml From f56912ecb126c7d6e086a75ba6c71a820b649ce6 Mon Sep 17 00:00:00 2001 From: bcronin90 Date: Mon, 22 Jan 2024 16:19:55 +0100 Subject: [PATCH 57/83] Remove docusaurus publish script Signed-off-by: Brendan Cronin --- resources/create_kit_documentation.sh | 58 --------------------------- 1 file changed, 58 deletions(-) delete mode 100755 resources/create_kit_documentation.sh diff --git a/resources/create_kit_documentation.sh b/resources/create_kit_documentation.sh deleted file mode 100755 index f96d89a56..000000000 --- a/resources/create_kit_documentation.sh +++ /dev/null @@ -1,58 +0,0 @@ -#!/bin/bash - -output_dir=$1 -repo_root=$2 -release_version=$3 - -echo $1 $2 $3 - -cd ${repo_root} - -connector_kit="${output_dir}/tractusx-edc/Connector Kit" -mkdir -p "${connector_kit}" -rsync -a --prune-empty-dirs --exclude 'build' --include '*' ./docs/kit/* "${connector_kit}/" - -operation_view="${connector_kit}/Operation View" -mkdir -p "${operation_view}/03_deployment_via_helm" -cp ./docs/samples/example-dataspace/README.md "${operation_view}/03_deployment_via_helm/00_example_dataspace.md" -cp ./docs/samples/edr-api-overview/edr-api-overview.md "${operation_view}/03_deployment_via_helm/01_edr_api_overview.md" - -mkdir -p "${operation_view}/04_Test Your Setup" -cp ./docs/development/postman/README.md "${operation_view}/04_Test Your Setup/00_postman.md" -cp ./docs/samples/Transfer\ Data.md "${operation_view}/04_Test Your Setup/02_transfer_data.md" -cp -r ./docs/samples/diagrams "${operation_view}/04_Test Your Setup/" - -mkdir -p "${operation_view}/05_Migration" -cp ./docs/migration/* "${operation_view}/05_Migration/" - -development_view="${connector_kit}/Development View" -mkdir -p "${development_view}" -cp ./docs/README.md "${development_view}/00_tractusx_edc.md" -cp ./core/edr-core/README.md "${development_view}/06_edr_core.md" -cp ./docs/development/Release.md "${development_view}/07_release.md" - -mkdir -p "${development_view}/03_EDC Controlplane" -rsync -a --prune-empty-dirs --include '*/' --exclude 'build' --include '*.md' --include '*.png' --include '*.puml' --exclude '*' ./edc-controlplane/* "${development_view}/03_EDC Controlplane" - -mkdir -p "${development_view}/04_EDC Dataplane" -rsync -a --prune-empty-dirs --include '*/' --exclude 'build' --include '*.md' --include '*.png' --include '*.puml' --exclude '*' ./edc-dataplane/* "${development_view}/04_EDC Dataplane" - -mkdir -p "${development_view}/05_EDC Extensions" -rsync -a --prune-empty-dirs --include '*/' --exclude 'build' --include '*.md' --include '*.png' --include '*.puml' --exclude '*' ./edc-extensions/* "${development_view}/05_EDC Extensions" -cp ./build/tractusx-edc.md "${development_view}/05_EDC Extensions/01_autodoc_manifest.md" - -documentation="${output_dir}/tractusx-edc/Connector Kit/Documentation" -mkdir -p "${documentation}" -cp ./docs/development/coding-principles.md "${documentation}/02_coding_principles.md" -cp ./pr_etiquette.md "${documentation}/03_pr_etiquette.md" -cp ./styleguide.md "${documentation}/04_styleguide.md" -mkdir -p "${documentation}/resources" -cp ./resources/tx-checkstyle-config.xml "${documentation}/resources" -cp ./SECURITY.md "${documentation}/05_security.md" -mkdir -p "${documentation}/resources" -cp ./resources/save_actions_scr.png "${documentation}/resources/" - -curl "https://api.swaggerhub.com/apis/tractusx-edc/${release_version}/swagger.yaml" > "${output_dir}/tractusx-edc/tractusx-edc-${release_version}.yaml" - -cd ${output_dir}/tractusx-edc -zip -r ../tractusx-edc-docusaurus-${release_version}.zip ./* From b68d83a2765709be2a415bc6c62f5a4bc375828b Mon Sep 17 00:00:00 2001 From: bcronin90 Date: Mon, 22 Jan 2024 17:32:04 +0100 Subject: [PATCH 58/83] Update DEPENDENCIES Signed-off-by: Brendan Cronin --- DEPENDENCIES | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 56 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 6a4da9e8a..a0b8ec687 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -494,6 +494,61 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.4, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 +maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 +maven/mavencentral/software.amazon.awssdk/annotations/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 +maven/mavencentral/software.amazon.awssdk/arns/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 +maven/mavencentral/software.amazon.awssdk/auth/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 +maven/mavencentral/software.amazon.awssdk/checksums/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/iam/2.22.6, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 +maven/mavencentral/software.amazon.awssdk/profiles/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 +maven/mavencentral/software.amazon.awssdk/regions/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 +maven/mavencentral/software.amazon.awssdk/s3/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sts/2.22.6, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.3, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 +maven/mavencentral/software.amazon.awssdk/utils/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 maven/mavencentral/software.amazon.awssdk/annotations/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 @@ -549,4 +604,4 @@ maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apach maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.awssdk/utils/2.23.12, , restricted, clearlydefined -maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined +maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined \ No newline at end of file From f562562f2ff23cf7af706a55f747503dbce95cec Mon Sep 17 00:00:00 2001 From: bcronin90 Date: Wed, 31 Jan 2024 10:21:01 +0100 Subject: [PATCH 59/83] Update DEPENDENCIES Signed-off-by: Brendan Cronin --- DEPENDENCIES | 55 ---------------------------------------------------- 1 file changed, 55 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index a0b8ec687..bbe4df872 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -494,61 +494,6 @@ maven/mavencentral/org.testcontainers/testcontainers/1.19.4, Apache-2.0 AND MIT, maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 -maven/mavencentral/software.amazon.awssdk/annotations/2.22.6, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/apache-client/2.22.6, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/arns/2.22.6, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/auth/2.22.6, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-core/2.22.6, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.6, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.6, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.6, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/checksums/2.22.6, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/crt-core/2.22.6, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.6, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.6, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.6, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-auth/2.22.6, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.6, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/iam/2.22.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.6, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/json-utils/2.22.6, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.6, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.6, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/profiles/2.22.6, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.6, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/regions/2.22.6, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3/2.22.6, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.6, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/sts/2.22.6, Apache-2.0, approved, clearlydefined -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.6, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.3, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/utils/2.22.6, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.23.3, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 maven/mavencentral/software.amazon.awssdk/annotations/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 From 19dc196df12774b2db8cc8df5cf7f94e8bcdd75e Mon Sep 17 00:00:00 2001 From: bcronin90 Date: Wed, 31 Jan 2024 10:27:12 +0100 Subject: [PATCH 60/83] Update DEPENDENCIES Signed-off-by: Brendan Cronin --- DEPENDENCIES | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index bbe4df872..6a4da9e8a 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -549,4 +549,4 @@ maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apach maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.12, , restricted, clearlydefined maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 maven/mavencentral/software.amazon.awssdk/utils/2.23.12, , restricted, clearlydefined -maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined \ No newline at end of file +maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined From 33ce299212c63822f8eb4672bb02d54d46649139 Mon Sep 17 00:00:00 2001 From: Malte Hellmeier Date: Wed, 31 Jan 2024 13:16:14 +0100 Subject: [PATCH 61/83] docs: fix action use in ODRL payloads --- docs/usage/management-api-walkthrough/02_policies.md | 4 ++-- docs/usage/management-api-walkthrough/07_edrs.md | 2 +- .../usage/management-api-walkthrough/08_contractagreements.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/usage/management-api-walkthrough/02_policies.md b/docs/usage/management-api-walkthrough/02_policies.md index 13fd7f978..f58ebf77f 100644 --- a/docs/usage/management-api-walkthrough/02_policies.md +++ b/docs/usage/management-api-walkthrough/02_policies.md @@ -21,7 +21,7 @@ Content-Type: application/json "@type": "Policy", "odrl:permission": [ { - "odrl:action": "USE", + "odrl:action": "use", "odrl:constraint": { "@type": "Constraint", "odrl:leftOperand": "BusinessPartnerNumber", @@ -62,7 +62,7 @@ the EDC interprets policies it can't evaluate as true by default. A couple of ex "@type": "Policy", "odrl:permission": [ { - "odrl:action": "USE" + "odrl:action": "use" } ] } diff --git a/docs/usage/management-api-walkthrough/07_edrs.md b/docs/usage/management-api-walkthrough/07_edrs.md index 26e6527ac..b3e720603 100644 --- a/docs/usage/management-api-walkthrough/07_edrs.md +++ b/docs/usage/management-api-walkthrough/07_edrs.md @@ -38,7 +38,7 @@ Content-Type: application/json "odrl:permission": { "odrl:target": "", "odrl:action": { - "odrl:type": "USE" + "odrl:type": "use" }, "odrl:constraint": { "odrl:and": { diff --git a/docs/usage/management-api-walkthrough/08_contractagreements.md b/docs/usage/management-api-walkthrough/08_contractagreements.md index e721b15da..387ccb2f4 100644 --- a/docs/usage/management-api-walkthrough/08_contractagreements.md +++ b/docs/usage/management-api-walkthrough/08_contractagreements.md @@ -24,7 +24,7 @@ A Contract Agreement looks like this: "odrl:permission": { "odrl:target": "", "odrl:action": { - "odrl:type": "USE" + "odrl:type": "use" }, "odrl:constraint": { "odrl:and": { From d831c13a103ddd3b1084f7336475be82781c7c5e Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Wed, 31 Jan 2024 14:33:52 +0100 Subject: [PATCH 62/83] chore: re-enabled IATP E2E tests (#1012) * chore: re-enabled IATP E2E tests * chore: update dependencies file * chore: fix E2E tests --- DEPENDENCIES | 304 +++++++++--------- .../sql/schema/BaseSqlEdrStatements.java | 9 +- .../postgres/PostgresEdrStatements.java | 4 + ...nProcessCallbackMessageDispatcherTest.java | 5 + .../identity/SsiIdentityServiceExtension.java | 5 +- .../edc/lifecycle/ParticipantRuntime.java | 3 + .../lifecycle/tx/iatp/DataspaceIssuer.java | 2 +- .../lifecycle/tx/iatp/IatpParticipant.java | 9 +- .../lifecycle/tx/iatp/SecureTokenService.java | 4 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 5 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 5 +- .../tractusx/edc/iatp/TestAudienceMapper.java | 8 +- .../edc/iatp/TestAudienceMapperExtension.java | 4 +- .../CredentialPolicyEvaluationExtension.java | 6 + .../edc/iatp/policy/IdentityExtractor.java | 38 +++ gradle/libs.versions.toml | 4 +- 16 files changed, 233 insertions(+), 182 deletions(-) create mode 100644 edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java diff --git a/DEPENDENCIES b/DEPENDENCIES index 6a4da9e8a..c9bd78a37 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -186,10 +186,8 @@ maven/mavencentral/javax.servlet/javax.servlet-api/3.1.0, (CDDL-1.1 OR GPL-2.0-o maven/mavencentral/javax.ws.rs/javax.ws.rs-api/2.1, (CDDL-1.1 OR GPL-2.0 WITH Classpath-exception-2.0) AND Apache-2.0, approved, CQ18121 maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.1, Apache-2.0, approved, #7164 -maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.10, Apache-2.0, approved, #7164 -maven/mavencentral/net.bytebuddy/byte-buddy/1.12.21, Apache-2.0 AND BSD-3-Clause, approved, #1811 +maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.11, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.1, Apache-2.0 AND BSD-3-Clause, approved, #7163 -maven/mavencentral/net.bytebuddy/byte-buddy/1.14.10, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.bytebuddy/byte-buddy/1.14.11, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.java.dev.jna/jna-platform/5.13.0, Apache-2.0 OR LGPL-2.1-or-later, approved, #6707 maven/mavencentral/net.java.dev.jna/jna-platform/5.6.0, Apache-2.0 OR LGPL-2.1-or-later, approved, CQ22390 @@ -199,7 +197,6 @@ maven/mavencentral/net.minidev/json-smart/2.4.10, Apache-2.0, approved, #3288 maven/mavencentral/net.minidev/json-smart/2.5.0, Apache-2.0, approved, clearlydefined maven/mavencentral/net.sf.saxon/Saxon-HE/10.6, MPL-2.0 AND W3C, approved, #7945 maven/mavencentral/org.antlr/antlr4-runtime/4.9.3, BSD-3-Clause, approved, #322 -maven/mavencentral/org.apache.commons/commons-compress/1.24.0, Apache-2.0 AND BSD-3-Clause AND bzip2-1.0.6 AND LicenseRef-Public-Domain, approved, #10368 maven/mavencentral/org.apache.commons/commons-compress/1.25.0, Apache-2.0, approved, #11600 maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, CQ22642 maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined @@ -216,7 +213,6 @@ maven/mavencentral/org.apache.sshd/sshd-common/2.12.0, Apache-2.0 AND ISC, appro maven/mavencentral/org.apache.sshd/sshd-core/2.12.0, Apache-2.0, approved, #12841 maven/mavencentral/org.apache.sshd/sshd-sftp/2.12.0, Apache-2.0, approved, #12840 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.assertj/assertj-core/3.25.1, Apache-2.0, approved, #12585 maven/mavencentral/org.assertj/assertj-core/3.25.2, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined @@ -228,155 +224,149 @@ maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clea maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.41.0, MIT, approved, #12032 maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 -maven/mavencentral/org.eclipse.edc/api-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/api-observability/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-index-sql/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/autodoc-processor/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-test/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-blob-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-test/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-api-configuration/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/crypto-common/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-client/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-util/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/iam-mock/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-service/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/junit/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jws2020/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-configuration/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/micrometer-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-client/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-lease/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/state-machine/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-local/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-api/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.5.1-20240122-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-core/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-azure/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.5.0, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.5.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-observability/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-index-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/autodoc-processor/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-test/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-blob-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-test/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-api-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/crypto-common/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-client/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-util/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/iam-mock/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-service/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/junit/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jws2020/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/micrometer-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-client/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-lease/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/state-machine/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-local/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-azure/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty @@ -455,7 +445,7 @@ maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, BSD-2-Clause, approved, CQ17408 maven/mavencentral/org.mockito/mockito-core/5.2.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #7401 -maven/mavencentral/org.mockito/mockito-core/5.8.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #11787 +maven/mavencentral/org.mockito/mockito-core/5.9.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #12774 maven/mavencentral/org.mockito/mockito-inline/5.2.0, MIT, approved, clearlydefined maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 @@ -481,15 +471,11 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 maven/mavencentral/org.slf4j/slf4j-api/2.0.11, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 -maven/mavencentral/org.testcontainers/database-commons/1.19.3, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/database-commons/1.19.4, Apache-2.0, approved, #10345 -maven/mavencentral/org.testcontainers/jdbc/1.19.3, Apache-2.0, approved, #10348 maven/mavencentral/org.testcontainers/jdbc/1.19.4, Apache-2.0, approved, #10348 maven/mavencentral/org.testcontainers/junit-jupiter/1.19.3, MIT, approved, #10344 maven/mavencentral/org.testcontainers/junit-jupiter/1.19.4, MIT, approved, #10344 -maven/mavencentral/org.testcontainers/postgresql/1.19.3, MIT, approved, #10350 maven/mavencentral/org.testcontainers/postgresql/1.19.4, MIT, approved, #10350 -maven/mavencentral/org.testcontainers/testcontainers/1.19.3, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.testcontainers/testcontainers/1.19.4, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java index 3b22f8d41..dd8e57618 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java @@ -15,12 +15,19 @@ package org.eclipse.tractusx.edc.edr.store.sql.schema; import org.eclipse.edc.spi.query.QuerySpec; +import org.eclipse.edc.sql.translation.SqlOperatorTranslator; import org.eclipse.edc.sql.translation.SqlQueryStatement; import static java.lang.String.format; public class BaseSqlEdrStatements implements EdrStatements { + private final SqlOperatorTranslator sqlOperatorTranslator; + + public BaseSqlEdrStatements(SqlOperatorTranslator sqlOperatorTranslator) { + this.sqlOperatorTranslator = sqlOperatorTranslator; + } + @Override public String getFindByTransferProcessIdTemplate() { return format("SELECT * FROM %s WHERE %s = ?", getEdrTable(), getTransferProcessIdColumn()); @@ -29,7 +36,7 @@ public String getFindByTransferProcessIdTemplate() { @Override public SqlQueryStatement createQuery(QuerySpec querySpec) { var select = format("SELECT * FROM %s", getEdrTable()); - return new SqlQueryStatement(select, querySpec, new EdrMapping(this)); + return new SqlQueryStatement(select, querySpec, new EdrMapping(this), sqlOperatorTranslator); } @Override diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java index 3feb69028..f164f919b 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java @@ -14,9 +14,13 @@ package org.eclipse.tractusx.edc.edr.store.sql.schema.postgres; +import org.eclipse.edc.sql.translation.PostgresqlOperatorTranslator; import org.eclipse.tractusx.edc.edr.store.sql.schema.BaseSqlEdrStatements; public class PostgresEdrStatements extends BaseSqlEdrStatements { + public PostgresEdrStatements() { + super(new PostgresqlOperatorTranslator()); + } } diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java index cb603e70c..86b4690c9 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java @@ -75,5 +75,10 @@ public String getProtocol() { public String getCounterPartyAddress() { return "test"; } + + @Override + public String getCounterPartyId() { + return "id"; + } } } diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java index c1a463e02..8a3e91390 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java @@ -18,9 +18,11 @@ import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provides; import org.eclipse.edc.runtime.metamodel.annotation.Setting; +import org.eclipse.edc.spi.iam.AudienceResolver; import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.edc.spi.types.domain.message.RemoteMessage; import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.identity.rule.SsiAudienceValidationRule; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; @@ -28,7 +30,7 @@ import static org.eclipse.tractusx.edc.iam.ssi.spi.SsiConstants.SSI_TOKEN_CONTEXT; -@Provides({ IdentityService.class, SsiTokenValidationService.class }) +@Provides({ IdentityService.class, SsiTokenValidationService.class, AudienceResolver.class }) @Extension(SsiIdentityServiceExtension.EXTENSION_NAME) public class SsiIdentityServiceExtension implements ServiceExtension { @@ -58,6 +60,7 @@ public void initialize(ServiceExtensionContext context) { context.registerService(IdentityService.class, identityService); context.registerService(SsiTokenValidationService.class, tokenValidationService); + context.registerService(AudienceResolver.class, RemoteMessage::getCounterPartyAddress); } private void configureRules(ServiceExtensionContext context, TokenValidationRulesRegistry registry) { diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java index 75fa297bd..66f1d278e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java @@ -15,11 +15,13 @@ package org.eclipse.tractusx.edc.lifecycle; import org.eclipse.edc.junit.extensions.EdcRuntimeExtension; +import org.eclipse.edc.spi.iam.AudienceResolver; import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.injection.InjectionContainer; +import org.eclipse.edc.spi.types.domain.message.RemoteMessage; import org.eclipse.tractusx.edc.token.MockBpnIdentityService; import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.BeforeAllCallback; @@ -42,6 +44,7 @@ public ParticipantRuntime(String moduleName, String runtimeName, String bpn, Map this.properties = properties; if (!properties.containsKey("tx.ssi.miw.url") && !properties.containsKey("edc.iam.issuer.id")) { this.registerServiceMock(IdentityService.class, new MockBpnIdentityService(bpn)); + this.registerServiceMock(AudienceResolver.class, RemoteMessage::getCounterPartyAddress); } } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java index 58c0febcc..e73a97c4e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java @@ -22,7 +22,7 @@ import jakarta.json.JsonObject; import org.eclipse.edc.iam.did.spi.document.DidDocument; import org.eclipse.edc.iam.did.spi.document.VerificationMethod; -import org.eclipse.edc.identityhub.spi.store.model.VerifiableCredentialResource; +import org.eclipse.edc.identityhub.spi.model.VerifiableCredentialResource; import org.eclipse.edc.identitytrust.model.CredentialFormat; import org.eclipse.edc.identitytrust.model.CredentialSubject; import org.eclipse.edc.identitytrust.model.Issuer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java index ccbc265bd..99cdc3f37 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java @@ -75,7 +75,7 @@ public Map iatpConfiguration(TxParticipant... others) { { put("edc.iam.sts.oauth.token.url", stsUri + "/token"); - put("edc.iam.sts.oauth.client.id", did); + put("edc.iam.sts.oauth.client.id", getBpn()); put("edc.iam.sts.oauth.client.secret.alias", "client_secret_alias"); put("edc.iam.issuer.id", did); put("edc.ih.iam.id", participant.getBpn()); @@ -90,8 +90,11 @@ public Map iatpConfiguration(TxParticipant... others) { Stream.concat(Stream.of(participant), Arrays.stream(others)).forEach(p -> { var prefix = format("tx.iam.iatp.audiences.%s", p.getName().toLowerCase()); - iatpConfiguration.put(prefix + ".from", p.getProtocolEndpoint().getUrl().toString()); - iatpConfiguration.put(prefix + ".to", p.getBpn()); + var participantDid = DID_EXAMPLE + p.getName().toLowerCase(); + iatpConfiguration.put(prefix + "_endpoint" + ".from", p.getProtocolEndpoint().getUrl().toString()); + iatpConfiguration.put(prefix + "_endpoint" + ".to", participantDid); + iatpConfiguration.put(prefix + "_id" + ".from", p.getBpn()); + iatpConfiguration.put(prefix + "_id" + ".to", participantDid); }); return iatpConfiguration; } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java index 191263070..775cfc2e3 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.UUID; import static java.lang.String.format; import static org.eclipse.edc.junit.testfixtures.TestUtils.getFreePort; @@ -49,8 +50,9 @@ public Map stsConfiguration(IatpParticipant... participants) { Arrays.stream(participants).forEach(participant -> { var prefix = format("edc.iam.sts.clients.%s", participant.getName().toLowerCase()); stsConfiguration.put(prefix + ".name", participant.getName()); - stsConfiguration.put(prefix + ".id", participant.didUrl()); + stsConfiguration.put(prefix + ".id", UUID.randomUUID().toString()); stsConfiguration.put(prefix + ".client_id", participant.getBpn()); + stsConfiguration.put(prefix + ".did", participant.didUrl()); stsConfiguration.put(prefix + ".secret.alias", "client_secret_alias"); stsConfiguration.put(prefix + ".private-key.alias", participant.verificationId()); stsConfiguration.put(prefix + ".public-key.reference", participant.verificationId()); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java index 830187c68..81a349dfc 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java @@ -16,7 +16,6 @@ import jakarta.json.JsonObject; import org.eclipse.edc.junit.annotations.EndToEndTest; -import org.junit.jupiter.api.Disabled; import java.util.Map; @@ -24,10 +23,8 @@ import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest -// waiting for https://github.com/eclipse-edc/Connector/issues/3796 -@Disabled public class IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest extends IatpHttpConsumerPullWithProxyInMemoryTest { - + @Override protected JsonObject createContractPolicy(String bpn) { return frameworkPolicy(Map.of(TX_CREDENTIAL_NAMESPACE + "FrameworkAgreement.pcf", "active")); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java index 6a97dfe24..d7ebe9096 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java @@ -18,8 +18,8 @@ import org.eclipse.edc.iam.did.spi.document.DidDocument; import org.eclipse.edc.iam.did.spi.resolution.DidResolverRegistry; import org.eclipse.edc.identityhub.spi.generator.PresentationCreatorRegistry; +import org.eclipse.edc.identityhub.spi.model.VerifiableCredentialResource; import org.eclipse.edc.identityhub.spi.store.CredentialStore; -import org.eclipse.edc.identityhub.spi.store.model.VerifiableCredentialResource; import org.eclipse.edc.identitytrust.model.CredentialFormat; import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.junit.annotations.EndToEndTest; @@ -31,7 +31,6 @@ import org.eclipse.tractusx.edc.lifecycle.tx.iatp.SecureTokenService; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.extension.RegisterExtension; import java.io.IOException; @@ -43,8 +42,6 @@ import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest -// waiting for https://github.com/eclipse-edc/Connector/issues/3796 -@Disabled public class IatpHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsumerPullWithProxyTest { protected static final DataspaceIssuer DATASPACE_ISSUER_PARTICIPANT = new DataspaceIssuer(); diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java index 13de6e7c6..122f10d66 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java @@ -14,7 +14,8 @@ package org.eclipse.tractusx.edc.iatp; -import org.eclipse.edc.identitytrust.AudienceResolver; +import org.eclipse.edc.spi.iam.AudienceResolver; +import org.eclipse.edc.spi.types.domain.message.RemoteMessage; import java.util.Map; import java.util.Optional; @@ -31,8 +32,7 @@ public TestAudienceMapper(Map audienceMapping) { } @Override - public String resolve(String s) { - return Optional.ofNullable(audienceMapping.get(s)).orElse(s); + public String resolve(RemoteMessage remoteMessage) { + return Optional.ofNullable(audienceMapping.get(remoteMessage.getCounterPartyId())).orElse(remoteMessage.getCounterPartyId()); } - } diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java index db2c5b071..c348ec368 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java @@ -14,10 +14,10 @@ package org.eclipse.tractusx.edc.iatp; -import org.eclipse.edc.identitytrust.AudienceResolver; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Provider; import org.eclipse.edc.runtime.metamodel.annotation.Setting; +import org.eclipse.edc.spi.iam.AudienceResolver; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; @@ -25,7 +25,7 @@ @Extension("Audience mapper extension") public class TestAudienceMapperExtension implements ServiceExtension { - + @Setting private static final String TX_IATP_AUDIENCES = "tx.iam.iatp.audiences"; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java index 544f4ce7d..057f86b29 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java @@ -20,6 +20,7 @@ import org.eclipse.edc.policy.model.Permission; import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Inject; +import org.eclipse.edc.spi.agent.ParticipantAgentService; import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; @@ -41,6 +42,9 @@ public class CredentialPolicyEvaluationExtension implements ServiceExtension { private RuleBindingRegistry ruleBindingRegistry; + @Inject + private ParticipantAgentService participantAgentService; + @Override public void initialize(ServiceExtensionContext context) { @@ -55,6 +59,8 @@ public void initialize(ServiceExtensionContext context) { registerUseCase("sustainability"); registerUseCase("quality"); registerUseCase("resiliency"); + + participantAgentService.register(new IdentityExtractor()); } private void bindPermissionFunction(AtomicConstraintFunction function, String scope, String constraintType) { diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java new file mode 100644 index 000000000..96930c304 --- /dev/null +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.iatp.policy; + +import org.eclipse.edc.spi.agent.ParticipantAgentServiceExtension; +import org.eclipse.edc.spi.iam.ClaimToken; +import org.jetbrains.annotations.NotNull; + +import java.util.Map; + +import static org.eclipse.edc.spi.agent.ParticipantAgent.PARTICIPANT_IDENTITY; + +public class IdentityExtractor implements ParticipantAgentServiceExtension { + @Override + public @NotNull Map attributesFor(ClaimToken claimToken) { + return Map.of(PARTICIPANT_IDENTITY, getClaim(String.class, "holderIdentifier", claimToken.getClaims())); + } + + protected T getClaim(Class type, String postfix, Map claims) { + return claims.entrySet().stream().filter(e -> e.getKey().endsWith(postfix)) + .findFirst() + .map(Map.Entry::getValue) + .map(type::cast) + .orElse(null); + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 7d77acfad..fff498e7f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ format.version = "1.1" [versions] -edc = "0.5.0" +edc = "0.5.1-20240131-SNAPSHOT" postgres = "42.7.1" awaitility = "4.2.0" nimbus = "9.37.3" @@ -158,7 +158,7 @@ edc-micrometer-core = { module = "org.eclipse.edc:micrometer-core", version.ref edc-micrometer-jersey = { module = "org.eclipse.edc:jersey-micrometer", version.ref = "edc" } edc-micrometer-jetty = { module = "org.eclipse.edc:jetty-micrometer", version.ref = "edc" } edc-monitor-jdklogger = { module = "org.eclipse.edc:monitor-jdk-logger", version.ref = "edc" } -edc-transfer-dynamicreceiver = { module = "org.eclipse.edc:transfer-pull-http-dynamic-receiver", version = "0.5.1-20240122-SNAPSHOT" } +edc-transfer-dynamicreceiver = { module = "org.eclipse.edc:transfer-pull-http-dynamic-receiver", version.ref = "edc" } edc-transfer-receiver = { module = "org.eclipse.edc:transfer-pull-http-receiver", version.ref = "edc" } # other deps From 6f507c6ba9cc7568847e2617cc0796ed96bebba2 Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger <43503240+paullatzelsperger@users.noreply.github.com> Date: Mon, 5 Feb 2024 08:35:46 +0100 Subject: [PATCH 63/83] chore: update dependencies (#1017) --- DEPENDENCIES | 56 ++++++++++++++++++++++++++-------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index c9bd78a37..5a284342b 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -31,7 +31,7 @@ maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.2, Apache-2. maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.3, Apache-2.0, approved, #7934 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.16.1, Apache-2.0, approved, #11605 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.2, Apache-2.0, approved, #9160 -maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, Apache-2.0, restricted, clearlydefined +maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.16.1, Apache-2.0, approved, #13145 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.13.5, Apache-2.0, approved, #3768 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1, Apache-2.0, approved, #12438 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.1, Apache-2.0, approved, #8802 @@ -481,58 +481,58 @@ maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/annotations/2.23.12, Apache-2.0, approved, #13157 maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.12, Apache-2.0, approved, #13142 maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/arns/2.23.12, Apache-2.0, approved, #13135 maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/auth/2.23.12, Apache-2.0, approved, #13141 maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.12, Apache-2.0, approved, #13148 maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.12, Apache-2.0, approved, #13150 maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.12, Apache-2.0, approved, #13146 maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.12, Apache-2.0, approved, #13158 maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/checksums/2.23.12, Apache-2.0, approved, #13144 maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.12, Apache-2.0, approved, #13136 maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.12, Apache-2.0, approved, #13151 maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.12, Apache-2.0, approved, #13154 maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.12, Apache-2.0, approved, #13147 maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.12, Apache-2.0, approved, #13149 maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.12, Apache-2.0, approved, #13155 maven/mavencentral/software.amazon.awssdk/iam/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.12, Apache-2.0, approved, #13143 maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.12, Apache-2.0, approved, #13139 maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.12, Apache-2.0, approved, #13153 maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.12, Apache-2.0, approved, #13134 maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/profiles/2.23.12, Apache-2.0, approved, #13132 maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.12, Apache-2.0, approved, #13133 maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.23.12, , restricted, clearlydefined -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/regions/2.23.12, Apache-2.0, approved, #13159 +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.12, Apache-2.0, approved, #13156 maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/s3/2.23.12, Apache-2.0, approved, #13152 maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.12, Apache-2.0, approved, #13138 maven/mavencentral/software.amazon.awssdk/sts/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.12, Apache-2.0, approved, #13140 maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.23.12, , restricted, clearlydefined +maven/mavencentral/software.amazon.awssdk/utils/2.23.12, Apache-2.0, approved, #13137 maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined From dec747d6f2bddf736474fefb08b03300cb0c169f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 09:06:31 +0100 Subject: [PATCH 64/83] chore(deps): bump nick-fields/retry from 2 to 3 (#1023) Bumps [nick-fields/retry](https://github.com/nick-fields/retry) from 2 to 3. - [Release notes](https://github.com/nick-fields/retry/releases) - [Changelog](https://github.com/nick-fields/retry/blob/master/.releaserc.js) - [Commits](https://github.com/nick-fields/retry/compare/v2...v3) --- updated-dependencies: - dependency-name: nick-fields/retry 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/verify.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 2274543be..427c32ff0 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -165,7 +165,7 @@ jobs: cd edc-tests/miw-tests/src/test/resources/docker-environment docker compose up --wait - - uses: nick-fields/retry@v2 + - uses: nick-fields/retry@v3 name: Wait for MIW with: timeout_minutes: 5 From a2cf91bf52958b9cf2a302101f4694aa7710442a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 10:27:05 +0100 Subject: [PATCH 65/83] chore(deps): bump org.junit:junit-bom from 5.10.1 to 5.10.2 (#1021) * chore(deps): bump org.junit:junit-bom from 5.10.1 to 5.10.2 Bumps [org.junit:junit-bom](https://github.com/junit-team/junit5) from 5.10.1 to 5.10.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.10.1...r5.10.2) --- updated-dependencies: - dependency-name: org.junit:junit-bom dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 7 +++++++ build.gradle.kts | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 5a284342b..e070b7dbe 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -431,16 +431,23 @@ maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clear maven/mavencentral/org.junit-pioneer/junit-pioneer/2.2.0, EPL-2.0, approved, #11857 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.0, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.1, EPL-2.0, approved, #9714 +maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.2, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.9.3, EPL-2.0, approved, #3133 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.1, EPL-2.0, approved, #9711 +maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, approved, #9711 maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.9.3, EPL-2.0, approved, #3125 maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #9708 +maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.2, EPL-2.0, approved, #9708 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.0, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.1, EPL-2.0, approved, #9715 +maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.1, EPL-2.0, approved, #9709 +maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.2, EPL-2.0, approved, #9709 maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.1, EPL-2.0, approved, #9704 +maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.2, EPL-2.0, approved, #9704 maven/mavencentral/org.junit/junit-bom/5.10.0, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.10.1, EPL-2.0, approved, #9844 +maven/mavencentral/org.junit/junit-bom/5.10.2, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, BSD-2-Clause, approved, CQ17408 diff --git a/build.gradle.kts b/build.gradle.kts index d2bcd793b..743228f2c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -62,7 +62,7 @@ allprojects { implementation("org.slf4j:slf4j-api:2.0.11") // this is used to counter version conflicts between the JUnit version pulled in by the plugin, // and the one expected by IntelliJ - testImplementation(platform("org.junit:junit-bom:5.10.1")) + testImplementation(platform("org.junit:junit-bom:5.10.2")) constraints { implementation("org.yaml:snakeyaml:2.2") { From c3a7031bd2f2942bd956bccc9dec153826e306dc Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:25:13 +0100 Subject: [PATCH 66/83] chore(deps): bump aws from 2.23.12 to 2.23.17 (#1020) * chore(deps): bump aws from 2.23.12 to 2.23.17 Bumps `aws` from 2.23.12 to 2.23.17. Updates `software.amazon.awssdk:s3` from 2.23.12 to 2.23.17 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.23.12 to 2.23.17 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index e070b7dbe..24fbd628e 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -488,58 +488,58 @@ maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.23.12, Apache-2.0, approved, #13157 +maven/mavencentral/software.amazon.awssdk/annotations/2.23.17, Apache-2.0, approved, #13157 maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.23.12, Apache-2.0, approved, #13142 +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.17, Apache-2.0, approved, #13142 maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.23.12, Apache-2.0, approved, #13135 +maven/mavencentral/software.amazon.awssdk/arns/2.23.17, Apache-2.0, approved, #13135 maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.23.12, Apache-2.0, approved, #13141 +maven/mavencentral/software.amazon.awssdk/auth/2.23.17, Apache-2.0, approved, #13141 maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.23.12, Apache-2.0, approved, #13148 +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.17, Apache-2.0, approved, #13148 maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.12, Apache-2.0, approved, #13150 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.17, Apache-2.0, approved, #13150 maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.12, Apache-2.0, approved, #13146 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.17, Apache-2.0, approved, #13146 maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.12, Apache-2.0, approved, #13158 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.17, Apache-2.0, approved, #13158 maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.23.12, Apache-2.0, approved, #13144 +maven/mavencentral/software.amazon.awssdk/checksums/2.23.17, Apache-2.0, approved, #13144 maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.23.12, Apache-2.0, approved, #13136 +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.17, Apache-2.0, approved, #13136 maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.12, Apache-2.0, approved, #13151 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.17, Apache-2.0, approved, #13151 maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.12, Apache-2.0, approved, #13154 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.17, Apache-2.0, approved, #13154 maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.12, Apache-2.0, approved, #13147 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.17, Apache-2.0, approved, #13147 maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.23.12, Apache-2.0, approved, #13149 +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.17, Apache-2.0, approved, #13149 maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.12, Apache-2.0, approved, #13155 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.17, Apache-2.0, approved, #13155 maven/mavencentral/software.amazon.awssdk/iam/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.12, Apache-2.0, approved, #13143 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.17, Apache-2.0, approved, #13143 maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.23.12, Apache-2.0, approved, #13139 +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.17, Apache-2.0, approved, #13139 maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.12, Apache-2.0, approved, #13153 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.17, Apache-2.0, approved, #13153 maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.12, Apache-2.0, approved, #13134 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.17, Apache-2.0, approved, #13134 maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.23.12, Apache-2.0, approved, #13132 +maven/mavencentral/software.amazon.awssdk/profiles/2.23.17, Apache-2.0, approved, #13132 maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.12, Apache-2.0, approved, #13133 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.17, Apache-2.0, approved, #13133 maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.23.12, Apache-2.0, approved, #13159 -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.12, Apache-2.0, approved, #13156 +maven/mavencentral/software.amazon.awssdk/regions/2.23.17, Apache-2.0, approved, #13159 +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.17, Apache-2.0, approved, #13156 maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.23.12, Apache-2.0, approved, #13152 +maven/mavencentral/software.amazon.awssdk/s3/2.23.17, Apache-2.0, approved, #13152 maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.12, Apache-2.0, approved, #13138 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.17, Apache-2.0, approved, #13138 maven/mavencentral/software.amazon.awssdk/sts/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.12, Apache-2.0, approved, #13140 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.17, Apache-2.0, approved, #13140 maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.23.12, Apache-2.0, approved, #13137 +maven/mavencentral/software.amazon.awssdk/utils/2.23.17, Apache-2.0, approved, #13137 maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fff498e7f..ba67e9276 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.12.0" testcontainers = "1.19.4" -aws = "2.23.12" +aws = "2.23.17" rsApi = "3.1.0" jupiter = "5.10.0" assertj = "3.25.2" From 5290af6172d08adef5c538f914597fd622a3072d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 11:47:23 +0100 Subject: [PATCH 67/83] chore(deps): bump org.junit.jupiter:junit-jupiter-api from 5.10.0 to 5.10.2 (#1019) * chore(deps): bump org.junit.jupiter:junit-jupiter-api Bumps [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) from 5.10.0 to 5.10.2. - [Release notes](https://github.com/junit-team/junit5/releases) - [Commits](https://github.com/junit-team/junit5/compare/r5.10.0...r5.10.2) --- updated-dependencies: - dependency-name: org.junit.jupiter:junit-jupiter-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 3 --- gradle/libs.versions.toml | 2 +- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 24fbd628e..dc695e2d2 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -429,7 +429,6 @@ maven/mavencentral/org.jetbrains/annotations/13.0, Apache-2.0, approved, clearly maven/mavencentral/org.jetbrains/annotations/17.0.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.junit-pioneer/junit-pioneer/2.2.0, EPL-2.0, approved, #11857 -maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.0, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.1, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.10.2, EPL-2.0, approved, #9714 maven/mavencentral/org.junit.jupiter/junit-jupiter-api/5.9.3, EPL-2.0, approved, #3133 @@ -438,14 +437,12 @@ maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, appro maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.9.3, EPL-2.0, approved, #3125 maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #9708 maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.2, EPL-2.0, approved, #9708 -maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.0, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.1, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.1, EPL-2.0, approved, #9709 maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.2, EPL-2.0, approved, #9709 maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.1, EPL-2.0, approved, #9704 maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.2, EPL-2.0, approved, #9704 -maven/mavencentral/org.junit/junit-bom/5.10.0, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.10.1, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.10.2, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ba67e9276..94f406c9c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -17,7 +17,7 @@ apache-sshd = "2.12.0" testcontainers = "1.19.4" aws = "2.23.17" rsApi = "3.1.0" -jupiter = "5.10.0" +jupiter = "5.10.2" assertj = "3.25.2" titanium = "1.3.3" jackson = "2.16.1" From f4835c0d3fc3c05ccd001109507ff7b1a0393ac2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 12:23:34 +0100 Subject: [PATCH 68/83] chore(deps): bump org.assertj:assertj-core from 3.25.2 to 3.25.3 (#1018) * chore(deps): bump org.assertj:assertj-core from 3.25.2 to 3.25.3 Bumps [org.assertj:assertj-core](https://github.com/assertj/assertj) from 3.25.2 to 3.25.3. - [Release notes](https://github.com/assertj/assertj/releases) - [Commits](https://github.com/assertj/assertj/compare/assertj-build-3.25.2...assertj-build-3.25.3) --- updated-dependencies: - dependency-name: org.assertj:assertj-core dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 1 + gradle/libs.versions.toml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index dc695e2d2..bec7cd135 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -215,6 +215,7 @@ maven/mavencentral/org.apache.sshd/sshd-sftp/2.12.0, Apache-2.0, approved, #1284 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.assertj/assertj-core/3.25.1, Apache-2.0, approved, #12585 maven/mavencentral/org.assertj/assertj-core/3.25.2, Apache-2.0, approved, #12585 +maven/mavencentral/org.assertj/assertj-core/3.25.3, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.77, MIT AND CC0-1.0, approved, #11595 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 94f406c9c..65c0133bd 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -18,7 +18,7 @@ testcontainers = "1.19.4" aws = "2.23.17" rsApi = "3.1.0" jupiter = "5.10.2" -assertj = "3.25.2" +assertj = "3.25.3" titanium = "1.3.3" jackson = "2.16.1" jakarta-json = "2.0.1" From cbe5a6bc5dadd84d2547a8fab354e74005a7fcfd Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Mon, 5 Feb 2024 12:26:34 +0100 Subject: [PATCH 69/83] refactor: remove unused mockito-inline dependency (#1026) --- DEPENDENCIES | 1 - edc-extensions/transferprocess-sftp-client/build.gradle.kts | 1 - edc-extensions/transferprocess-sftp-common/build.gradle.kts | 1 - .../transferprocess-sftp-provisioner/build.gradle.kts | 1 - gradle/libs.versions.toml | 2 -- 5 files changed, 6 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index bec7cd135..9da5dea3b 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -451,7 +451,6 @@ maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, BSD-2-Clause, approved, CQ17408 maven/mavencentral/org.mockito/mockito-core/5.2.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #7401 maven/mavencentral/org.mockito/mockito-core/5.9.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #12774 -maven/mavencentral/org.mockito/mockito-inline/5.2.0, MIT, approved, clearlydefined maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 maven/mavencentral/org.ow2.asm/asm-commons/9.5, BSD-3-Clause, approved, #7553 diff --git a/edc-extensions/transferprocess-sftp-client/build.gradle.kts b/edc-extensions/transferprocess-sftp-client/build.gradle.kts index 7258805b8..5f55485eb 100644 --- a/edc-extensions/transferprocess-sftp-client/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-client/build.gradle.kts @@ -39,6 +39,5 @@ dependencies { testImplementation(libs.awaitility) testImplementation(libs.edc.junit) - testImplementation(libs.mockito.inline) testImplementation(libs.testcontainers.junit) } diff --git a/edc-extensions/transferprocess-sftp-common/build.gradle.kts b/edc-extensions/transferprocess-sftp-common/build.gradle.kts index 66a63d9ee..acf07f0c2 100644 --- a/edc-extensions/transferprocess-sftp-common/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-common/build.gradle.kts @@ -26,6 +26,5 @@ dependencies { implementation(libs.edc.spi.core) testImplementation(libs.edc.junit) - testImplementation(libs.mockito.inline) testImplementation(libs.testcontainers.junit) } diff --git a/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts b/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts index b413b0951..d4f8ab15c 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts @@ -30,6 +30,5 @@ dependencies { implementation(libs.edc.spi.transfer) testImplementation(libs.edc.junit) - testImplementation(libs.mockito.inline) testImplementation(libs.testcontainers.junit) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 65c0133bd..21cee8062 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -11,7 +11,6 @@ slf4j = "2.0.11" okhttp = "4.12.0" mockwebserver = "5.0.0-alpha.12" bouncyCastle-jdk18on = "1.77" -mockito = "5.2.0" restAssured = "5.4.0" apache-sshd = "2.12.0" testcontainers = "1.19.4" @@ -170,7 +169,6 @@ nimbus-jwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbus" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "mockwebserver" } bouncyCastle-bcpkixJdk18on = { module = "org.bouncycastle:bcpkix-jdk18on", version.ref = "bouncyCastle-jdk18on" } -mockito-inline = { module = "org.mockito:mockito-inline", version.ref = "mockito" } restAssured = { module = "io.rest-assured:rest-assured", version.ref = "restAssured" } apache-sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "apache-sshd" } apache-sshd-sftp = { module = "org.apache.sshd:sshd-sftp", version.ref = "apache-sshd" } From f434c6a17c7d69127eccbbad26b22168304f88d7 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Mon, 5 Feb 2024 11:04:40 +0100 Subject: [PATCH 70/83] fix: migrate asset json properties from array to map --- .../postgresql-migration/build.gradle.kts | 4 +- .../AbstractPostgresqlMigrationExtension.java | 21 +---- .../postgresql/migration/FlywayManager.java | 45 +++++++++++ ...0_0_6__Transform_Property_Array_To_Map.sql | 16 ++++ ...AssetPostgresqlMigrationExtensionTest.java | 78 +++++++++++++++++++ .../edc/tests/edr/AbstractDeleteEdrTest.java | 20 ----- gradle/libs.versions.toml | 60 +++++++------- 7 files changed, 177 insertions(+), 67 deletions(-) create mode 100644 edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java create mode 100644 edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/asset/V0_0_6__Transform_Property_Array_To_Map.sql create mode 100644 edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java diff --git a/edc-extensions/postgresql-migration/build.gradle.kts b/edc-extensions/postgresql-migration/build.gradle.kts index d060040ec..d81f96c9d 100644 --- a/edc-extensions/postgresql-migration/build.gradle.kts +++ b/edc-extensions/postgresql-migration/build.gradle.kts @@ -30,5 +30,7 @@ dependencies { implementation(libs.edc.sql.core) runtimeOnly(libs.postgres) - implementation("org.flywaydb:flyway-core:9.22.3") + implementation(libs.flyway.core) + + testImplementation(testFixtures(libs.edc.sql.core)) } diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java index fa86a86c5..59d8b39ef 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java @@ -26,17 +26,15 @@ import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.sql.DriverManagerConnectionFactory; import org.eclipse.edc.sql.datasource.ConnectionFactoryDataSource; -import org.flywaydb.core.Flyway; -import org.flywaydb.core.api.MigrationVersion; import java.util.Objects; import java.util.Properties; +import static org.flywaydb.core.api.MigrationVersion.LATEST; + abstract class AbstractPostgresqlMigrationExtension implements ServiceExtension { private static final String EDC_DATASOURCE_PREFIX = "edc.datasource"; - private static final String MIGRATION_LOCATION_BASE = - String.format("classpath:%s", AbstractPostgresqlMigrationExtension.class.getPackageName().replace(".", "/")); private static final String DEFAULT_MIGRATION_ENABLED_TEMPLATE = "true"; @Setting(value = "Enable/disables subsystem schema migration", defaultValue = DEFAULT_MIGRATION_ENABLED_TEMPLATE, type = "boolean") @@ -79,19 +77,8 @@ public void initialize(final ServiceExtensionContext context) { var driverManagerConnectionFactory = new DriverManagerConnectionFactory(); var dataSource = new ConnectionFactoryDataSource(driverManagerConnectionFactory, jdbcUrl, jdbcProperties); - var flyway = - Flyway.configure() - .baselineVersion(MigrationVersion.fromVersion("0.0.0")) - .failOnMissingLocations(true) - .dataSource(dataSource) - .table("flyway_schema_history_%s".formatted(subSystemName)) - .locations("%s/%s".formatted(MIGRATION_LOCATION_BASE, subSystemName)) - .defaultSchema(config.getString(MIGRATION_SCHEMA, DEFAULT_MIGRATION_SCHEMA)) - .load(); - - flyway.baseline(); - - var migrateResult = flyway.migrate(); + var defaultSchema = config.getString(MIGRATION_SCHEMA, DEFAULT_MIGRATION_SCHEMA); + var migrateResult = FlywayManager.migrate(dataSource, subSystemName, defaultSchema, LATEST); if (!migrateResult.success) { throw new EdcPersistenceException( diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java new file mode 100644 index 000000000..eff280639 --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.postgresql.migration; + +import org.flywaydb.core.Flyway; +import org.flywaydb.core.api.MigrationVersion; +import org.flywaydb.core.api.output.MigrateResult; + +import javax.sql.DataSource; + + +public class FlywayManager { + + private static final String MIGRATION_LOCATION_BASE = + String.format("classpath:%s", FlywayManager.class.getPackageName().replace(".", "/")); + + public static MigrateResult migrate(DataSource dataSource, String subSystemName, String defaultSchema, MigrationVersion target) { + var flyway = + Flyway.configure() + .baselineVersion(MigrationVersion.fromVersion("0.0.0")) + .failOnMissingLocations(true) + .dataSource(dataSource) + .table("flyway_schema_history_%s".formatted(subSystemName)) + .locations("%s/%s".formatted(MIGRATION_LOCATION_BASE, subSystemName)) + .defaultSchema(defaultSchema) + .target(target) + .load(); + + flyway.baseline(); + + return flyway.migrate(); + } +} diff --git a/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/asset/V0_0_6__Transform_Property_Array_To_Map.sql b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/asset/V0_0_6__Transform_Property_Array_To_Map.sql new file mode 100644 index 000000000..9d1f9d2e3 --- /dev/null +++ b/edc-extensions/postgresql-migration/src/main/resources/org/eclipse/tractusx/edc/postgresql/migration/asset/V0_0_6__Transform_Property_Array_To_Map.sql @@ -0,0 +1,16 @@ +-- +-- Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft +-- +-- This program and the accompanying materials are made available under the +-- terms of the Apache License, Version 2.0 which is available at +-- https://www.apache.org/licenses/LICENSE-2.0 +-- +-- SPDX-License-Identifier: Apache-2.0 +-- +-- Contributors: +-- Bayerische Motoren Werke Aktiengesellschaft - Migration into one table +-- + +UPDATE edc_asset SET +properties = (select json_object_agg(json_array_elements->>'property_name', json_array_elements->>'property_value') from json_array_elements(properties) as json_array_elements), +private_properties = (select json_object_agg(json_array_elements->>'property_name', json_array_elements->>'property_value') from json_array_elements(private_properties) as json_array_elements) diff --git a/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java b/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java new file mode 100644 index 000000000..056f6f51c --- /dev/null +++ b/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * + */ + +package org.eclipse.tractusx.edc.postgresql.migration; + +import org.eclipse.edc.connector.store.sql.assetindex.SqlAssetIndex; +import org.eclipse.edc.connector.store.sql.assetindex.schema.postgres.PostgresDialectStatements; +import org.eclipse.edc.junit.annotations.PostgresqlDbIntegrationTest; +import org.eclipse.edc.spi.types.TypeManager; +import org.eclipse.edc.spi.types.domain.asset.Asset; +import org.eclipse.edc.sql.QueryExecutor; +import org.eclipse.edc.sql.testfixtures.PostgresqlStoreSetupExtension; +import org.flywaydb.core.api.MigrationVersion; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; + +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +@PostgresqlDbIntegrationTest +@ExtendWith(PostgresqlStoreSetupExtension.class) +class AssetPostgresqlMigrationExtensionTest { + + private SqlAssetIndex store; + + @BeforeEach + void setUp(PostgresqlStoreSetupExtension extension, QueryExecutor queryExecutor) { + store = new SqlAssetIndex(extension.getDataSourceRegistry(), extension.getDatasourceName(), + extension.getTransactionContext(), new TypeManager().getMapper(), new PostgresDialectStatements(), + queryExecutor); + } + + @Test // bugfix https://github.com/eclipse-tractusx/tractusx-edc/issues/1003 + void version006shouldTransformPropertiesListToMap(PostgresqlStoreSetupExtension extension) { + var dataSource = extension.getDataSourceRegistry().resolve(extension.getDatasourceName()); + FlywayManager.migrate(dataSource, "asset", "public", MigrationVersion.fromVersion("0.0.5")); + + insertAsset(extension, "1"); + insertAsset(extension, "2"); + + FlywayManager.migrate(dataSource, "asset", "public", MigrationVersion.fromVersion("0.0.6")); + + var result = store.findById("1"); + + assertThat(result).isNotNull(); + assertThat(result.getProperties()).containsExactlyInAnyOrderEntriesOf( + Map.of(Asset.PROPERTY_ID, "1", "key", "value1", "anotherKey", "anotherValue1")); + assertThat(result.getPrivateProperties()).containsExactlyInAnyOrderEntriesOf( + Map.of("privateKey", "privateValue1", "anotherPrivateKey", "anotherPrivateValue1")); + } + + private void insertAsset(PostgresqlStoreSetupExtension extension, String id) { + var propertiesArray = "[ %s, %s ]".formatted(propertyJsonMap("key", "value" + id), propertyJsonMap("anotherKey", "anotherValue" + id)); + var privatePropertiesArray = "[ %s, %s ]".formatted(propertyJsonMap("privateKey", "privateValue" + id), propertyJsonMap("anotherPrivateKey", "anotherPrivateValue" + id)); + + extension.runQuery(("insert into edc_asset (asset_id, properties, private_properties, data_address) " + + "values ('%s', '%s'::json, '%s'::json, '{\"type\":\"type\"}'::json)") + .formatted(id, propertiesArray, privatePropertiesArray)); + } + + private String propertyJsonMap(String key, String value) { + return "{\"property_name\" : \"%s\", \"property_value\" : \"%s\", \"property_type\" : \"java.lang.String\"}".formatted(key, value); + } + +} diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java index cb1a6637c..30b70b1ba 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java @@ -15,12 +15,8 @@ package org.eclipse.tractusx.edc.tests.edr; import jakarta.json.Json; -import okhttp3.mockwebserver.MockWebServer; -import org.assertj.core.api.Condition; import org.eclipse.edc.policy.model.Operator; import org.eclipse.tractusx.edc.lifecycle.tx.TxParticipant; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -50,12 +46,6 @@ public abstract class AbstractDeleteEdrTest { .name(PLATO_NAME) .id(PLATO_BPN) .build(); - MockWebServer server; - - @BeforeEach - void setup() { - server = new MockWebServer(); - } @Test @DisplayName("Verify that expired EDR are deleted") @@ -104,14 +94,4 @@ void negotiateEdr_shouldRemoveExpiredEdrs() throws IOException { } - @AfterEach - void teardown() throws IOException { - server.shutdown(); - } - - - private Condition stateCondition(String value, String description) { - return new Condition<>(m -> m.equals(value), description); - } - } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 21cee8062..90ef55af5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,26 +3,27 @@ format.version = "1.1" [versions] edc = "0.5.1-20240131-SNAPSHOT" -postgres = "42.7.1" +apache-sshd = "2.12.0" +assertj = "3.25.3" awaitility = "4.2.0" -nimbus = "9.37.3" +aws = "2.23.17" azure-identity = "1.11.1" -slf4j = "2.0.11" -okhttp = "4.12.0" -mockwebserver = "5.0.0-alpha.12" bouncyCastle-jdk18on = "1.77" -restAssured = "5.4.0" -apache-sshd = "2.12.0" -testcontainers = "1.19.4" -aws = "2.23.17" -rsApi = "3.1.0" -jupiter = "5.10.2" -assertj = "3.25.3" -titanium = "1.3.3" +flyway = "9.22.3" +iron-vc = "0.8.1" jackson = "2.16.1" jakarta-json = "2.0.1" +jupiter = "5.10.2" +mockwebserver = "5.0.0-alpha.12" +nimbus = "9.37.3" +okhttp = "4.12.0" +postgres = "42.7.1" +restAssured = "5.4.0" +rsApi = "3.1.0" +slf4j = "2.0.11" +testcontainers = "1.19.4" tink = "1.12.0" -iron-vc = "0.8.1" +titanium = "1.3.3" [libraries] edc-spi-catalog = { module = "org.eclipse.edc:catalog-spi", version.ref = "edc" } @@ -162,30 +163,31 @@ edc-transfer-receiver = { module = "org.eclipse.edc:transfer-pull-http-receiver" # other deps -postgres = { module = "org.postgresql:postgresql", version.ref = "postgres" } +apache-sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "apache-sshd" } +apache-sshd-sftp = { module = "org.apache.sshd:sshd-sftp", version.ref = "apache-sshd" } +apicatalog-iron-vc = { module = "com.apicatalog:iron-verifiable-credentials", version.ref = "iron-vc" } +assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" } awaitility = { module = "org.awaitility:awaitility", version.ref = "awaitility" } -slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } +aws-s3 = { module = "software.amazon.awssdk:s3", version.ref = "aws" } +aws-s3transfer = { module = "software.amazon.awssdk:s3-transfer-manager", version.ref = "aws" } +bouncyCastle-bcpkixJdk18on = { module = "org.bouncycastle:bcpkix-jdk18on", version.ref = "bouncyCastle-jdk18on" } +flyway-core = { module = "org.flywaydb:flyway-core", version.ref = "flyway" } +jackson-datatypeJsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" } +jacksonJsonP = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp", version.ref = "jackson" } +jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "rsApi" } +jakartaJson = { module = "org.glassfish:jakarta.json", version.ref = "jakarta-json" } +junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "jupiter" } nimbus-jwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbus" } okhttp = { module = "com.squareup.okhttp3:okhttp", version.ref = "okhttp" } okhttp-mockwebserver = { module = "com.squareup.okhttp3:mockwebserver", version.ref = "mockwebserver" } -bouncyCastle-bcpkixJdk18on = { module = "org.bouncycastle:bcpkix-jdk18on", version.ref = "bouncyCastle-jdk18on" } +postgres = { module = "org.postgresql:postgresql", version.ref = "postgres" } restAssured = { module = "io.rest-assured:rest-assured", version.ref = "restAssured" } -apache-sshd-core = { module = "org.apache.sshd:sshd-core", version.ref = "apache-sshd" } -apache-sshd-sftp = { module = "org.apache.sshd:sshd-sftp", version.ref = "apache-sshd" } +slf4j-api = { module = "org.slf4j:slf4j-api", version.ref = "slf4j" } testcontainers-junit = { module = "org.testcontainers:junit-jupiter", version.ref = "testcontainers" } testcontainers-postgres = { module = "org.testcontainers:postgresql", version.ref = "testcontainers" } testcontainers-vault = { module = "org.testcontainers:vault", version.ref = "testcontainers" } -aws-s3 = { module = "software.amazon.awssdk:s3", version.ref = "aws" } -aws-s3transfer = { module = "software.amazon.awssdk:s3-transfer-manager", version.ref = "aws" } -jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "rsApi" } -jakartaJson = { module = "org.glassfish:jakarta.json", version.ref = "jakarta-json" } -jacksonJsonP = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jakarta-jsonp", version.ref = "jackson" } -jackson-datatypeJsr310 = { module = "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", version.ref = "jackson" } -titaniumJsonLd = { module = "com.apicatalog:titanium-json-ld", version.ref = "titanium" } -junit-jupiter-api = { module = "org.junit.jupiter:junit-jupiter-api", version.ref = "jupiter" } -assertj = { module = "org.assertj:assertj-core", version.ref = "assertj" } tink = { module = "com.google.crypto.tink:tink", version.ref = "tink" } -apicatalog-iron-vc = { module = "com.apicatalog:iron-verifiable-credentials", version.ref = "iron-vc" } +titaniumJsonLd = { module = "com.apicatalog:titanium-json-ld", version.ref = "titanium" } [bundles] edc-connector = ["edc.boot", "edc.core-connector", "edc.core-controlplane", "edc.api-observability"] From f3d2c82048bf666dbeb5fa205becdb58298d0235 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Wed, 7 Feb 2024 09:35:20 +0100 Subject: [PATCH 71/83] build: add header check to comply with TRG 7.02 --- build.gradle.kts | 4 +-- core/edr-cache-core/build.gradle.kts | 23 +++++++------ .../edc/edr/core/EdrCacheCoreExtension.java | 23 +++++++------ .../EdrCacheEntryPredicateConverter.java | 23 +++++++------ .../InMemoryEndpointDataReferenceCache.java | 23 +++++++------ .../core/defaults/PersistentCacheEntry.java | 23 +++++++------ ...nMemoryEndpointDataReferenceCacheTest.java | 23 +++++++------ .../defaults/PersistentCacheEntryTest.java | 23 +++++++------ core/edr-core/build.gradle.kts | 23 +++++++------ .../edc/edr/core/EdrCoreExtension.java | 23 +++++++------ .../edc/edr/core/EdrCoreServiceExtension.java | 23 +++++++------ .../edc/edr/core/manager/EdrManagerImpl.java | 23 +++++++------ .../edc/edr/core/service/EdrServiceImpl.java | 23 +++++++------ .../edc/edr/core/EdrCoreExtensionTest.java | 23 +++++++------ .../edr/core/EdrCoreServiceExtensionTest.java | 23 +++++++------ .../edc/edr/core/fixtures/TestFunctions.java | 23 +++++++------ .../edr/core/manager/EdrManagerImplTest.java | 23 +++++++------ .../edr/core/service/EdrServiceImplTest.java | 23 +++++++------ core/json-ld-core/build.gradle.kts | 25 +++++++++------ .../tractusx/edc/jsonld/JsonLdExtension.java | 23 +++++++------ .../edc/jsonld/JsonLdExtensionTest.java | 23 +++++++------ edc-controlplane/build.gradle.kts | 4 +-- .../edc-controlplane-base/build.gradle.kts | 4 +-- .../build.gradle.kts | 4 +-- .../build.gradle.kts | 4 +-- .../edc-runtime-memory/build.gradle.kts | 4 +-- .../edc/vault/memory/VaultSeedExtension.java | 20 ++++++++---- .../vault/memory/VaultSeedExtensionTest.java | 19 +++++++---- edc-dataplane/build.gradle.kts | 4 +-- .../build.gradle.kts | 4 +-- .../edc-dataplane-base/build.gradle.kts | 4 +-- .../build.gradle.kts | 4 +-- .../bpn-validation-api/build.gradle.kts | 23 +++++++------ .../edc/api/bpn/BusinessPartnerGroupApi.java | 30 ++++++++--------- .../BusinessPartnerGroupApiController.java | 30 ++++++++--------- .../bpn/BusinessPartnerGroupApiExtension.java | 30 ++++++++--------- ...BusinessPartnerGroupApiControllerTest.java | 32 +++++++++---------- .../bpn-validation-core/build.gradle.kts | 4 +-- .../BusinessPartnerValidationExtension.java | 19 +++++++---- ...acyBusinessPartnerValidationExtension.java | 30 ++++++++--------- .../DefaultStoreProviderExtension.java | 19 +++++++---- .../InMemoryBusinessPartnerStore.java | 19 +++++++---- .../BusinessPartnerGroupFunction.java | 19 +++++++---- .../AbstractBusinessPartnerValidation.java | 30 ++++++++--------- .../legacy/BusinessPartnerDutyFunction.java | 30 ++++++++--------- .../BusinessPartnerPermissionFunction.java | 30 ++++++++--------- .../BusinessPartnerProhibitionFunction.java | 30 ++++++++--------- .../InMemoryBusinessPartnerStoreTest.java | 21 +++++++----- ...usinessPartnerValidationExtensionTest.java | 30 ++++++++--------- ...AbstractBusinessPartnerValidationTest.java | 30 ++++++++--------- .../BusinessPartnerGroupFunctionTest.java | 21 +++++++----- .../store/BusinessPartnerStoreTestBase.java | 19 +++++++---- .../bpn-validation-spi/build.gradle.kts | 4 +-- .../spi/BusinessPartnerStore.java | 19 +++++++---- .../bpn-validation/build.gradle.kts | 4 +-- .../build.gradle.kts | 4 +-- ...SqlBusinessPartnerGroupStoreExtension.java | 19 +++++++---- .../sql/BusinessPartnerGroupStatements.java | 19 +++++++---- ...ostgresBusinessPartnerGroupStatements.java | 19 +++++++---- .../store/sql/SqlBusinessPartnerStore.java | 19 +++++++---- .../sql/SqlBusinessPartnerStoreTest.java | 21 +++++++----- edc-extensions/build.gradle.kts | 4 +-- edc-extensions/cx-policy/build.gradle.kts | 23 +++++++------ .../edc/policy/cx/CxPolicyExtension.java | 23 +++++++------ .../common/AbstractVpConstraintFunction.java | 23 +++++++------ .../edc/policy/cx/common/PolicyScopes.java | 23 +++++++------ .../FrameworkAgreementConstraintFunction.java | 23 +++++++------ .../cx/summary/SummaryConstraintFunction.java | 23 +++++++------ .../SummaryConstraintFunctionsProvider.java | 23 +++++++------ .../summary/SummaryTokenPolicyFunction.java | 23 +++++++------ .../AbstractVpConstraintFunctionTest.java | 23 +++++++------ ...meworkAgreementConstraintFunctionTest.java | 23 +++++++------ .../policy/cx/framework/PcfCredential.java | 23 +++++++------ .../policy/cx/framework/UseCaseContext.java | 23 +++++++------ .../SummaryConstraintFunctionTest.java | 23 +++++++------ ...ummaryConstraintFunctionsProviderTest.java | 23 +++++++------ .../SummaryTokenPolicyFunctionTest.java | 23 +++++++------ .../data-encryption/build.gradle.kts | 23 +++++++------ .../edc/data/encryption/ArrayUtil.java | 7 ++-- .../data/encryption/TxEncryptorExtension.java | 21 +++++++----- .../edc/data/encryption/aes/AesEncryptor.java | 19 +++++++---- .../encryption/TxEncryptorExtensionTest.java | 21 +++++++----- .../data/encryption/aes/AesEncryptorTest.java | 21 +++++++----- .../build.gradle.kts | 23 +++++++------ .../DataPlaneProxyConsumerApiExtension.java | 23 +++++++------ .../api/asset/ClientErrorExceptionMapper.java | 23 +++++++------ .../api/asset/ConsumerAssetRequestApi.java | 23 +++++++------ .../asset/ConsumerAssetRequestController.java | 23 +++++++------ .../asset/PreconditionFailedException.java | 23 +++++++------ .../api/asset/model/AssetRequest.java | 23 +++++++------ .../api/asset/model/AssetRequestTest.java | 23 +++++++------ .../ConsumerAssetRequestControllerTest.java | 23 +++++++------ .../build.gradle.kts | 23 +++++++------ .../DataPlaneProxyProviderApiExtension.java | 23 +++++++------ .../api/gateway/ProviderGatewayApi.java | 23 +++++++------ .../gateway/ProviderGatewayController.java | 23 +++++++------ .../provider/api/response/ResponseHelper.java | 23 +++++++------ .../ProxyProviderDataAddressResolver.java | 23 +++++++------ ...ataPlaneProxyProviderApiExtensionTest.java | 23 +++++++------ .../ProxyProviderDataAddressResolverTest.java | 23 +++++++------ .../api/response/ResponseHelperTest.java | 23 +++++++------ .../build.gradle.kts | 23 +++++++------ .../core/ProxyProviderCoreExtension.java | 23 +++++++------ .../AuthorizationHandlerRegistryImpl.java | 23 +++++++------ .../GatewayConfigurationLoader.java | 23 +++++++------ .../GatewayConfigurationRegistryImpl.java | 23 +++++++------ .../AuthorizationHandlerRegistryImplTest.java | 23 +++++++------ .../GatewayConfigurationLoaderTest.java | 23 +++++++------ .../GatewayConfigurationRegistryImplTest.java | 23 +++++++------ .../build.gradle.kts | 23 +++++++------ .../authorization/AuthorizationExtension.java | 23 +++++++------ .../authorization/AuthorizationHandler.java | 23 +++++++------ .../AuthorizationHandlerRegistry.java | 23 +++++++------ .../configuration/GatewayConfiguration.java | 23 +++++++------ .../GatewayConfigurationRegistry.java | 23 +++++++------ .../build.gradle.kts | 4 +-- ...SelectorConfigurationServiceExtension.java | 6 ++-- ...ationServiceExtensionEdcExtensionTest.java | 6 ++-- ...ctorConfigurationServiceExtensionTest.java | 6 ++-- edc-extensions/edr/edr-api/build.gradle.kts | 23 +++++++------ .../eclipse/tractusx/edc/api/edr/EdrApi.java | 23 +++++++------ .../tractusx/edc/api/edr/EdrApiExtension.java | 23 +++++++------ .../tractusx/edc/api/edr/EdrController.java | 23 +++++++------ .../api/edr/dto/NegotiateEdrRequestDto.java | 23 +++++++------ .../edc/api/edr/schema/EdrSchema.java | 23 +++++++------ ...DataReferenceToDataAddressTransformer.java | 23 +++++++------ ...EndpointDataReferenceEntryTransformer.java | 23 +++++++------ ...ctToNegotiateEdrRequestDtoTransformer.java | 23 +++++++------ ...tDtoToNegotiatedEdrRequestTransformer.java | 23 +++++++------ .../NegotiateEdrRequestDtoValidator.java | 23 +++++++------ .../edc/api/edr/EdrApiExtensionTest.java | 23 +++++++------ .../tractusx/edc/api/edr/EdrApiTest.java | 23 +++++++------ .../edc/api/edr/EdrControllerTest.java | 23 +++++++------ .../tractusx/edc/api/edr/TestFunctions.java | 23 +++++++------ ...ReferenceToDataAddressTransformerTest.java | 23 +++++++------ ...ointDataReferenceEntryTransformerTest.java | 25 +++++++++------ ...NegotiateEdrRequestDtoTransformerTest.java | 25 +++++++++------ ...oToNegotiateEdrRequestTransformerTest.java | 23 +++++++------ .../NegotiateEdrRequestDtoValidatorTest.java | 23 +++++++------ .../edr/edr-cache-sql/build.gradle.kts | 23 +++++++------ .../sql/SqlEndpointDataReferenceCache.java | 23 +++++++------ ...qlEndpointDataReferenceCacheExtension.java | 23 +++++++------ .../sql/schema/BaseSqlEdrStatements.java | 23 +++++++------ .../edc/edr/store/sql/schema/EdrMapping.java | 23 +++++++------ .../edr/store/sql/schema/EdrStatements.java | 23 +++++++------ .../postgres/PostgresEdrStatements.java | 23 +++++++------ ...dpointDataReferenceCacheExtensionTest.java | 23 +++++++------ .../SqlEndpointDataReferenceCacheTest.java | 23 +++++++------ ...ntDataReferenceCacheTransactionalTest.java | 23 +++++++------ .../edr/edr-callback/build.gradle.kts | 23 +++++++------ .../callback/ContractNegotiationCallback.java | 23 +++++++------ .../InProcessCallbackMessageDispatcher.java | 23 +++++++------ .../InProcessCallbackRegistryExtension.java | 23 +++++++------ .../InProcessCallbackRegistryImpl.java | 23 +++++++------ .../edc/callback/LocalCallbackExtension.java | 23 +++++++------ .../TransferProcessLocalCallback.java | 23 +++++++------ .../ContractNegotiationCallbackTest.java | 23 +++++++------ ...nProcessCallbackMessageDispatcherTest.java | 23 +++++++------ ...nProcessCallbackRegistryExtensionTest.java | 23 +++++++------ .../callback/LocalCallbackExtensionTest.java | 23 +++++++------ .../tractusx/edc/callback/TestFunctions.java | 23 +++++++------ .../TransferProcessLocalCallbackTest.java | 23 +++++++------ edc-extensions/iatp/tx-iatp/build.gradle.kts | 25 +++++++++------ .../iam/iatp/IatpDefaultScopeExtension.java | 23 +++++++------ .../iam/iatp/IatpScopeExtractorExtension.java | 23 +++++++------ .../edc/iam/iatp/TxIatpConstants.java | 23 +++++++------ .../iatp/scope/CredentialScopeExtractor.java | 23 +++++++------ .../iam/iatp/scope/DefaultScopeExtractor.java | 23 +++++++------ .../iatp/IatpDefaultScopeExtensionTest.java | 23 +++++++------ .../iatp/IatpScopeExtractorExtensionTest.java | 23 +++++++------ .../scope/CredentialScopeExtractorTest.java | 23 +++++++------ .../iatp/scope/DefaultScopeExtractorTest.java | 23 +++++++------ .../postgresql-migration/build.gradle.kts | 4 +-- .../AbstractPostgresqlMigrationExtension.java | 6 ++-- .../AssetPostgresqlMigrationExtension.java | 6 ++-- ...sinessGroupPostgresMigrationExtension.java | 19 +++++++---- ...efinitionPostgresqlMigrationExtension.java | 6 ++-- ...gotiationPostgresqlMigrationExtension.java | 6 ++-- .../EdrPostgresqlMigrationExtension.java | 23 +++++++------ .../postgresql/migration/FlywayManager.java | 23 +++++++------ ...cyMonitorPostgresqlMigrationExtension.java | 23 +++++++------ .../PolicyPostgresqlMigrationExtension.java | 6 ++-- ...erProcessPostgresqlMigrationExtension.java | 6 ++-- ...AssetPostgresqlMigrationExtensionTest.java | 23 +++++++------ .../build.gradle.kts | 4 +-- .../AdditionalHeadersProvisionedResource.java | 8 ++--- .../AdditionalHeadersProvisioner.java | 8 ++--- .../AdditionalHeadersResourceDefinition.java | 8 ++--- ...nalHeadersResourceDefinitionGenerator.java | 8 ++--- .../ProvisionAdditionalHeadersExtension.java | 8 ++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 2 +- ...itionalHeadersProvisionedResourceTest.java | 8 ++--- .../AdditionalHeadersProvisionerTest.java | 8 ++--- ...eadersResourceDefinitionGeneratorTest.java | 8 ++--- ...ditionalHeadersResourceDefinitionTest.java | 8 ++--- ...ovisionAdditionalHeadersExtensionTest.java | 8 ++--- .../ssi/jws2020-crypto-suite/build.gradle.kts | 17 ++++++---- .../signature/jws2020/ByteArrayAdapter.java | 19 +++++++---- .../signature/jws2020/IssuerCompat.java | 19 +++++++---- .../signature/jws2020/JsonAdapter.java | 19 +++++++---- .../signature/jws2020/JwkAdapter.java | 19 +++++++---- .../security/signature/jws2020/JwkMethod.java | 19 +++++++---- .../signature/jws2020/Jws2020CryptoSuite.java | 19 +++++++---- .../signature/jws2020/Jws2020Schema.java | 19 +++++++---- .../jws2020/Jws2020SignatureProvider.java | 19 +++++++---- .../jws2020/JwsSignature2020Suite.java | 19 +++++++---- .../jws2020/JwsSignatureProofOptions.java | 19 +++++++---- .../signature/jws2020/KeyFactory.java | 19 +++++++---- .../signature/jws2020/IssuerTests.java | 19 +++++++---- .../signature/jws2020/JsonAdapterTest.java | 21 +++++++----- .../signature/jws2020/KeyFactoryTest.java | 21 +++++++----- .../signature/jws2020/TestFunctions.java | 19 +++++++---- .../jws2020/TestResourcesLoader.java | 19 +++++++---- .../signature/jws2020/VerifierTests.java | 19 +++++++---- .../ssi/ssi-identity-core/build.gradle.kts | 23 +++++++------ .../iam/ssi/identity/SsiIdentityService.java | 23 +++++++------ .../identity/SsiIdentityServiceExtension.java | 23 +++++++------ .../SsiTokenValidationServiceImpl.java | 23 +++++++------ .../rule/SsiAudienceValidationRule.java | 23 +++++++------ .../SsiIdentityServiceExtensionTest.java | 23 +++++++------ .../ssi/identity/SsiIdentityServiceTest.java | 23 +++++++------ .../SsiTokenValidationServiceImplTest.java | 23 +++++++------ .../rule/SsiAudienceValidationRuleTest.java | 23 +++++++------ .../ssi-identity-extractor/build.gradle.kts | 23 +++++++------ .../CredentialIdentityExtractor.java | 23 +++++++------ .../SsiIdentityExtractorExtension.java | 23 +++++++------ .../CredentialIdentityExtractorTest.java | 23 +++++++------ .../SsiIdentityExtractorExtensionTest.java | 23 +++++++------ .../build.gradle.kts | 23 +++++++------ .../iam/ssi/miw/SsiMiwApiClientExtension.java | 23 +++++++------ .../ssi/miw/SsiMiwConfigurationExtension.java | 23 +++++++------ .../miw/SsiMiwCredentialClientExtension.java | 23 +++++++------ .../ssi/miw/SsiMiwOauth2ClientExtension.java | 23 +++++++------ .../miw/SsiMiwValidationRuleExtension.java | 23 +++++++------ .../edc/iam/ssi/miw/api/MiwApiClient.java | 23 +++++++------ .../edc/iam/ssi/miw/api/MiwApiClientImpl.java | 23 +++++++------ .../iam/ssi/miw/api/MiwClientException.java | 23 +++++++------ .../iam/ssi/miw/api/MiwFallbackFactories.java | 23 +++++++------ .../ssi/miw/config/SsiMiwConfiguration.java | 23 +++++++------ .../credentials/SsiMiwCredentialClient.java | 23 +++++++------ .../iam/ssi/miw/oauth2/MiwOauth2Client.java | 23 +++++++------ .../oauth2/MiwOauth2ClientConfiguration.java | 24 ++++++++------ .../ssi/miw/oauth2/MiwOauth2ClientImpl.java | 23 +++++++------ .../SsiCredentialIssuerValidationRule.java | 23 +++++++------ .../SsiCredentialSubjectIdValidationRule.java | 23 +++++++------ .../edc/iam/ssi/miw/utils/PathUtils.java | 23 +++++++------ .../ssi/miw/SsiMiwApiClientExtensionTest.java | 23 +++++++------ .../miw/SsiMiwConfigurationExtensionTest.java | 23 +++++++------ .../SsiMiwCredentialClientExtensionTest.java | 23 +++++++------ .../miw/SsiMiwOauth2ClientExtensionTest.java | 23 +++++++------ .../SsiMiwValidationRuleExtensionTest.java | 23 +++++++------ .../iam/ssi/miw/api/MiwApiClientImplTest.java | 23 +++++++------ .../SsiMiwCredentialClientTest.java | 23 +++++++------ .../miw/oauth2/MiwOauth2ClientImplTest.java | 23 +++++++------ ...SsiCredentialIssuerValidationRuleTest.java | 23 +++++++------ ...CredentialSubjectIdValidationRuleTest.java | 23 +++++++------ .../edc/iam/ssi/miw/utils/PathUtilsTest.java | 23 +++++++------ .../build.gradle.kts | 4 +-- .../sftp/client/SftpClientConfig.java | 23 +++++++------ .../sftp/client/SftpClientExtension.java | 23 +++++++------ .../sftp/client/SftpClientWrapper.java | 23 +++++++------ .../sftp/client/SftpClientWrapperFactory.java | 23 +++++++------ .../client/SftpClientWrapperFactoryImpl.java | 23 +++++++------ .../sftp/client/SftpClientWrapperImpl.java | 23 +++++++------ .../sftp/client/SftpDataSink.java | 23 +++++++------ .../sftp/client/SftpDataSinkFactory.java | 23 +++++++------ .../sftp/client/SftpDataSource.java | 23 +++++++------ .../sftp/client/SftpDataSourceFactory.java | 23 +++++++------ .../transferprocess/sftp/client/SftpPart.java | 23 +++++++------ ...tractSftpClientWrapperIntegrationTest.java | 7 ++-- .../SftpClientWrapperIntegrationTest.java | 23 +++++++------ .../sftp/client/SftpClientWrapperTest.java | 6 ++-- .../sftp/client/SftpDataSinkFactoryTest.java | 6 ++-- .../sftp/client/SftpDataSinkTest.java | 6 ++-- .../client/SftpDataSourceFactoryTest.java | 6 ++-- .../sftp/client/SftpDataSourceTest.java | 6 ++-- .../build.gradle.kts | 4 +-- .../sftp/common/EdcSftpException.java | 23 +++++++------ .../sftp/common/SftpDataAddress.java | 23 +++++++------ .../sftp/common/SftpLocation.java | 23 +++++++------ .../sftp/common/SftpLocationFactory.java | 23 +++++++------ .../sftp/common/SftpProvider.java | 23 +++++++------ .../transferprocess/sftp/common/SftpUser.java | 23 +++++++------ .../sftp/common/SftpUserFactory.java | 23 +++++++------ .../sftp/common/SftpUserKeyPairGenerator.java | 23 +++++++------ .../sftp/common/SftpDataAddressTest.java | 23 +++++++------ .../build.gradle.kts | 4 +-- .../sftp/provisioner/NoOpSftpProvider.java | 23 +++++++------ .../sftp/provisioner/NoOpSftpProvisioner.java | 23 +++++++------ .../provisioner/SftpLocationFactoryImpl.java | 23 +++++++------ .../SftpProviderResourceDefinition.java | 23 +++++++------ ...tpProviderResourceDefinitionGenerator.java | 23 +++++++------ .../SftpProvisionedContentResource.java | 23 +++++++------ .../SftpProvisionerConfiguration.java | 24 ++++++++------ .../provisioner/SftpProvisionerExtension.java | 23 +++++++------ .../sftp/provisioner/SftpUserFactoryImpl.java | 23 +++++++------ .../provisioner/NoOpSftpProvisionerTest.java | 6 ++-- .../SftpLocationFactoryImplTest.java | 6 ++-- ...oviderResourceDefinitionGeneratorTest.java | 6 ++-- .../provisioner/SftpUserFactoryImplTest.java | 6 ++-- edc-tests/e2e-tests/build.gradle.kts | 23 +++++++------ .../tractusx/edc/did/DidExampleResolver.java | 23 +++++++------ .../edc/helpers/AssetHelperFunctions.java | 23 +++++++------ .../edc/helpers/CatalogHelperFunctions.java | 23 +++++++------ .../ContractDefinitionHelperFunctions.java | 23 +++++++------ .../ContractNegotiationHelperFunctions.java | 23 +++++++------ .../EdrNegotiationHelperFunctions.java | 23 +++++++------ .../edc/helpers/IatpHelperFunctions.java | 23 +++++++------ .../edc/helpers/PolicyHelperFunctions.java | 23 +++++++------ .../edc/helpers/QueryHelperFunctions.java | 23 +++++++------ .../tractusx/edc/helpers/ReceivedEvent.java | 23 +++++++------ .../TransferProcessHelperFunctions.java | 23 +++++++------ .../tractusx/edc/lifecycle/DataWiper.java | 19 +++++++---- .../edc/lifecycle/ParticipantRuntime.java | 19 +++++++---- .../PgHashicorpParticipantRuntime.java | 19 +++++++---- .../edc/lifecycle/PgParticipantRuntime.java | 19 +++++++---- .../lifecycle/TestRuntimeConfiguration.java | 19 +++++++---- .../edc/lifecycle/tx/ParticipantDataApi.java | 23 +++++++------ .../edc/lifecycle/tx/ParticipantEdrApi.java | 23 +++++++------ .../edc/lifecycle/tx/TxParticipant.java | 24 ++++++++------ .../lifecycle/tx/iatp/DataspaceIssuer.java | 23 +++++++------ .../lifecycle/tx/iatp/IatpParticipant.java | 23 +++++++------ .../lifecycle/tx/iatp/SecureTokenService.java | 23 +++++++------ .../tractusx/edc/tag/MiwIntegrationTest.java | 23 +++++++------ .../tractusx/edc/tests/TestCommon.java | 23 +++++++------ .../tests/catalog/AbstractCatalogTest.java | 19 +++++++---- .../tests/catalog/CatalogInMemoryTest.java | 23 +++++++------ .../tests/catalog/CatalogPostgresqlTest.java | 23 +++++++------ .../edc/tests/catalog/MiwSsiCatalogTest.java | 23 +++++++------ .../edc/tests/edr/AbstractDeleteEdrTest.java | 23 +++++++------ .../tests/edr/AbstractNegotiateEdrTest.java | 23 +++++++------ .../edc/tests/edr/AbstractRenewalEdrTest.java | 23 +++++++------ .../edc/tests/edr/DeleteEdrInMemoryTest.java | 23 +++++++------ .../tests/edr/DeleteEdrPostgresqlTest.java | 23 +++++++------ .../tests/edr/NegotiateEdrInMemoryTest.java | 23 +++++++------ ...otiateEdrPostgresqlHashicorpVaultTest.java | 23 +++++++------ .../tests/edr/NegotiateEdrPostgresqlTest.java | 23 +++++++------ .../edc/tests/edr/RenewalEdrInMemoryTest.java | 23 +++++++------ .../tests/edr/RenewalEdrPostgresqlTest.java | 23 +++++++------ .../tractusx/edc/tests/edr/TestFunctions.java | 23 +++++++------ .../AbstractContractNegotiateTest.java | 23 +++++++------ .../SsiContractNegotiationInMemoryTest.java | 23 +++++++------ .../policy/AbstractPolicyMonitorTest.java | 23 +++++++------ .../policy/PolicyMonitorInMemoryTest.java | 23 +++++++------ .../policy/PolicyMonitorPostgresqlTest.java | 23 +++++++------ .../proxy/AbstractDataPlaneProxyTest.java | 23 +++++++------ .../proxy/DataPlaneProxyInMemoryTest.java | 23 +++++++------ .../proxy/DataPlaneProxyPostgresqlTest.java | 23 +++++++------ ...AbstractHttpConsumerPullWithProxyTest.java | 23 +++++++------ .../AbstractHttpProviderPushTest.java | 23 +++++++------ ...HttpConsumerPullWithProxyInMemoryTest.java | 19 +++++++---- ...tpConsumerPullWithProxyPostgresqlTest.java | 19 +++++++---- .../HttpProviderPushInMemoryTest.java | 19 +++++++---- .../HttpProviderPushInPostgresqlTest.java | 19 +++++++---- ...HttpConsumerPullWithProxyInMemoryTest.java | 23 +++++++------ ...HttpConsumerPullWithProxyInMemoryTest.java | 23 +++++++------ ...HttpConsumerPullWithProxyInMemoryTest.java | 23 +++++++------ .../edc/token/KeycloakDispatcher.java | 23 +++++++------ .../tractusx/edc/token/MiwDispatcher.java | 23 +++++++------ .../edc/token/MockBpnIdentityService.java | 19 +++++++---- .../transfer/test/AzureBlobHelper.java | 30 ++++++++--------- .../transfer/test/AzureToAzureTest.java | 30 ++++++++--------- .../transfer/test/MultiCloudTest.java | 30 ++++++++--------- .../transfer/test/ParticipantRuntime.java | 19 +++++++---- .../transfer/test/RuntimeConfig.java | 30 ++++++++--------- .../dataplane/transfer/test/S3ToS3Test.java | 30 ++++++++--------- .../transfer/test/TestConstants.java | 30 ++++++++--------- .../transfer/test/TestFunctions.java | 30 ++++++++--------- .../edc-dataplane-proxy-e2e/build.gradle.kts | 23 +++++++------ .../proxy/e2e/DpfProxyEndToEndTest.java | 23 +++++++------ .../dataplane/proxy/e2e/EdrCacheSetup.java | 23 +++++++------ .../dataplane/proxy/e2e/KeyStoreSetup.java | 23 +++++++------ edc-tests/miw-tests/build.gradle.kts | 25 +++++++++------ .../tractusx/edc/tag/MiwIntegrationTest.java | 23 +++++++------ .../tractusx/edc/tests/miw/WalletTest.java | 19 +++++++---- .../runtime/dataplane-cloud/build.gradle.kts | 23 +++++++------ edc-tests/runtime/extensions/build.gradle.kts | 23 +++++++------ .../ConsumerEdrHandlerController.java | 23 +++++++------ .../lifecycle/ConsumerServicesExtension.java | 23 +++++++------ .../edc/lifecycle/VaultSeedExtension.java | 23 +++++++------ .../iatp/iatp-extensions/build.gradle.kts | 23 +++++++------ .../edc/iatp/CredentialsJsonLdExtension.java | 23 +++++++------ .../tractusx/edc/iatp/TestAudienceMapper.java | 23 +++++++------ .../edc/iatp/TestAudienceMapperExtension.java | 23 +++++++------ .../edc/iatp/ih/IdentityHubExtension.java | 23 +++++++------ .../ih/TxScopeToCriterionTransformer.java | 23 +++++++------ .../BaseCredentialEvaluationFunction.java | 23 +++++++------ .../CredentialPolicyEvaluationExtension.java | 23 +++++++------ ...FrameworkCredentialEvaluationFunction.java | 23 +++++++------ .../edc/iatp/policy/IdentityExtractor.java | 23 +++++++------ ...embershipCredentialEvaluationFunction.java | 23 +++++++------ .../runtime-memory-iatp-ih/build.gradle.kts | 23 +++++++------ .../iatp/runtime-memory-sts/build.gradle.kts | 23 +++++++------ .../runtime-memory-ssi/build.gradle.kts | 23 +++++++------ .../runtime/runtime-memory/build.gradle.kts | 23 +++++++------ .../build.gradle.kts | 23 +++++++------ .../runtime-postgresql/build.gradle.kts | 23 +++++++------ resources/java.header | 20 ++++++++++++ resources/tx-checkstyle-config.xml | 13 +++----- samples/multi-tenancy/build.gradle.kts | 23 +++++++------ .../multitenancy/MultiTenantRuntime.java | 23 +++++++------ .../multitenancy/MultiTenantRuntimeTest.java | 23 +++++++------ settings.gradle.kts | 2 +- spi/callback-spi/build.gradle.kts | 23 +++++++------ .../edc/spi/callback/InProcessCallback.java | 23 +++++++------ .../callback/InProcessCallbackRegistry.java | 23 +++++++------ spi/core-spi/build.gradle.kts | 23 +++++++------ .../tractusx/edc/edr/spi/CoreConstants.java | 23 +++++++------ spi/edr-spi/build.gradle.kts | 23 +++++++------ .../tractusx/edc/edr/spi/EdrManager.java | 23 +++++++------ .../edc/edr/spi/service/EdrService.java | 23 +++++++------ .../spi/store/EndpointDataReferenceCache.java | 23 +++++++------ .../spi/types/EndpointDataReferenceEntry.java | 23 +++++++------ .../EndpointDataReferenceEntryStates.java | 25 ++++++++------- .../edr/spi/types/NegotiateEdrRequest.java | 23 +++++++------ .../spi/EndpointDataReferenceEntryTest.java | 23 +++++++------ .../EndpointDataReferenceCacheTestBase.java | 23 +++++++------ .../tractusx/edc/edr/spi/TestFunctions.java | 23 +++++++------ spi/ssi-spi/build.gradle.kts | 23 +++++++------ .../edc/iam/ssi/spi/SsiConstants.java | 23 +++++++------ .../edc/iam/ssi/spi/SsiCredentialClient.java | 23 +++++++------ .../ssi/spi/SsiTokenValidationService.java | 23 +++++++------ .../ssi/spi/jsonld/CredentialsNamespaces.java | 23 +++++++------ .../ssi/spi/jsonld/JsonLdFieldExtractor.java | 23 +++++++------ .../ssi/spi/jsonld/JsonLdTypeFunctions.java | 23 +++++++------ .../ssi/spi/jsonld/JsonLdValueFunctions.java | 23 +++++++------ .../spi/jsonld/JsonLdFieldExtractorTest.java | 23 +++++++------ .../spi/jsonld/JsonLdTypeFunctionsTest.java | 23 +++++++------ .../spi/jsonld/JsonLdValueFunctionsTest.java | 23 +++++++------ .../ssi/spi/jsonld/JsonLdTextFixtures.java | 23 +++++++------ .../iam/ssi/spi/jsonld/SummaryContext.java | 23 +++++++------ .../iam/ssi/spi/jsonld/SummaryCredential.java | 23 +++++++------ .../edc/iam/ssi/spi/jsonld/W3cVcContext.java | 23 +++++++------ 433 files changed, 5375 insertions(+), 3596 deletions(-) create mode 100644 resources/java.header diff --git a/build.gradle.kts b/build.gradle.kts index 743228f2c..ecf5d553a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/core/edr-cache-core/build.gradle.kts b/core/edr-cache-core/build.gradle.kts index 3521efcd0..9eabb03f9 100644 --- a/core/edr-cache-core/build.gradle.kts +++ b/core/edr-cache-core/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java index 120ca4cff..7d7e44434 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core; diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java index ec725a6ee..7852e89e1 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.defaults; diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java index d1e3edc35..e67ac270e 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.defaults; diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntry.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntry.java index 9c31b141b..a14ebcf82 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntry.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntry.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.defaults; diff --git a/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java b/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java index 314224adc..d471cab75 100644 --- a/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java +++ b/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.defaults; diff --git a/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntryTest.java b/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntryTest.java index 179d6d660..4ce68d560 100644 --- a/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntryTest.java +++ b/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/PersistentCacheEntryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.defaults; diff --git a/core/edr-core/build.gradle.kts b/core/edr-core/build.gradle.kts index 2b70c7bdc..e575979c6 100644 --- a/core/edr-core/build.gradle.kts +++ b/core/edr-core/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtension.java b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtension.java index cf31d29c0..f9fb137dd 100644 --- a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtension.java +++ b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core; diff --git a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtension.java b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtension.java index 065eecfad..012cd65b2 100644 --- a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtension.java +++ b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core; diff --git a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java index d78b3d9ea..db89aaefe 100644 --- a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java +++ b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.manager; diff --git a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImpl.java b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImpl.java index bf6e01e7e..968611e59 100644 --- a/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImpl.java +++ b/core/edr-core/src/main/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.service; diff --git a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtensionTest.java b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtensionTest.java index 95fd68665..1b0381ba0 100644 --- a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtensionTest.java +++ b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core; diff --git a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtensionTest.java b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtensionTest.java index 322a58d44..9b416ad66 100644 --- a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtensionTest.java +++ b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/EdrCoreServiceExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core; diff --git a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/fixtures/TestFunctions.java b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/fixtures/TestFunctions.java index 7ba877bcc..9e300bb22 100644 --- a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/fixtures/TestFunctions.java +++ b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/fixtures/TestFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.fixtures; diff --git a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImplTest.java b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImplTest.java index 66bf010b4..b781c299e 100644 --- a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImplTest.java +++ b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/manager/EdrManagerImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.manager; diff --git a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImplTest.java b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImplTest.java index e948a82a5..d19b5e180 100644 --- a/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImplTest.java +++ b/core/edr-core/src/test/java/org/eclipse/tractusx/edc/edr/core/service/EdrServiceImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.core.service; diff --git a/core/json-ld-core/build.gradle.kts b/core/json-ld-core/build.gradle.kts index b43a2063e..03b390a30 100644 --- a/core/json-ld-core/build.gradle.kts +++ b/core/json-ld-core/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` @@ -21,4 +26,4 @@ dependencies { implementation(libs.edc.spi.core) implementation(libs.edc.spi.jsonld) testImplementation(testFixtures(libs.edc.junit)) -} \ No newline at end of file +} diff --git a/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java b/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java index f8b129c5d..a4b9e4038 100644 --- a/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java +++ b/core/json-ld-core/src/main/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.jsonld; diff --git a/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java b/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java index 35ed4edc1..7a2de182f 100644 --- a/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java +++ b/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.jsonld; diff --git a/edc-controlplane/build.gradle.kts b/edc-controlplane/build.gradle.kts index 72cc69c6b..0eb12e33b 100644 --- a/edc-controlplane/build.gradle.kts +++ b/edc-controlplane/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-controlplane/edc-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-base/build.gradle.kts index abb6b1809..85eead488 100644 --- a/edc-controlplane/edc-controlplane-base/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-base/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts b/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts index a1cdab224..7c69d28a2 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts index 634c5a24f..5295fafc7 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-controlplane/edc-runtime-memory/build.gradle.kts b/edc-controlplane/edc-runtime-memory/build.gradle.kts index 191e11d67..04c936024 100644 --- a/edc-controlplane/edc-runtime-memory/build.gradle.kts +++ b/edc-controlplane/edc-runtime-memory/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-controlplane/edc-runtime-memory/src/main/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtension.java b/edc-controlplane/edc-runtime-memory/src/main/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtension.java index 67c64bfa6..3a429d272 100644 --- a/edc-controlplane/edc-runtime-memory/src/main/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtension.java +++ b/edc-controlplane/edc-runtime-memory/src/main/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtension.java @@ -1,16 +1,22 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + package org.eclipse.tractusx.edc.vault.memory; import org.eclipse.edc.runtime.metamodel.annotation.BaseExtension; diff --git a/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java b/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java index f7f1287db..90e5d8103 100644 --- a/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java +++ b/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.vault.memory; diff --git a/edc-dataplane/build.gradle.kts b/edc-dataplane/build.gradle.kts index d60f4a7fe..dc5814dce 100644 --- a/edc-dataplane/build.gradle.kts +++ b/edc-dataplane/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts index c8ddb6a19..4159fc0eb 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-dataplane/edc-dataplane-base/build.gradle.kts b/edc-dataplane/edc-dataplane-base/build.gradle.kts index 53a5ce480..bc6bac2e3 100644 --- a/edc-dataplane/edc-dataplane-base/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-base/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts index 877952cf2..975956f36 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts index 522a2d021..aec29646b 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts +++ b/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApi.java b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApi.java index 1c57262ca..1fd6b08a1 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApi.java +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApi.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.bpn; diff --git a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiController.java b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiController.java index 5b7aeb6f3..2f2fe9605 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiController.java +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiController.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.bpn; diff --git a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java index 899b991fd..868719218 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.bpn; diff --git a/edc-extensions/bpn-validation/bpn-validation-api/src/test/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiControllerTest.java b/edc-extensions/bpn-validation/bpn-validation-api/src/test/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiControllerTest.java index d83112a6f..4c067d033 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/src/test/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiControllerTest.java +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/test/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiControllerTest.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.bpn; @@ -193,4 +191,4 @@ private JsonObject createJsonObject() { .build()).orElseThrow(f -> new RuntimeException(f.getFailureDetail())); } -} \ No newline at end of file +} diff --git a/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts index 5d14017b9..2a4c7226f 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts +++ b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java index 0be759ea8..d7938a777 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtension.java index 1f99c471d..0d6cfbe2a 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtension.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtension.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java index 1ec6fe3e3..098e06ddd 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.defaults; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java index 13b54b6dd..41c660e61 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.defaults; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java index 06cd255a5..5167d899e 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/AbstractBusinessPartnerValidation.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/AbstractBusinessPartnerValidation.java index ee2575ce0..93525a0da 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/AbstractBusinessPartnerValidation.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/AbstractBusinessPartnerValidation.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions.legacy; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerDutyFunction.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerDutyFunction.java index ba44fa0ce..1b8377809 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerDutyFunction.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerDutyFunction.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions.legacy; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerPermissionFunction.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerPermissionFunction.java index b0c074086..c357af43c 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerPermissionFunction.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerPermissionFunction.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions.legacy; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerProhibitionFunction.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerProhibitionFunction.java index 56a02f96d..cc9b4ac8a 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerProhibitionFunction.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/legacy/BusinessPartnerProhibitionFunction.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions.legacy; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java index 3de2a4914..7d57c8f91 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner; @@ -27,4 +32,4 @@ class InMemoryBusinessPartnerStoreTest extends BusinessPartnerStoreTestBase { protected BusinessPartnerStore getStore() { return store; } -} \ No newline at end of file +} diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtensionTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtensionTest.java index 209bc0c3f..1ffdf61c4 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtensionTest.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/LegacyBusinessPartnerValidationExtensionTest.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/AbstractBusinessPartnerValidationTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/AbstractBusinessPartnerValidationTest.java index beed92504..b330f1074 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/AbstractBusinessPartnerValidationTest.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/AbstractBusinessPartnerValidationTest.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions; diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java index c2379c592..c318ca7ee 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.functions; @@ -188,4 +193,4 @@ public Stream provideArguments(ExtensionContext extensionCo ); } } -} \ No newline at end of file +} diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java b/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java index 08ee267ff77..fdd2ac9d7 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.store; diff --git a/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts index 6d5b6059a..af7a94ab8 100644 --- a/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts +++ b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java index 473371a4c..aeb83299f 100644 --- a/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java +++ b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.spi; diff --git a/edc-extensions/bpn-validation/build.gradle.kts b/edc-extensions/bpn-validation/build.gradle.kts index b866b837b..335f1cd16 100644 --- a/edc-extensions/bpn-validation/build.gradle.kts +++ b/edc-extensions/bpn-validation/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts b/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts index 277e66c57..0f0c87646 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts +++ b/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java index 07aab14ff..6f1299cf3 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.store; diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java index 64663b9e4..537edbdf2 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.store.sql; diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java index 51ca75c25..0f315835a 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.store.sql; diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java index ba872e4b0..a52443e50 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.store.sql; diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java index 2ab1a79da..c8af6d7fe 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.validation.businesspartner.store.sql; @@ -49,4 +54,4 @@ void tearDown(PostgresqlStoreSetupExtension extension) { protected BusinessPartnerStore getStore() { return store; } -} \ No newline at end of file +} diff --git a/edc-extensions/build.gradle.kts b/edc-extensions/build.gradle.kts index 5f8b652f7..475444229 100644 --- a/edc-extensions/build.gradle.kts +++ b/edc-extensions/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/cx-policy/build.gradle.kts b/edc-extensions/cx-policy/build.gradle.kts index 4b7ffd4cf..4e26c94bd 100644 --- a/edc-extensions/cx-policy/build.gradle.kts +++ b/edc-extensions/cx-policy/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/CxPolicyExtension.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/CxPolicyExtension.java index 50faac428..d36664024 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/CxPolicyExtension.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/CxPolicyExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx; diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunction.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunction.java index 0a055d78e..f0a955f8f 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunction.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.common; diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/PolicyScopes.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/PolicyScopes.java index 99304a9d9..84311bf4c 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/PolicyScopes.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/common/PolicyScopes.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.common; diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunction.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunction.java index bdbea1e43..2914cc3d1 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunction.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.framework; diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunction.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunction.java index eb2eae345..cde06be3f 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunction.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.summary; diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProvider.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProvider.java index 8d6d5241f..d9218ee35 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProvider.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProvider.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.summary; diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java index be46efc73..00de6eb4b 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.summary; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunctionTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunctionTest.java index 03df86e46..8a978121e 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunctionTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/common/AbstractVpConstraintFunctionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.common; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunctionTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunctionTest.java index 16314e47e..3c7c49ef9 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunctionTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/FrameworkAgreementConstraintFunctionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.framework; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/PcfCredential.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/PcfCredential.java index c9c0bbb1a..37ee47500 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/PcfCredential.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/PcfCredential.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.framework; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/UseCaseContext.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/UseCaseContext.java index 249cd31ba..053366832 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/UseCaseContext.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/framework/UseCaseContext.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.framework; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionTest.java index 54bc656c3..5fe674e0b 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.summary; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProviderTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProviderTest.java index d3e22122e..4603dec70 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProviderTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryConstraintFunctionsProviderTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.summary; diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java index 5f67ace89..0bcc52627 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.policy.cx.summary; diff --git a/edc-extensions/data-encryption/build.gradle.kts b/edc-extensions/data-encryption/build.gradle.kts index 0cf1aefe1..0e2e546dc 100644 --- a/edc-extensions/data-encryption/build.gradle.kts +++ b/edc-extensions/data-encryption/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/ArrayUtil.java b/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/ArrayUtil.java index 973f672a7..65c6475c2 100644 --- a/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/ArrayUtil.java +++ b/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/ArrayUtil.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,8 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ + package org.eclipse.tractusx.edc.data.encryption; public class ArrayUtil { diff --git a/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtension.java b/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtension.java index 28ca9afcd..d6a246824 100644 --- a/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtension.java +++ b/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtension.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.data.encryption; @@ -70,4 +75,4 @@ public DataEncrypter createEncryptor(ServiceExtensionContext context) { context.getMonitor().warning(format("Algorithm %s is not known, will use a NOOP encryptor!", algorithm)); return new NoopDataEncrypter(); } -} \ No newline at end of file +} diff --git a/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptor.java b/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptor.java index bfa3aacf0..6aa47938d 100644 --- a/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptor.java +++ b/edc-extensions/data-encryption/src/main/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptor.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.data.encryption.aes; diff --git a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java index 080308cd4..4dcccf508 100644 --- a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java +++ b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.data.encryption; @@ -81,4 +86,4 @@ void verifyDeprecationWarnings(String deprecatedSetting) { extension.createEncryptor(context); verify(monitor).warning(startsWith("Caching the secret keys was deprecated because it is unsafe")); } -} \ No newline at end of file +} diff --git a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptorTest.java b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptorTest.java index 8e6be6df8..1cd99abd3 100644 --- a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptorTest.java +++ b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/aes/AesEncryptorTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.data.encryption.aes; @@ -119,4 +124,4 @@ private String generateBase64(int validSize) { return Base64.getEncoder().encodeToString(bytes); } -} \ No newline at end of file +} diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/build.gradle.kts b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/build.gradle.kts index 8475c39a9..ebc229f52 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/build.gradle.kts +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java index 7a67dba70..abbecdd02 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/DataPlaneProxyConsumerApiExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ClientErrorExceptionMapper.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ClientErrorExceptionMapper.java index 819ae41fe..456c9e73b 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ClientErrorExceptionMapper.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ClientErrorExceptionMapper.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestApi.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestApi.java index 7902566aa..1c87618f5 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestApi.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestApi.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java index fd361a1bd..8f0df8aff 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/PreconditionFailedException.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/PreconditionFailedException.java index 24b865bf0..c45e80c6d 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/PreconditionFailedException.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/PreconditionFailedException.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequest.java index 562b9b612..fb1bbd468 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset.model; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequestTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequestTest.java index 4a81ff653..cb89f5aa1 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequestTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/AssetRequestTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset.model; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/ConsumerAssetRequestControllerTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/ConsumerAssetRequestControllerTest.java index c8a94f45f..7c45031bd 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/ConsumerAssetRequestControllerTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/model/ConsumerAssetRequestControllerTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.asset.model; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts index dec370fa9..4244a6162 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/DataPlaneProxyProviderApiExtension.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/DataPlaneProxyProviderApiExtension.java index 08e356a97..644855e2c 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/DataPlaneProxyProviderApiExtension.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/DataPlaneProxyProviderApiExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayApi.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayApi.java index f951123b3..b4d169193 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayApi.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayApi.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.gateway; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java index cd506665c..0d43b38b2 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.gateway; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelper.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelper.java index 816c7a446..eb449d52e 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelper.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelper.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.response; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/validation/ProxyProviderDataAddressResolver.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/validation/ProxyProviderDataAddressResolver.java index f7ba95ab5..c9cc6901f 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/validation/ProxyProviderDataAddressResolver.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/validation/ProxyProviderDataAddressResolver.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Amadeus +/******************************************************************************** + * Copyright (c) 2022 Amadeus * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Amadeus - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.validation; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/DataPlaneProxyProviderApiExtensionTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/DataPlaneProxyProviderApiExtensionTest.java index d66f860cc..d68e4e076 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/DataPlaneProxyProviderApiExtensionTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/DataPlaneProxyProviderApiExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Mercedes Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2023 Mercedes Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes Benz Tech Innovation GmbH - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.response; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ProxyProviderDataAddressResolverTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ProxyProviderDataAddressResolverTest.java index b95cc54ad..5ffd665a7 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ProxyProviderDataAddressResolverTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ProxyProviderDataAddressResolverTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.response; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelperTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelperTest.java index f9abd0327..8f9a8cf21 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelperTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/response/ResponseHelperTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.api.response; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts index 1719bcfc3..c9b7004e2 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/ProxyProviderCoreExtension.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/ProxyProviderCoreExtension.java index e852d03cb..1395550f8 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/ProxyProviderCoreExtension.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/ProxyProviderCoreExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImpl.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImpl.java index 8c1878c73..79c344695 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImpl.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core.gateway.auth; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoader.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoader.java index 79cd41aa2..3be3bc6f6 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoader.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoader.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core.gateway.configuration; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImpl.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImpl.java index 45a5b8d91..c7584107a 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImpl.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core.gateway.configuration; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImplTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImplTest.java index 346481a55..59bf7b0fd 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImplTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/auth/AuthorizationHandlerRegistryImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core.gateway.auth; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoaderTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoaderTest.java index b9eec317f..b087cb078 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoaderTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationLoaderTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core.gateway.configuration; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImplTest.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImplTest.java index 9bd58c365..3bd00bbc6 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImplTest.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/core/gateway/configuration/GatewayConfigurationRegistryImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.provider.core.gateway.configuration; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/build.gradle.kts b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/build.gradle.kts index 9ca2f9437..e010535f9 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/build.gradle.kts +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationExtension.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationExtension.java index 37ffc5490..1f520bea2 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationExtension.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.spi.provider.gateway.authorization; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandler.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandler.java index 5442ebc98..b5a1752b3 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandler.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandler.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.spi.provider.gateway.authorization; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandlerRegistry.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandlerRegistry.java index b40217cb4..b402430c4 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandlerRegistry.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/authorization/AuthorizationHandlerRegistry.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.spi.provider.gateway.authorization; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfiguration.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfiguration.java index f942f8609..6d797a8b0 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfiguration.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfiguration.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.spi.provider.gateway.configuration; diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfigurationRegistry.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfigurationRegistry.java index d96ddf730..11d4454ea 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfigurationRegistry.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-spi/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/spi/provider/gateway/configuration/GatewayConfigurationRegistry.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.spi.provider.gateway.configuration; diff --git a/edc-extensions/dataplane-selector-configuration/build.gradle.kts b/edc-extensions/dataplane-selector-configuration/build.gradle.kts index bba41eac6..133bd88c3 100644 --- a/edc-extensions/dataplane-selector-configuration/build.gradle.kts +++ b/edc-extensions/dataplane-selector-configuration/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java b/edc-extensions/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java index e57124464..ab156d163 100644 --- a/edc-extensions/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java +++ b/edc-extensions/dataplane-selector-configuration/src/main/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.selector.configuration; diff --git a/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionEdcExtensionTest.java b/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionEdcExtensionTest.java index 6e1c2098c..eaa6d6434 100644 --- a/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionEdcExtensionTest.java +++ b/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionEdcExtensionTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.selector.configuration; diff --git a/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java b/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java index d16100b63..55b685242 100644 --- a/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java +++ b/edc-extensions/dataplane-selector-configuration/src/test/java/org/eclipse/tractusx/edc/dataplane/selector/configuration/DataPlaneSelectorConfigurationServiceExtensionTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.selector.configuration; diff --git a/edc-extensions/edr/edr-api/build.gradle.kts b/edc-extensions/edr/edr-api/build.gradle.kts index c2d1a759f..bd0841441 100644 --- a/edc-extensions/edr/edr-api/build.gradle.kts +++ b/edc-extensions/edr/edr-api/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApi.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApi.java index cfc92db32..3042ab67d 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApi.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApi.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtension.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtension.java index ba28aa1ba..0e42b6ee4 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtension.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrController.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrController.java index 99bcbc02b..8b2fecf37 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrController.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/EdrController.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/dto/NegotiateEdrRequestDto.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/dto/NegotiateEdrRequestDto.java index 7725d0d24..cfce992ba 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/dto/NegotiateEdrRequestDto.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/dto/NegotiateEdrRequestDto.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.dto; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/schema/EdrSchema.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/schema/EdrSchema.java index cddd67d1f..c7dd3fdcb 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/schema/EdrSchema.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/schema/EdrSchema.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.schema; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformer.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformer.java index 817eb5bb2..369acc9a0 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformer.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformer.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformer.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformer.java index f0dd211cf..dc67473d8 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformer.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformer.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformer.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformer.java index 81f17606a..78ee54cbf 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformer.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformer.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiatedEdrRequestTransformer.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiatedEdrRequestTransformer.java index c878688ac..46bf3e022 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiatedEdrRequestTransformer.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiatedEdrRequestTransformer.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; diff --git a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidator.java b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidator.java index 3dca843e6..2650e2ba3 100644 --- a/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidator.java +++ b/edc-extensions/edr/edr-api/src/main/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidator.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.validation; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java index caa4a4347..15a807faa 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiTest.java index 71e38e650..27a0a03dd 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrControllerTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrControllerTest.java index d74de74c7..5a99eeafd 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrControllerTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrControllerTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/TestFunctions.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/TestFunctions.java index a3bb16473..fc622b523 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/TestFunctions.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/TestFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformerTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformerTest.java index 0f0966054..d7c0e7db0 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformerTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/EndpointDataReferenceToDataAddressTransformerTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformerTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformerTest.java index b500f29f4..a0474eb60 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformerTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectFromEndpointDataReferenceEntryTransformerTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; @@ -67,4 +72,4 @@ void transform() { assertThat(jsonObject.getJsonNumber(EDR_ENTRY_EXPIRATION_DATE).longValue()).isNotNull().isEqualTo(dto.getExpirationTimestamp()); } -} \ No newline at end of file +} diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformerTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformerTest.java index a8e5e1568..5d493cd38 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformerTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/JsonObjectToNegotiateEdrRequestDtoTransformerTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; @@ -150,4 +155,4 @@ private JsonObject getJsonObject(String type) { .add(TYPE, type) .build(); } -} \ No newline at end of file +} diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiateEdrRequestTransformerTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiateEdrRequestTransformerTest.java index f57735975..ed7d31abb 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiateEdrRequestTransformerTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/transform/NegotiateEdrRequestDtoToNegotiateEdrRequestTransformerTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.transform; diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidatorTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidatorTest.java index afb2c4df9..55f28eb91 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidatorTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/validation/NegotiateEdrRequestDtoValidatorTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.api.edr.validation; diff --git a/edc-extensions/edr/edr-cache-sql/build.gradle.kts b/edc-extensions/edr/edr-cache-sql/build.gradle.kts index d456a3053..8d1fde1e8 100644 --- a/edc-extensions/edr/edr-cache-sql/build.gradle.kts +++ b/edc-extensions/edr/edr-cache-sql/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCache.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCache.java index 5da73c62f..38a115630 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCache.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCache.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql; diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java index 603e93736..769da1ca7 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql; diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java index dd8e57618..168a21129 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/BaseSqlEdrStatements.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2020 - 2022 Microsoft Corporation +/******************************************************************************** + * Copyright (c) 2020,2022 Microsoft Corporation * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Microsoft Corporation - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql.schema; diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrMapping.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrMapping.java index 2a99d2c35..fbeb27f55 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrMapping.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrMapping.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql.schema; diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrStatements.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrStatements.java index 68a980050..9e49a9e1a 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrStatements.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/EdrStatements.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql.schema; diff --git a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java index f164f919b..fea1c59b1 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java +++ b/edc-extensions/edr/edr-cache-sql/src/main/java/org/eclipse/tractusx/edc/edr/store/sql/schema/postgres/PostgresEdrStatements.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql.schema.postgres; diff --git a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java index b905e5b6d..621190751 100644 --- a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java +++ b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql; diff --git a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java index 4b45c874f..afbe9025b 100644 --- a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java +++ b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql; diff --git a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTransactionalTest.java b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTransactionalTest.java index c49d21866..4e98b06ea 100644 --- a/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTransactionalTest.java +++ b/edc-extensions/edr/edr-cache-sql/src/test/java/org/eclipse/tractusx/edc/edr/store/sql/SqlEndpointDataReferenceCacheTransactionalTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.store.sql; diff --git a/edc-extensions/edr/edr-callback/build.gradle.kts b/edc-extensions/edr/edr-callback/build.gradle.kts index 59ebc3d32..6d87b53f0 100644 --- a/edc-extensions/edr/edr-callback/build.gradle.kts +++ b/edc-extensions/edr/edr-callback/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java index f09a7c682..74bd92aea 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallback.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcher.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcher.java index e4faac1bc..d540d9fcf 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcher.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcher.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtension.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtension.java index 9164a9c8c..5cefce56d 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtension.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryImpl.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryImpl.java index f3942ebbc..c03e660c3 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryImpl.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtension.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtension.java index bf2a76534..ac3a22b59 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtension.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java index 0482bff8d..6e5a4a0ac 100644 --- a/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java +++ b/edc-extensions/edr/edr-callback/src/main/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallback.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java index 9d43d352d..c38d27bcb 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/ContractNegotiationCallbackTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java index 86b4690c9..e45102384 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackMessageDispatcherTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java index 3932688f1..ea29a42f3 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java index 1f0f35261..f154c4e96 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TestFunctions.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TestFunctions.java index 8a21ed652..4a46e31b0 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TestFunctions.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TestFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java index 60c8ecad6..290ce3528 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/TransferProcessLocalCallbackTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.callback; diff --git a/edc-extensions/iatp/tx-iatp/build.gradle.kts b/edc-extensions/iatp/tx-iatp/build.gradle.kts index e4c98be33..af54a6311 100644 --- a/edc-extensions/iatp/tx-iatp/build.gradle.kts +++ b/edc-extensions/iatp/tx-iatp/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` @@ -24,4 +29,4 @@ dependencies { implementation(project(":spi:core-spi")) testImplementation(libs.edc.junit) -} \ No newline at end of file +} diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java index baa91e049..3f5c8cec4 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp; diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java index 37348cc16..2cd451e1a 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp; diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java index ed108de50..b1158568a 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/TxIatpConstants.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp; diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java index e07f39f06..a1f0ec91d 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractor.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp.scope; diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java index 781f6a6e4..02ef153f3 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp.scope; diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java index afc020abb..7c7714424 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpDefaultScopeExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp; diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtensionTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtensionTest.java index 6d7cd9407..0cd4b6c7d 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtensionTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/IatpScopeExtractorExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp; diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractorTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractorTest.java index da2889d76..f20f52c0f 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractorTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/CredentialScopeExtractorTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp.scope; diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java index e988dd855..e8b0821aa 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.iatp.scope; diff --git a/edc-extensions/postgresql-migration/build.gradle.kts b/edc-extensions/postgresql-migration/build.gradle.kts index d81f96c9d..027679f1e 100644 --- a/edc-extensions/postgresql-migration/build.gradle.kts +++ b/edc-extensions/postgresql-migration/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java index 59d8b39ef..6c894b4d2 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AbstractPostgresqlMigrationExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java index cf1814a58..f3b78646a 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java index 01f5f6810..594b93362 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/BusinessGroupPostgresMigrationExtension.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java index fe68a9c7f..a310c015f 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractDefinitionPostgresqlMigrationExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java index 0ab3f38dd..556fc19f2 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/ContractNegotiationPostgresqlMigrationExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java index 00e77c0d4..cbf82303d 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/EdrPostgresqlMigrationExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java index eff280639..373e31c9b 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/FlywayManager.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java index ba6b71e4e..ad9a6e752 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyMonitorPostgresqlMigrationExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java index 4921e75ee..ee12a4ad5 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/PolicyPostgresqlMigrationExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java index 6ff1b12c4..6221a645e 100644 --- a/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java +++ b/edc-extensions/postgresql-migration/src/main/java/org/eclipse/tractusx/edc/postgresql/migration/TransferProcessPostgresqlMigrationExtension.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java b/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java index 056f6f51c..29b3990dd 100644 --- a/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java +++ b/edc-extensions/postgresql-migration/src/test/java/org/eclipse/tractusx/edc/postgresql/migration/AssetPostgresqlMigrationExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.postgresql.migration; diff --git a/edc-extensions/provision-additional-headers/build.gradle.kts b/edc-extensions/provision-additional-headers/build.gradle.kts index 407380ff7..a15240789 100644 --- a/edc-extensions/provision-additional-headers/build.gradle.kts +++ b/edc-extensions/provision-additional-headers/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResource.java b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResource.java index 29b5328ed..23ead4361 100644 --- a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResource.java +++ b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResource.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisioner.java b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisioner.java index e3602be05..1bf3928dc 100644 --- a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisioner.java +++ b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisioner.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinition.java b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinition.java index 2ebbbf1a3..6ce362c0e 100644 --- a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinition.java +++ b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinition.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGenerator.java b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGenerator.java index 800641b73..b13f09fed 100644 --- a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGenerator.java +++ b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGenerator.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtension.java b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtension.java index fc897e16c..b1322de9a 100644 --- a/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtension.java +++ b/edc-extensions/provision-additional-headers/src/main/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtension.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index df3714fd4..e8bd8056e 100644 --- a/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,6 +1,6 @@ # # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021-2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResourceTest.java b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResourceTest.java index 2079393d8..c04d3374a 100644 --- a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResourceTest.java +++ b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionedResourceTest.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionerTest.java b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionerTest.java index 110509b16..f15c72f6d 100644 --- a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionerTest.java +++ b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersProvisionerTest.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGeneratorTest.java b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGeneratorTest.java index bc44f0ab5..f56480b36 100644 --- a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGeneratorTest.java +++ b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionGeneratorTest.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionTest.java b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionTest.java index 11a5173a4..454c385b4 100644 --- a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionTest.java +++ b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/AdditionalHeadersResourceDefinitionTest.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtensionTest.java b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtensionTest.java index 47514c19a..3e86729e0 100644 --- a/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtensionTest.java +++ b/edc-extensions/provision-additional-headers/src/test/java/org/eclipse/tractusx/edc/provision/additionalheaders/ProvisionAdditionalHeadersExtensionTest.java @@ -1,13 +1,13 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2021-2023 Contributors to the Eclipse Foundation + * Copyright (c) 2021,2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.provision.additionalheaders; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts b/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts index 9694fcc9f..e64ad023a 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts +++ b/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts @@ -1,15 +1,20 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * + * SPDX-License-Identifier: Apache-2.0 */ plugins { `java-library` diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java index 02c98fc20..b66260d95 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java index ab99e8081..eaf8fa305 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java index 364967a4a..903377abe 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java index 9a86657d6..e5322a480 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java index 9d94317eb..8be2d7547 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java index 09de46660..51f400092 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java index 83915b078..0aff57cc5 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java index b1bc11800..aba77769e 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java index fd515dd3b..021ebf582 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java index 70c006b92..c29cffd3f 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java index f66cfa7f5..6b5b7c649 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java index 2bdc15b8e..5ffe1b51b 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java index 30ed59304..bd738db04 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; @@ -59,4 +64,4 @@ void write_map() { var result = adapter.write(map); assertThat(result).isInstanceOf(JsonObject.class).extracting(JsonValue::asJsonObject).matches(jo -> jo.size() == 2); } -} \ No newline at end of file +} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java index 2fa2468b0..1d8df717f 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; @@ -183,4 +188,4 @@ private ECKey createEcKey(Curve curve) { } } } -} \ No newline at end of file +} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java index 6f403b4b6..80c192308 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java index 5f3bfff5c..7cc20b18a 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java index 8634342c6..eaa1e029e 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java +++ b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.edc.security.signature.jws2020; diff --git a/edc-extensions/ssi/ssi-identity-core/build.gradle.kts b/edc-extensions/ssi/ssi-identity-core/build.gradle.kts index 3e47fc6e5..3b9a4bda9 100644 --- a/edc-extensions/ssi/ssi-identity-core/build.gradle.kts +++ b/edc-extensions/ssi/ssi-identity-core/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java index d17d4242b..fd3c5fde9 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityService.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity; diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java index 8a3e91390..762e0ac33 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity; diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java index d0e8cd2b6..1c1304dd2 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity; diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java index 3fd62bf5d..b9f15e5e1 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java +++ b/edc-extensions/ssi/ssi-identity-core/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRule.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity.rule; diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java index ee97dbc2a..8642df8fb 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity; diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java index d78a26bf3..d0a157acd 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity; diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java index 961f0fd86..ba42dff2c 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiTokenValidationServiceImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity; diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java index 183c698c4..8eea66edf 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/rule/SsiAudienceValidationRuleTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity.rule; diff --git a/edc-extensions/ssi/ssi-identity-extractor/build.gradle.kts b/edc-extensions/ssi/ssi-identity-extractor/build.gradle.kts index 9cbc7a854..f5049009d 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/build.gradle.kts +++ b/edc-extensions/ssi/ssi-identity-extractor/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractor.java b/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractor.java index 7390223cb..26cc9ae60 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractor.java +++ b/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractor.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity.extractor; diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtension.java b/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtension.java index b570a3895..a4e309a81 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtension.java +++ b/edc-extensions/ssi/ssi-identity-extractor/src/main/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity.extractor; diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractorTest.java b/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractorTest.java index 3fb8aa154..4caee164d 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractorTest.java +++ b/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/CredentialIdentityExtractorTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity.extractor; diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java b/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java index 83abe72b6..ae8f386b6 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java +++ b/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.identity.extractor; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts b/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts index 6db816b84..c5babfce4 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts +++ b/edc-extensions/ssi/ssi-miw-credential-client/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtension.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtension.java index 1f3286ae2..c78354ff0 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtension.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtension.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtension.java index ba66a2470..95e435608 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtension.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtension.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtension.java index f4503e1b6..c20317621 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtension.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtension.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtension.java index 8af1c3620..e4becb2c0 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtension.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java index 964b08e6c..469df860e 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClient.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClient.java index 123c49f60..cc90325f0 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClient.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClient.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.api; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImpl.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImpl.java index 09ea5d058..aa0410acc 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImpl.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.api; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwClientException.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwClientException.java index e241c6981..65bf7a6af 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwClientException.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwClientException.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.api; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwFallbackFactories.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwFallbackFactories.java index fdc07f5fa..a4638b2f9 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwFallbackFactories.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwFallbackFactories.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.api; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/config/SsiMiwConfiguration.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/config/SsiMiwConfiguration.java index eb35f9e7e..028f11a8b 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/config/SsiMiwConfiguration.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/config/SsiMiwConfiguration.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.config; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java index c5b91e696..2011cbd8f 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClient.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.credentials; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2Client.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2Client.java index 904fab187..20a8451f7 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2Client.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2Client.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.oauth2; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientConfiguration.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientConfiguration.java index 7db40126c..c17f2dfae 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientConfiguration.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientConfiguration.java @@ -1,17 +1,21 @@ - -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.oauth2; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImpl.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImpl.java index d7cf2237a..1d18bbbe0 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImpl.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.oauth2; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java index a220d1c27..412ad9ada 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRule.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.rule; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java index 5fb3748db..1c2e80315 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRule.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.rule; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtils.java b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtils.java index 05376eec6..7f77ad5ce 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtils.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtils.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.utils; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java index a7080b33a..b9debd017 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java index 838146279..0e722fd2f 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java index f156ae0f1..7d37c27a4 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java index acecfbdf6..e3d4aeca2 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java index e3dbabf75..763758eb7 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImplTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImplTest.java index ebec7cc35..83db6299b 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImplTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/api/MiwApiClientImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.api; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java index 7c708f383..37725dbe3 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/credentials/SsiMiwCredentialClientTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.credentials; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImplTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImplTest.java index a92667cca..4444edcea 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImplTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/oauth2/MiwOauth2ClientImplTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.oauth2; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java index 3784c9b81..22dbf4dcf 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialIssuerValidationRuleTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.rule; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java index 411b15367..19d001e02 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/rule/SsiCredentialSubjectIdValidationRuleTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.rule; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtilsTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtilsTest.java index 651269787..9f8879fb1 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtilsTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/utils/PathUtilsTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.miw.utils; diff --git a/edc-extensions/transferprocess-sftp-client/build.gradle.kts b/edc-extensions/transferprocess-sftp-client/build.gradle.kts index 5f55485eb..a552c7e94 100644 --- a/edc-extensions/transferprocess-sftp-client/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-client/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientConfig.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientConfig.java index dbfb0fc98..bc2485350 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientConfig.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientConfig.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientExtension.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientExtension.java index 766300c80..4942c41b8 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientExtension.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapper.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapper.java index 6d938f2e1..6a3a4dd3a 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapper.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapper.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactory.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactory.java index 8d2d03783..261b09c00 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactory.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactory.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactoryImpl.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactoryImpl.java index 019ec9d67..2272b0980 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactoryImpl.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperFactoryImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperImpl.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperImpl.java index 8bacbf1b0..0af1ab723 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperImpl.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSink.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSink.java index f24aedebe..f5385f130 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSink.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSink.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial Test + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactory.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactory.java index 6ea8140fe..82c9a56d5 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactory.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactory.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial Test + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSource.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSource.java index b4cf83a26..a1df6efe9 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSource.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSource.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial Test + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactory.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactory.java index c6b23045a..4254dd9fc 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactory.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactory.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial Test + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpPart.java b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpPart.java index 923f56810..db3af93ed 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpPart.java +++ b/edc-extensions/transferprocess-sftp-client/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpPart.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/AbstractSftpClientWrapperIntegrationTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/AbstractSftpClientWrapperIntegrationTest.java index 830cbae21..336e3a8e2 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/AbstractSftpClientWrapperIntegrationTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/AbstractSftpClientWrapperIntegrationTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -15,8 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ - + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperIntegrationTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperIntegrationTest.java index ec3b5c027..3361f2b80 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperIntegrationTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperIntegrationTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial Test + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperTest.java index 9827dfc00..984f59176 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpClientWrapperTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactoryTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactoryTest.java index c4bcc948b..57f4171cb 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactoryTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkFactoryTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkTest.java index bce5f70c5..f6bc31902 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSinkTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactoryTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactoryTest.java index c4c1b183d..a45e18c79 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactoryTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceFactoryTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceTest.java b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceTest.java index d25921c46..20b381023 100644 --- a/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceTest.java +++ b/edc-extensions/transferprocess-sftp-client/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/client/SftpDataSourceTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.client; diff --git a/edc-extensions/transferprocess-sftp-common/build.gradle.kts b/edc-extensions/transferprocess-sftp-common/build.gradle.kts index acf07f0c2..e7afd6b5e 100644 --- a/edc-extensions/transferprocess-sftp-common/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-common/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/EdcSftpException.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/EdcSftpException.java index a830b1ea9..a0bde5bc8 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/EdcSftpException.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/EdcSftpException.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddress.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddress.java index 5fa6da433..9364f24f3 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddress.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddress.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocation.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocation.java index 0b554c8b2..7894d9d6f 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocation.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocation.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocationFactory.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocationFactory.java index ee5d002e3..9f37059ce 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocationFactory.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpLocationFactory.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpProvider.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpProvider.java index c5d1f7608..a82b2fc4e 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpProvider.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpProvider.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUser.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUser.java index 3bcd9cff3..b70fbaca7 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUser.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUser.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserFactory.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserFactory.java index 53a399cf9..dc701bf79 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserFactory.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserFactory.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserKeyPairGenerator.java b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserKeyPairGenerator.java index abbaff3dc..1c341f9fb 100644 --- a/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserKeyPairGenerator.java +++ b/edc-extensions/transferprocess-sftp-common/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpUserKeyPairGenerator.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-common/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddressTest.java b/edc-extensions/transferprocess-sftp-common/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddressTest.java index d6c129c32..d568ca181 100644 --- a/edc-extensions/transferprocess-sftp-common/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddressTest.java +++ b/edc-extensions/transferprocess-sftp-common/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/common/SftpDataAddressTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.common; diff --git a/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts b/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts index d4f8ab15c..86379217c 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvider.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvider.java index daacc9927..9b51d2f64 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvider.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvider.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisioner.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisioner.java index cf89412ca..0aa507416 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisioner.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisioner.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImpl.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImpl.java index 8891d1a14..8421884e8 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImpl.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinition.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinition.java index 70ce2d86b..fd13eb2d0 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinition.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinition.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGenerator.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGenerator.java index 42476dc03..8f1748cfe 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGenerator.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGenerator.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionedContentResource.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionedContentResource.java index cdeba389f..61bb9089e 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionedContentResource.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionedContentResource.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerConfiguration.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerConfiguration.java index 414de3422..d25c83039 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerConfiguration.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerConfiguration.java @@ -1,17 +1,21 @@ -/* - * Copyright (c) 2022 Microsoft Corporation +/******************************************************************************** + * Copyright (c) 2022 Microsoft Corporation * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Microsoft Corporation - initial API and implementation - * Mercedes Benz Tech Innovation - adapt to SFTP + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerExtension.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerExtension.java index 8a7081e89..5b36db1a9 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerExtension.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProvisionerExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImpl.java b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImpl.java index d55f33734..b7c4e6952 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImpl.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImpl.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH +/******************************************************************************** + * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Mercedes-Benz Tech Innovation GmbH - Initial API and Implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisionerTest.java b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisionerTest.java index 4a47abcfc..cfbe7a9a3 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisionerTest.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/NoOpSftpProvisionerTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImplTest.java b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImplTest.java index 2b4a11bfe..e82f65bf3 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImplTest.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpLocationFactoryImplTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGeneratorTest.java b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGeneratorTest.java index 02366eef2..7d997e007 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGeneratorTest.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpProviderResourceDefinitionGeneratorTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImplTest.java b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImplTest.java index a4fe07398..99e33d75e 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImplTest.java +++ b/edc-extensions/transferprocess-sftp-provisioner/src/test/java/org/eclipse/tractusx/edc/transferprocess/sftp/provisioner/SftpUserFactoryImplTest.java @@ -1,4 +1,4 @@ -/* +/******************************************************************************** * Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH * Copyright (c) 2021,2022 Contributors to the Eclipse Foundation * @@ -7,7 +7,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ package org.eclipse.tractusx.edc.transferprocess.sftp.provisioner; diff --git a/edc-tests/e2e-tests/build.gradle.kts b/edc-tests/e2e-tests/build.gradle.kts index 2c7296072..378e8499d 100644 --- a/edc-tests/e2e-tests/build.gradle.kts +++ b/edc-tests/e2e-tests/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java index aa87f9091..34e7952b4 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/did/DidExampleResolver.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.did; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/AssetHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/AssetHelperFunctions.java index 97e7f5293..e9b1224fb 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/AssetHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/AssetHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/CatalogHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/CatalogHelperFunctions.java index 269ec3528..56bf62478 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/CatalogHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/CatalogHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractDefinitionHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractDefinitionHelperFunctions.java index bdf80342b..a286091c0 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractDefinitionHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractDefinitionHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java index 3d155b029..da4b033b6 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ContractNegotiationHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/EdrNegotiationHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/EdrNegotiationHelperFunctions.java index 7d2c53626..0d69075fd 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/EdrNegotiationHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/EdrNegotiationHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java index 789561825..5ea0a7646 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/IatpHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java index f91ced652..5a16efe0b 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/PolicyHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/QueryHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/QueryHelperFunctions.java index 70a837385..3c7ab0347 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/QueryHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/QueryHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ReceivedEvent.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ReceivedEvent.java index 55d012cc2..2699b702c 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ReceivedEvent.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/ReceivedEvent.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java index 34e7772a6..9f9c35340 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/helpers/TransferProcessHelperFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.helpers; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java index 83c10940c..2bb1b12e7 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/DataWiper.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java index 66f1d278e..3a644a074 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/ParticipantRuntime.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgHashicorpParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgHashicorpParticipantRuntime.java index 99a593d22..942ba81a2 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgHashicorpParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgHashicorpParticipantRuntime.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java index 437ace8b9..4682bab19 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/PgParticipantRuntime.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java index 2870b6d52..861796680 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/TestRuntimeConfiguration.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java index f90984003..a9ca1cb7f 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantDataApi.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle.tx; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java index 9ba913891..18f55c0d3 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/ParticipantEdrApi.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle.tx; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java index 971718b7a..3dd93d571 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle.tx; @@ -61,6 +66,7 @@ public void createAsset(String id) { * Stores BPN groups */ public void storeBusinessPartner(String bpn, String... groups) { + var culo = "ciao"; var body = Json.createObjectBuilder() .add(ID, bpn) .add(TX_NAMESPACE + "groups", Json.createArrayBuilder(Arrays.asList(groups))) diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java index e73a97c4e..887e53211 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/DataspaceIssuer.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle.tx.iatp; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java index 99cdc3f37..551938568 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle.tx.iatp; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java index 775cfc2e3..1b29f83b7 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/SecureTokenService.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle.tx.iatp; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java index 526469957..c3db731a4 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tag; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java index 91fcca0a9..486044a9a 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/TestCommon.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java index 3231ebabe..497d021ee 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/AbstractCatalogTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.catalog; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java index 651fd5472..1f93986a5 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.catalog; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java index 3fd8297f5..ffde53573 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/CatalogPostgresqlTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.catalog; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java index b3a6aef9a..e067c19b2 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/catalog/MiwSsiCatalogTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.catalog; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java index 30b70b1ba..4a2a8164e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractDeleteEdrTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java index d4caf4239..1756a1f82 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractNegotiateEdrTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java index 304f27535..14a673495 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/AbstractRenewalEdrTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java index 52b287759..4e1c606b1 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java index 6ea18dc3e..e86adb03a 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/DeleteEdrPostgresqlTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java index 9dc4b6723..8f7dd70a7 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java index 7d9198230..59de6d7dc 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlHashicorpVaultTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java index 363500b04..671298b12 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/NegotiateEdrPostgresqlTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java index 460d26165..ae0b7df87 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java index a4f3d3c09..0f8d81584 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/RenewalEdrPostgresqlTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java index 7e1938df6..64a99c5eb 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/edr/TestFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.edr; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java index d574d3e15..d0d4ade4e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.negotiation; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java index f4986b4ef..2fb8a50f2 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/SsiContractNegotiationInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.negotiation; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java index 25daa5fec..fbad57b4c 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/AbstractPolicyMonitorTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.policy; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java index 5829c3409..e1f353b4c 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.policy; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java index cd0b4b08d..b3bf139a1 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/policy/PolicyMonitorPostgresqlTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.policy; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java index 6453c7a81..f5f020bd3 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/AbstractDataPlaneProxyTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.proxy; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java index 9bc9eb938..66f959807 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.proxy; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java index 1911ed0f4..09cbc7db7 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/proxy/DataPlaneProxyPostgresqlTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.proxy; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java index e1256b844..9f33897de 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpConsumerPullWithProxyTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java index a875504d6..623d52256 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/AbstractHttpProviderPushTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java index 414476145..5f3f0d791 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyInMemoryTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java index 279d69f9f..a34768e88 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpConsumerPullWithProxyPostgresqlTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java index aae2e15af..037e189b7 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInMemoryTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java index 4d8ee5024..2c964aa5e 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/HttpProviderPushInPostgresqlTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java index 81a349dfc..fdd7bbdec 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java index d7ebe9096..1f196e239 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java index 571621598..ea0990363 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/SsiHttpConsumerPullWithProxyInMemoryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.transfer; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/KeycloakDispatcher.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/KeycloakDispatcher.java index 645f934a1..53240d078 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/KeycloakDispatcher.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/KeycloakDispatcher.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.token; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MiwDispatcher.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MiwDispatcher.java index 15ae67e4a..11bea53c9 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MiwDispatcher.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MiwDispatcher.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.token; diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java index 617b54161..caf733a0b 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/token/MockBpnIdentityService.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.token; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java index eaa9c9341..efdd58941 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureBlobHelper.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java index e862f26c4..ba23e280c 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/AzureToAzureTest.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java index 570987494..157599195 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/MultiCloudTest.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java index 99f25e42d..49d9efbb1 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/ParticipantRuntime.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java index bf4587265..896131a74 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/RuntimeConfig.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java index 8a398c3f8..976547dad 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/S3ToS3Test.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestConstants.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestConstants.java index c61fcb07c..34633f9be 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestConstants.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestConstants.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestFunctions.java b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestFunctions.java index e3ecbc58b..b062376f1 100644 --- a/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestFunctions.java +++ b/edc-tests/edc-dataplane/cloud-transfer-tests/src/test/java/org/eclipse/tractusx/edc/dataplane/transfer/test/TestFunctions.java @@ -1,23 +1,21 @@ -/* +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. * - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.transfer.test; diff --git a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/build.gradle.kts b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/build.gradle.kts index c9ead1762..7c4d4d89b 100644 --- a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/build.gradle.kts +++ b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/DpfProxyEndToEndTest.java b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/DpfProxyEndToEndTest.java index d20083c66..d98c663c2 100644 --- a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/DpfProxyEndToEndTest.java +++ b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/DpfProxyEndToEndTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.e2e; diff --git a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/EdrCacheSetup.java b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/EdrCacheSetup.java index e25045576..3fcb83976 100644 --- a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/EdrCacheSetup.java +++ b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/EdrCacheSetup.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.e2e; diff --git a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/KeyStoreSetup.java b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/KeyStoreSetup.java index b2d6da193..bbddb523b 100644 --- a/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/KeyStoreSetup.java +++ b/edc-tests/edc-dataplane/edc-dataplane-proxy-e2e/src/test/java/org/eclipse/tractusx/edc/dataplane/proxy/e2e/KeyStoreSetup.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.dataplane.proxy.e2e; diff --git a/edc-tests/miw-tests/build.gradle.kts b/edc-tests/miw-tests/build.gradle.kts index c27404b3a..85c1ea822 100644 --- a/edc-tests/miw-tests/build.gradle.kts +++ b/edc-tests/miw-tests/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` @@ -54,4 +59,4 @@ dependencies { // do not publish edcBuild { publish.set(false) -} \ No newline at end of file +} diff --git a/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java b/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java index 526469957..c3db731a4 100644 --- a/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java +++ b/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tag/MiwIntegrationTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tag; diff --git a/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tests/miw/WalletTest.java b/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tests/miw/WalletTest.java index b5d3b686a..bf3192c5d 100644 --- a/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tests/miw/WalletTest.java +++ b/edc-tests/miw-tests/src/test/java/org/eclipse/tractusx/edc/tests/miw/WalletTest.java @@ -1,16 +1,21 @@ -/* +/******************************************************************************** * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 - * - * SPDX-License-Identifier: Apache-2.0 + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.tests.miw; diff --git a/edc-tests/runtime/dataplane-cloud/build.gradle.kts b/edc-tests/runtime/dataplane-cloud/build.gradle.kts index 87a375f0a..2ebe40727 100644 --- a/edc-tests/runtime/dataplane-cloud/build.gradle.kts +++ b/edc-tests/runtime/dataplane-cloud/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/extensions/build.gradle.kts b/edc-tests/runtime/extensions/build.gradle.kts index 4295b2cd9..1a54ff9ca 100644 --- a/edc-tests/runtime/extensions/build.gradle.kts +++ b/edc-tests/runtime/extensions/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerEdrHandlerController.java b/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerEdrHandlerController.java index 5f443a865..c29c223a6 100644 --- a/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerEdrHandlerController.java +++ b/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerEdrHandlerController.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerServicesExtension.java b/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerServicesExtension.java index 401d54b7a..8be09e430 100644 --- a/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerServicesExtension.java +++ b/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/ConsumerServicesExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/VaultSeedExtension.java b/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/VaultSeedExtension.java index 72e4abe3e..61b5b4b4e 100644 --- a/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/VaultSeedExtension.java +++ b/edc-tests/runtime/extensions/src/main/java/org/eclipse/tractusx/edc/lifecycle/VaultSeedExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.lifecycle; diff --git a/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts b/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts index 7d9f89d0b..dc5b3ab80 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts +++ b/edc-tests/runtime/iatp/iatp-extensions/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java index e38b05f8a..061a73a05 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/CredentialsJsonLdExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java index 122f10d66..f37c7efbf 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapper.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java index c348ec368..c2f7268ee 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/TestAudienceMapperExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java index 859f01f85..2a5bd9a74 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/IdentityHubExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.ih; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java index 174be8ad6..a65434fc5 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/ih/TxScopeToCriterionTransformer.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.ih; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java index 6386d44b7..de45f5d0a 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/BaseCredentialEvaluationFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.policy; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java index 057f86b29..d3cfa820c 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/CredentialPolicyEvaluationExtension.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.policy; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java index 7794082ab..ef0e007c1 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/FrameworkCredentialEvaluationFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.policy; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java index 96930c304..ca5bdcda0 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/IdentityExtractor.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.policy; diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java index 711d06bbb..eca1c8315 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/java/org/eclipse/tractusx/edc/iatp/policy/MembershipCredentialEvaluationFunction.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iatp.policy; diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts index 620159baa..7f6363401 100644 --- a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts index 3c5fb41f8..00cc47b67 100644 --- a/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-sts/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts b/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts index 6a67086f2..fdadffe79 100644 --- a/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts +++ b/edc-tests/runtime/runtime-memory-ssi/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/runtime-memory/build.gradle.kts b/edc-tests/runtime/runtime-memory/build.gradle.kts index 0022efd34..a2cf6f64a 100644 --- a/edc-tests/runtime/runtime-memory/build.gradle.kts +++ b/edc-tests/runtime/runtime-memory/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts b/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts index f1e1beca2..692248c43 100644 --- a/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts +++ b/edc-tests/runtime/runtime-postgresql-hashicorp/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/edc-tests/runtime/runtime-postgresql/build.gradle.kts b/edc-tests/runtime/runtime-postgresql/build.gradle.kts index 32000816e..993e47481 100644 --- a/edc-tests/runtime/runtime-postgresql/build.gradle.kts +++ b/edc-tests/runtime/runtime-postgresql/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/resources/java.header b/resources/java.header new file mode 100644 index 000000000..aea312737 --- /dev/null +++ b/resources/java.header @@ -0,0 +1,20 @@ +^/\*{80}$ +^ \* Copyright \(c\) 20\d\d((,| -)20\d{2})? [A-Za-z].+\S$ +^ \*$ +^ \* See the NOTICE file\(s\) distributed with this work for additional$ +^ \* information regarding copyright ownership.$ +^ \*$ +^ \* This program and the accompanying materials are made available under the$ +^ \* terms of the Apache License, Version 2.0 which is available at$ +^ \* https://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\.$ +^ \*$ +^ \* SPDX-License-Identifier: Apache\-2\.0$ +^ \*{80}/$ +^$ +^package diff --git a/resources/tx-checkstyle-config.xml b/resources/tx-checkstyle-config.xml index cdce34857..0f6c4fdfe 100644 --- a/resources/tx-checkstyle-config.xml +++ b/resources/tx-checkstyle-config.xml @@ -45,14 +45,11 @@ - - - - - - - - + + + + + diff --git a/samples/multi-tenancy/build.gradle.kts b/samples/multi-tenancy/build.gradle.kts index 1da912fda..31239069d 100644 --- a/samples/multi-tenancy/build.gradle.kts +++ b/samples/multi-tenancy/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java b/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java index b9ddbec27..d7ac26513 100644 --- a/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java +++ b/samples/multi-tenancy/src/main/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntime.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2022 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - Initial implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.samples.multitenancy; diff --git a/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java b/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java index 5cd49157e..2e9e1e9d4 100644 --- a/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java +++ b/samples/multi-tenancy/src/test/java/org/eclipse/tractusx/edc/samples/multitenancy/MultiTenantRuntimeTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2022 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2022 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - Initial implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.samples.multitenancy; diff --git a/settings.gradle.kts b/settings.gradle.kts index 3a97f581c..230dd6082 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,7 +6,7 @@ * * This program and the accompanying materials are made available under the * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * https://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 diff --git a/spi/callback-spi/build.gradle.kts b/spi/callback-spi/build.gradle.kts index 2ef0f4051..4c0ea2fb7 100644 --- a/spi/callback-spi/build.gradle.kts +++ b/spi/callback-spi/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallback.java b/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallback.java index e7648161b..4528daca0 100644 --- a/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallback.java +++ b/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallback.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.spi.callback; diff --git a/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallbackRegistry.java b/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallbackRegistry.java index 32868b011..6cffe8d46 100644 --- a/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallbackRegistry.java +++ b/spi/callback-spi/src/main/java/org/eclipse/tractusx/edc/spi/callback/InProcessCallbackRegistry.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.spi.callback; diff --git a/spi/core-spi/build.gradle.kts b/spi/core-spi/build.gradle.kts index 75b96d9ae..3da2bef5e 100644 --- a/spi/core-spi/build.gradle.kts +++ b/spi/core-spi/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java b/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java index e6e2c2932..d3448b178 100644 --- a/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java +++ b/spi/core-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/CoreConstants.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi; diff --git a/spi/edr-spi/build.gradle.kts b/spi/edr-spi/build.gradle.kts index 168049a33..2ac7abdf0 100644 --- a/spi/edr-spi/build.gradle.kts +++ b/spi/edr-spi/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/EdrManager.java b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/EdrManager.java index 42e68139b..51960cefb 100644 --- a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/EdrManager.java +++ b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/EdrManager.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi; diff --git a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/service/EdrService.java b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/service/EdrService.java index 10bcc5754..25417637c 100644 --- a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/service/EdrService.java +++ b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/service/EdrService.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi.service; diff --git a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/store/EndpointDataReferenceCache.java b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/store/EndpointDataReferenceCache.java index 9dd5030a0..f1f4496f5 100644 --- a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/store/EndpointDataReferenceCache.java +++ b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/store/EndpointDataReferenceCache.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi.store; diff --git a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntry.java b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntry.java index a54026fe9..3c3736867 100644 --- a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntry.java +++ b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntry.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi.types; diff --git a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntryStates.java b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntryStates.java index 5abf02697..ebb13cad5 100644 --- a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntryStates.java +++ b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/EndpointDataReferenceEntryStates.java @@ -1,18 +1,21 @@ -/* - * Copyright (c) 2021 - 2022 Microsoft Corporation +/******************************************************************************** + * Copyright (c) 2021,2022 Microsoft Corporation * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Microsoft Corporation - initial API and implementation - * Fraunhofer Institute for Software and Systems Engineering - minor modifications - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - improvements + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi.types; diff --git a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/NegotiateEdrRequest.java b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/NegotiateEdrRequest.java index aabc0fa74..71cc862f4 100644 --- a/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/NegotiateEdrRequest.java +++ b/spi/edr-spi/src/main/java/org/eclipse/tractusx/edc/edr/spi/types/NegotiateEdrRequest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi.types; diff --git a/spi/edr-spi/src/test/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceEntryTest.java b/spi/edr-spi/src/test/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceEntryTest.java index 7095d3713..a58c074b7 100644 --- a/spi/edr-spi/src/test/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceEntryTest.java +++ b/spi/edr-spi/src/test/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceEntryTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi; diff --git a/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheTestBase.java b/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheTestBase.java index 39bb5c793..44decab32 100644 --- a/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheTestBase.java +++ b/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/EndpointDataReferenceCacheTestBase.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi; diff --git a/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/TestFunctions.java b/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/TestFunctions.java index b1b589f8b..00312f669 100644 --- a/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/TestFunctions.java +++ b/spi/edr-spi/src/testFixtures/java/org/eclipse/tractusx/edc/edr/spi/TestFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.edr.spi; diff --git a/spi/ssi-spi/build.gradle.kts b/spi/ssi-spi/build.gradle.kts index 9285390e3..67ffc3c4a 100644 --- a/spi/ssi-spi/build.gradle.kts +++ b/spi/ssi-spi/build.gradle.kts @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ plugins { `java-library` diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java index a09d52d85..87d1896b4 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiConstants.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi; diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiCredentialClient.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiCredentialClient.java index 44e8313de..e422455f6 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiCredentialClient.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiCredentialClient.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi; diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java index 9ffafd6e7..05f3a6a7b 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/SsiTokenValidationService.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi; diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/CredentialsNamespaces.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/CredentialsNamespaces.java index ecac8fc7a..dee293b0d 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/CredentialsNamespaces.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/CredentialsNamespaces.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractor.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractor.java index 12cae7254..1d9e6df46 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractor.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractor.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctions.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctions.java index a77f8eff1..e3b5f80d0 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctions.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctions.java b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctions.java index 3d976ae07..e0abefdc7 100644 --- a/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctions.java +++ b/spi/ssi-spi/src/main/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctions.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractorTest.java b/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractorTest.java index b994057c2..9e7cb3b66 100644 --- a/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractorTest.java +++ b/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdFieldExtractorTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctionsTest.java b/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctionsTest.java index 7aed90107..a8acea1a9 100644 --- a/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctionsTest.java +++ b/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTypeFunctionsTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctionsTest.java b/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctionsTest.java index a79d59b06..d1e0ff98c 100644 --- a/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctionsTest.java +++ b/spi/ssi-spi/src/test/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdValueFunctionsTest.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTextFixtures.java b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTextFixtures.java index 10b3ab552..cfe9216d3 100644 --- a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTextFixtures.java +++ b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/JsonLdTextFixtures.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryContext.java b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryContext.java index 245d96722..2b8d33063 100644 --- a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryContext.java +++ b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryContext.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java index f04b00b48..66266823b 100644 --- a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java +++ b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/SummaryCredential.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; diff --git a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/W3cVcContext.java b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/W3cVcContext.java index f84193b7e..4df64ba35 100644 --- a/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/W3cVcContext.java +++ b/spi/ssi-spi/src/testFixtures/java/org/eclipse/tractusx/edc/iam/ssi/spi/jsonld/W3cVcContext.java @@ -1,16 +1,21 @@ -/* - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0 + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. * - * SPDX-License-Identifier: Apache-2.0 + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. * - * Contributors: - * Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation + * 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. * - */ + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.edc.iam.ssi.spi.jsonld; From c3ddaba52ece1acbae9e897f2e431a61c2df4091 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Wed, 7 Feb 2024 11:11:03 +0100 Subject: [PATCH 72/83] remove property --- build.gradle.kts | 20 ++++++++++++++----- edc-controlplane/build.gradle.kts | 2 +- .../edc-controlplane-base/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../edc-runtime-memory/build.gradle.kts | 2 +- edc-dataplane/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../edc-dataplane-base/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../bpn-validation-core/build.gradle.kts | 2 +- .../bpn-validation-spi/build.gradle.kts | 2 +- .../bpn-validation/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- edc-extensions/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../postgresql-migration/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../ssi/jws2020-crypto-suite/build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- .../build.gradle.kts | 2 +- resources/tx-checkstyle-config.xml | 2 -- settings.gradle.kts | 2 +- 24 files changed, 37 insertions(+), 29 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index ecf5d553a..b3e8a37fb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,13 +15,15 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage import com.github.jengelman.gradle.plugins.shadow.ShadowJavaPlugin +import org.gradle.kotlin.dsl.provider.inClassPathMode import java.time.Duration plugins { + checkstyle `java-library` `maven-publish` `jacoco-report-aggregation` @@ -109,11 +111,18 @@ allprojects { configFile = rootProject.file("resources/tx-checkstyle-config.xml") configDirectory.set(rootProject.file("resources")) + tasks.checkstyleMain { + this.source = project.sourceSets.getByName("main").allSource + } + + tasks.checkstyleTest { + this.source = project.sourceSets.getByName("test").allSource + } + //checkstyle violations are reported at the WARN level this.isShowViolations = System.getProperty("checkstyle.verbose", "true").toBoolean() } - // publishing to OSSRH is handled by the build plugin, but publishing to GH packages // must be configured separately publishing { @@ -144,8 +153,9 @@ subprojects { if (project.plugins.hasPlugin("com.github.johnrengelman.shadow") && file("${project.projectDir}/src/main/docker/Dockerfile").exists() ) { + val buildDir = project.layout.buildDirectory.get().asFile - val agentFile = project.buildDir.resolve("opentelemetry-javaagent.jar") + val agentFile = buildDir.resolve("opentelemetry-javaagent.jar") // create task to download the opentelemetry agent val openTelemetryAgentUrl = "https://github.com/open-telemetry/opentelemetry-java-instrumentation/releases/download/v1.32.0/opentelemetry-javaagent.jar" val downloadOtel = tasks.create("downloadOtel") { @@ -155,7 +165,7 @@ subprojects { } // this task could be the first in the graph, so "build/" may not yet exist. Let's be defensive doFirst { - project.buildDir.mkdirs() + buildDir.mkdirs() } // download the jar file doLast { @@ -173,7 +183,7 @@ subprojects { // this task copies some legal docs into the build folder, so we can easily copy them into the docker images val copyLegalDocs = tasks.create("copyLegalDocs", Copy::class) { from(project.rootProject.projectDir) - into("${project.buildDir}/legal") + into("${buildDir}/legal") include("SECURITY.md", "NOTICE.md", "DEPENDENCIES", "LICENSE") dependsOn(tasks.named(ShadowJavaPlugin.SHADOW_JAR_TASK_NAME)) } diff --git a/edc-controlplane/build.gradle.kts b/edc-controlplane/build.gradle.kts index 0eb12e33b..9e901172f 100644 --- a/edc-controlplane/build.gradle.kts +++ b/edc-controlplane/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-controlplane/edc-controlplane-base/build.gradle.kts b/edc-controlplane/edc-controlplane-base/build.gradle.kts index 85eead488..fd7a31c80 100644 --- a/edc-controlplane/edc-controlplane-base/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-base/build.gradle.kts @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts b/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts index 7c69d28a2..78a4c2022 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/build.gradle.kts @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts index 5295fafc7..8c8c7cefa 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/build.gradle.kts @@ -16,7 +16,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar diff --git a/edc-controlplane/edc-runtime-memory/build.gradle.kts b/edc-controlplane/edc-runtime-memory/build.gradle.kts index 04c936024..c5491e8b3 100644 --- a/edc-controlplane/edc-runtime-memory/build.gradle.kts +++ b/edc-controlplane/edc-runtime-memory/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-dataplane/build.gradle.kts b/edc-dataplane/build.gradle.kts index dc5814dce..4389a99cf 100644 --- a/edc-dataplane/build.gradle.kts +++ b/edc-dataplane/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts index 4159fc0eb..0172e73d0 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-azure-vault/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-dataplane/edc-dataplane-base/build.gradle.kts b/edc-dataplane/edc-dataplane-base/build.gradle.kts index bc6bac2e3..f7b498f74 100644 --- a/edc-dataplane/edc-dataplane-base/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-base/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts b/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts index 975956f36..63063b271 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts index 2a4c7226f..463660342 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts +++ b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts index af7a94ab8..a40e19ec3 100644 --- a/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts +++ b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/bpn-validation/build.gradle.kts b/edc-extensions/bpn-validation/build.gradle.kts index 335f1cd16..f4d82e271 100644 --- a/edc-extensions/bpn-validation/build.gradle.kts +++ b/edc-extensions/bpn-validation/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts b/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts index 0f0c87646..eba92d316 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts +++ b/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/build.gradle.kts b/edc-extensions/build.gradle.kts index 475444229..d6b1be67f 100644 --- a/edc-extensions/build.gradle.kts +++ b/edc-extensions/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` diff --git a/edc-extensions/dataplane-selector-configuration/build.gradle.kts b/edc-extensions/dataplane-selector-configuration/build.gradle.kts index 133bd88c3..185d46b59 100644 --- a/edc-extensions/dataplane-selector-configuration/build.gradle.kts +++ b/edc-extensions/dataplane-selector-configuration/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `maven-publish` diff --git a/edc-extensions/postgresql-migration/build.gradle.kts b/edc-extensions/postgresql-migration/build.gradle.kts index 027679f1e..22f26a7c2 100644 --- a/edc-extensions/postgresql-migration/build.gradle.kts +++ b/edc-extensions/postgresql-migration/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `maven-publish` diff --git a/edc-extensions/provision-additional-headers/build.gradle.kts b/edc-extensions/provision-additional-headers/build.gradle.kts index a15240789..7eccfd232 100644 --- a/edc-extensions/provision-additional-headers/build.gradle.kts +++ b/edc-extensions/provision-additional-headers/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `maven-publish` diff --git a/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts b/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts index e64ad023a..25602c5de 100644 --- a/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts +++ b/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `java-library` } diff --git a/edc-extensions/transferprocess-sftp-client/build.gradle.kts b/edc-extensions/transferprocess-sftp-client/build.gradle.kts index a552c7e94..67501fb0d 100644 --- a/edc-extensions/transferprocess-sftp-client/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-client/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `maven-publish` diff --git a/edc-extensions/transferprocess-sftp-common/build.gradle.kts b/edc-extensions/transferprocess-sftp-common/build.gradle.kts index e7afd6b5e..1448161c5 100644 --- a/edc-extensions/transferprocess-sftp-common/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-common/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `maven-publish` diff --git a/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts b/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts index 86379217c..67b6aee63 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts +++ b/edc-extensions/transferprocess-sftp-provisioner/build.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ plugins { `maven-publish` diff --git a/resources/tx-checkstyle-config.xml b/resources/tx-checkstyle-config.xml index 0f6c4fdfe..5c2258ca4 100644 --- a/resources/tx-checkstyle-config.xml +++ b/resources/tx-checkstyle-config.xml @@ -18,10 +18,8 @@ - - diff --git a/settings.gradle.kts b/settings.gradle.kts index 230dd6082..b6630d82e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,7 +15,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - */ + ********************************************************************************/ rootProject.name = "tractusx-edc" From eb334b29acc3b040629b1c3efa85b580fc793c4c Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Wed, 7 Feb 2024 14:54:13 +0100 Subject: [PATCH 73/83] check service extension headers --- .github/actions/import-gpg-key/action.yml | 7 ++++--- .../actions/publish-docker-image/action.yml | 9 +++++---- .../actions/run-deployment-test/action.yml | 7 ++++--- .github/actions/setup-java/action.yml | 7 ++++--- .github/dependabot.yml | 7 ++++--- .github/release.yaml | 9 +++++---- .github/workflows/deployment-test.yaml | 7 ++++--- .github/workflows/draft-new-release.yaml | 7 ++++--- .github/workflows/helm-lint.yaml | 7 ++++--- .github/workflows/kics.yml | 7 ++++--- .github/workflows/publish-docker.yaml | 7 ++++--- .github/workflows/publish-maven.yaml | 7 ++++--- .github/workflows/publish-new-release.yml | 7 ++++--- .github/workflows/publish-swaggerhub.yaml | 7 ++++--- .github/workflows/publish.yaml | 7 ++++--- .github/workflows/run-all-tests.yml | 7 ++++--- .github/workflows/stale-bot.yml | 7 ++++--- .github/workflows/trivy.yml | 7 ++++--- .github/workflows/upgradeability-test.yaml | 9 +++++---- .github/workflows/veracode.yaml | 7 ++++--- .github/workflows/verify.yaml | 7 ++++--- chart_schema.yaml | 7 ++++--- .../tractusx-connector-azure-vault/Chart.yaml | 7 ++++--- .../templates/configmap-controlplane.yaml | 7 ++++--- .../templates/deployment-dataplane.yaml | 7 ++++--- .../templates/service-controlplane.yaml | 7 ++++--- .../templates/serviceaccount.yaml | 7 ++++--- .../values.yaml | 7 ++++--- charts/tractusx-connector-memory/Chart.yaml | 7 ++++--- .../templates/configmap-runtime.yaml | 7 ++++--- .../templates/hpa-runtime.yaml | 7 ++++--- .../templates/ingress-runtime.yaml | 7 ++++--- .../templates/serviceaccount.yaml | 7 ++++--- charts/tractusx-connector-memory/values.yaml | 7 ++++--- charts/tractusx-connector/Chart.yaml | 7 ++++--- .../templates/configmap-controlplane.yaml | 7 ++++--- .../templates/configmap-customcacerts.yaml | 7 ++++--- .../templates/configmap-dataplane.yaml | 7 ++++--- .../templates/deployment-dataplane.yaml | 7 ++++--- .../templates/hpa-controlplane.yaml | 7 ++++--- .../templates/hpa-dataplane.yaml | 7 ++++--- .../templates/ingress-controlplane.yaml | 7 ++++--- .../templates/ingress-dataplane.yaml | 7 ++++--- .../templates/networkpolicy.yaml | 7 ++++--- .../templates/service-controlplane.yaml | 7 ++++--- .../templates/service-dataplane.yaml | 7 ++++--- .../templates/serviceaccount.yaml | 7 ++++--- charts/tractusx-connector/values.yaml | 7 ++++--- checkov.yaml | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 9 +++++---- ct.yaml | 7 ++++--- .../src/main/docker/Dockerfile | 7 ++++--- .../src/main/docker/Dockerfile | 7 ++++--- .../src/main/docker/Dockerfile | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- .../src/main/docker/Dockerfile | 7 ++++--- .../src/main/docker/Dockerfile | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 9 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 9 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 8 +++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 9 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 9 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 7 ++++--- .../tractusx-connector-azure-vault-test.yaml | 7 ++++--- .../helm/tractusx-connector-memory-test.yaml | 7 ++++--- .../helm/tractusx-connector-test.yaml | 7 ++++--- .../docker-environment/docker-compose.yaml | 5 +++-- lintconf.yaml | 7 ++++--- resources/serviceextension.header | 19 +++++++++++++++++++ resources/tx-checkstyle-config.xml | 6 ++++++ 83 files changed, 357 insertions(+), 250 deletions(-) create mode 100644 resources/serviceextension.header diff --git a/.github/actions/import-gpg-key/action.yml b/.github/actions/import-gpg-key/action.yml index ac2782601..c76e7024a 100644 --- a/.github/actions/import-gpg-key/action.yml +++ b/.github/actions/import-gpg-key/action.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Import GPG Key" diff --git a/.github/actions/publish-docker-image/action.yml b/.github/actions/publish-docker-image/action.yml index 4a887293f..bf2e274ac 100644 --- a/.github/actions/publish-docker-image/action.yml +++ b/.github/actions/publish-docker-image/action.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Publish Docker Image" @@ -120,4 +121,4 @@ runs: readme-filepath: ${{ inputs.rootDir }}/notice.md username: ${{ inputs.docker_user }} password: ${{ inputs.docker_token }} - repository: ${{ inputs.namespace }}/${{ inputs.imagename }} \ No newline at end of file + repository: ${{ inputs.namespace }}/${{ inputs.imagename }} diff --git a/.github/actions/run-deployment-test/action.yml b/.github/actions/run-deployment-test/action.yml index d1cef754e..aebe8c38a 100644 --- a/.github/actions/run-deployment-test/action.yml +++ b/.github/actions/run-deployment-test/action.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Run Deployment Test" diff --git a/.github/actions/setup-java/action.yml b/.github/actions/setup-java/action.yml index 530d3d6ac..76fe240d4 100644 --- a/.github/actions/setup-java/action.yml +++ b/.github/actions/setup-java/action.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Setup JDK 17" diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 79b5d3173..c3d95499d 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- version: 2 diff --git a/.github/release.yaml b/.github/release.yaml index 1caf62f14..834bb1ca6 100644 --- a/.github/release.yaml +++ b/.github/release.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- changelog: @@ -31,4 +32,4 @@ changelog: - "*" - title: Documentation labels: - - documentation \ No newline at end of file + - documentation diff --git a/.github/workflows/deployment-test.yaml b/.github/workflows/deployment-test.yaml index 61d058aea..4bfabb800 100644 --- a/.github/workflows/deployment-test.yaml +++ b/.github/workflows/deployment-test.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Deployment Tests" diff --git a/.github/workflows/draft-new-release.yaml b/.github/workflows/draft-new-release.yaml index 69e971b9c..e89941cde 100644 --- a/.github/workflows/draft-new-release.yaml +++ b/.github/workflows/draft-new-release.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Draft new release" diff --git a/.github/workflows/helm-lint.yaml b/.github/workflows/helm-lint.yaml index 49a746321..157beb2cf 100644 --- a/.github/workflows/helm-lint.yaml +++ b/.github/workflows/helm-lint.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Lint helm charts" diff --git a/.github/workflows/kics.yml b/.github/workflows/kics.yml index 64c65eddc..8c6f0113e 100644 --- a/.github/workflows/kics.yml +++ b/.github/workflows/kics.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "KICS" diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml index 8d5162142..6158103ad 100644 --- a/.github/workflows/publish-docker.yaml +++ b/.github/workflows/publish-docker.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Create Docker images" diff --git a/.github/workflows/publish-maven.yaml b/.github/workflows/publish-maven.yaml index f146aad35..1b0aa22ae 100644 --- a/.github/workflows/publish-maven.yaml +++ b/.github/workflows/publish-maven.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Manually publish Maven Artefacts to OSSRH" diff --git a/.github/workflows/publish-new-release.yml b/.github/workflows/publish-new-release.yml index 22a0b4256..fd5ba9674 100644 --- a/.github/workflows/publish-new-release.yml +++ b/.github/workflows/publish-new-release.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Publish new release" diff --git a/.github/workflows/publish-swaggerhub.yaml b/.github/workflows/publish-swaggerhub.yaml index c0f21b627..afe360dee 100644 --- a/.github/workflows/publish-swaggerhub.yaml +++ b/.github/workflows/publish-swaggerhub.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Publish OpenAPI to Swaggerhub" diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 4cc7693b5..db4212713 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Publish Artefacts" diff --git a/.github/workflows/run-all-tests.yml b/.github/workflows/run-all-tests.yml index 6e22d7bc7..2f02fdb87 100644 --- a/.github/workflows/run-all-tests.yml +++ b/.github/workflows/run-all-tests.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- ## This is a master test workflow that runs the verify.yaml workflow and the deployment-test.yaml workflow diff --git a/.github/workflows/stale-bot.yml b/.github/workflows/stale-bot.yml index 38a9daecf..fe2c9d3cc 100644 --- a/.github/workflows/stale-bot.yml +++ b/.github/workflows/stale-bot.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index 4d8075457..faa1c1eb3 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Trivy" diff --git a/.github/workflows/upgradeability-test.yaml b/.github/workflows/upgradeability-test.yaml index 83dca6d82..4aba43bcc 100644 --- a/.github/workflows/upgradeability-test.yaml +++ b/.github/workflows/upgradeability-test.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Upgradeability Tests" @@ -122,4 +123,4 @@ jobs: if: always() shell: bash run: >- - kind get clusters | xargs -n1 kind delete cluster --name \ No newline at end of file + kind get clusters | xargs -n1 kind delete cluster --name diff --git a/.github/workflows/veracode.yaml b/.github/workflows/veracode.yaml index 87200a6fc..8ba705009 100644 --- a/.github/workflows/veracode.yaml +++ b/.github/workflows/veracode.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Veracode" diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 427c32ff0..4a93b0cf9 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: "Verify" diff --git a/chart_schema.yaml b/chart_schema.yaml index 13d62dee7..3fe9a48ee 100644 --- a/chart_schema.yaml +++ b/chart_schema.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- name: str() diff --git a/charts/tractusx-connector-azure-vault/Chart.yaml b/charts/tractusx-connector-azure-vault/Chart.yaml index 9fedad334..76712e4be 100644 --- a/charts/tractusx-connector-azure-vault/Chart.yaml +++ b/charts/tractusx-connector-azure-vault/Chart.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v2 diff --git a/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml index 42f2a493f..bad2597c9 100644 --- a/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml index 604b7e8a3..12486cc88 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: apps/v1 diff --git a/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml index 277e9d707..cf9afe695 100644 --- a/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector-azure-vault/templates/serviceaccount.yaml b/charts/tractusx-connector-azure-vault/templates/serviceaccount.yaml index fad069665..4ac3334f8 100644 --- a/charts/tractusx-connector-azure-vault/templates/serviceaccount.yaml +++ b/charts/tractusx-connector-azure-vault/templates/serviceaccount.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.serviceAccount.create -}} --- diff --git a/charts/tractusx-connector-azure-vault/values.yaml b/charts/tractusx-connector-azure-vault/values.yaml index 81e9784b8..b45e21728 100644 --- a/charts/tractusx-connector-azure-vault/values.yaml +++ b/charts/tractusx-connector-azure-vault/values.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- diff --git a/charts/tractusx-connector-memory/Chart.yaml b/charts/tractusx-connector-memory/Chart.yaml index fd3fc7181..490b17399 100644 --- a/charts/tractusx-connector-memory/Chart.yaml +++ b/charts/tractusx-connector-memory/Chart.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v2 diff --git a/charts/tractusx-connector-memory/templates/configmap-runtime.yaml b/charts/tractusx-connector-memory/templates/configmap-runtime.yaml index eddd69c55..f80aabf4e 100644 --- a/charts/tractusx-connector-memory/templates/configmap-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/configmap-runtime.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector-memory/templates/hpa-runtime.yaml b/charts/tractusx-connector-memory/templates/hpa-runtime.yaml index 2cce3c6f2..871e9e5c1 100644 --- a/charts/tractusx-connector-memory/templates/hpa-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/hpa-runtime.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.runtime.autoscaling.enabled }} --- diff --git a/charts/tractusx-connector-memory/templates/ingress-runtime.yaml b/charts/tractusx-connector-memory/templates/ingress-runtime.yaml index 48ce33b8c..e3aa9f22d 100644 --- a/charts/tractusx-connector-memory/templates/ingress-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/ingress-runtime.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- $fullName := include "txdc.fullname" . }} {{- $controlLabels := include "txdc.runtime.labels" . }} diff --git a/charts/tractusx-connector-memory/templates/serviceaccount.yaml b/charts/tractusx-connector-memory/templates/serviceaccount.yaml index 4a6e1ac07..a13980423 100644 --- a/charts/tractusx-connector-memory/templates/serviceaccount.yaml +++ b/charts/tractusx-connector-memory/templates/serviceaccount.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.serviceAccount.create -}} --- diff --git a/charts/tractusx-connector-memory/values.yaml b/charts/tractusx-connector-memory/values.yaml index c72ab13ae..d749a3478 100644 --- a/charts/tractusx-connector-memory/values.yaml +++ b/charts/tractusx-connector-memory/values.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- # Default values for eclipse-dataspace-connector. diff --git a/charts/tractusx-connector/Chart.yaml b/charts/tractusx-connector/Chart.yaml index e42b30ff9..f6e396c95 100644 --- a/charts/tractusx-connector/Chart.yaml +++ b/charts/tractusx-connector/Chart.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v2 diff --git a/charts/tractusx-connector/templates/configmap-controlplane.yaml b/charts/tractusx-connector/templates/configmap-controlplane.yaml index 42f2a493f..bad2597c9 100644 --- a/charts/tractusx-connector/templates/configmap-controlplane.yaml +++ b/charts/tractusx-connector/templates/configmap-controlplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector/templates/configmap-customcacerts.yaml b/charts/tractusx-connector/templates/configmap-customcacerts.yaml index 2a6912957..3d1eff0d9 100644 --- a/charts/tractusx-connector/templates/configmap-customcacerts.yaml +++ b/charts/tractusx-connector/templates/configmap-customcacerts.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.customCaCerts }} --- apiVersion: v1 diff --git a/charts/tractusx-connector/templates/configmap-dataplane.yaml b/charts/tractusx-connector/templates/configmap-dataplane.yaml index 87fd401c3..37d25f8e8 100644 --- a/charts/tractusx-connector/templates/configmap-dataplane.yaml +++ b/charts/tractusx-connector/templates/configmap-dataplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector/templates/deployment-dataplane.yaml b/charts/tractusx-connector/templates/deployment-dataplane.yaml index 2abd8ced4..db6ea94a0 100644 --- a/charts/tractusx-connector/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector/templates/deployment-dataplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: apps/v1 diff --git a/charts/tractusx-connector/templates/hpa-controlplane.yaml b/charts/tractusx-connector/templates/hpa-controlplane.yaml index c52ed9152..d54cf61c9 100644 --- a/charts/tractusx-connector/templates/hpa-controlplane.yaml +++ b/charts/tractusx-connector/templates/hpa-controlplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.controlplane.autoscaling.enabled }} --- diff --git a/charts/tractusx-connector/templates/hpa-dataplane.yaml b/charts/tractusx-connector/templates/hpa-dataplane.yaml index 519c0e526..c5980c67f 100644 --- a/charts/tractusx-connector/templates/hpa-dataplane.yaml +++ b/charts/tractusx-connector/templates/hpa-dataplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.controlplane.autoscaling.enabled }} --- diff --git a/charts/tractusx-connector/templates/ingress-controlplane.yaml b/charts/tractusx-connector/templates/ingress-controlplane.yaml index abc90106e..3a845a8ae 100644 --- a/charts/tractusx-connector/templates/ingress-controlplane.yaml +++ b/charts/tractusx-connector/templates/ingress-controlplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- $fullName := include "txdc.fullname" . }} {{- $controlLabels := include "txdc.controlplane.labels" . }} diff --git a/charts/tractusx-connector/templates/ingress-dataplane.yaml b/charts/tractusx-connector/templates/ingress-dataplane.yaml index 4777a55d4..ce854ee41 100644 --- a/charts/tractusx-connector/templates/ingress-dataplane.yaml +++ b/charts/tractusx-connector/templates/ingress-dataplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- $fullName := include "txdc.fullname" . }} {{- $dataLabels := include "txdc.dataplane.labels" . }} diff --git a/charts/tractusx-connector/templates/networkpolicy.yaml b/charts/tractusx-connector/templates/networkpolicy.yaml index 7a40cb6a3..890414678 100644 --- a/charts/tractusx-connector/templates/networkpolicy.yaml +++ b/charts/tractusx-connector/templates/networkpolicy.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if eq (.Values.networkPolicy.enabled | toString) "true" }} {{- range tuple "controlplane" "dataplane" }} diff --git a/charts/tractusx-connector/templates/service-controlplane.yaml b/charts/tractusx-connector/templates/service-controlplane.yaml index 277e9d707..cf9afe695 100644 --- a/charts/tractusx-connector/templates/service-controlplane.yaml +++ b/charts/tractusx-connector/templates/service-controlplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector/templates/service-dataplane.yaml b/charts/tractusx-connector/templates/service-dataplane.yaml index def4e9811..cb205c635 100644 --- a/charts/tractusx-connector/templates/service-dataplane.yaml +++ b/charts/tractusx-connector/templates/service-dataplane.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- apiVersion: v1 diff --git a/charts/tractusx-connector/templates/serviceaccount.yaml b/charts/tractusx-connector/templates/serviceaccount.yaml index 4a6e1ac07..a13980423 100644 --- a/charts/tractusx-connector/templates/serviceaccount.yaml +++ b/charts/tractusx-connector/templates/serviceaccount.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + {{- if .Values.serviceAccount.create -}} --- diff --git a/charts/tractusx-connector/values.yaml b/charts/tractusx-connector/values.yaml index 82acff63c..7cac337a8 100644 --- a/charts/tractusx-connector/values.yaml +++ b/charts/tractusx-connector/values.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- diff --git a/checkov.yaml b/checkov.yaml index 7c2360c6b..f70a2decd 100644 --- a/checkov.yaml +++ b/checkov.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- skip-check: diff --git a/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 67f4a6027..0f4a83ee2 100644 --- a/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index e2c97c798..5283c5a45 100644 --- a/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index b427bdb0b..4a7baa309 100644 --- a/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,15 +1,16 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # # -org.eclipse.tractusx.edc.jsonld.JsonLdExtension \ No newline at end of file +org.eclipse.tractusx.edc.jsonld.JsonLdExtension diff --git a/ct.yaml b/ct.yaml index 77a3b465a..57b8ffa71 100644 --- a/ct.yaml +++ b/ct.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- validate-maintainers: false diff --git a/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile index d01776c49..472d1ec68 100644 --- a/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-controlplane-postgresql-azure-vault/src/main/docker/Dockerfile @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2022,2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation @@ -8,7 +8,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -17,7 +17,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG OTEL_JAR diff --git a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile index 418eec1f7..9a5000861 100644 --- a/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-controlplane-postgresql-hashicorp-vault/src/main/docker/Dockerfile @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2022,2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation @@ -8,7 +8,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -17,7 +17,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR diff --git a/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile b/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile index 8c93d6a28..136f0f4df 100644 --- a/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile +++ b/edc-controlplane/edc-runtime-memory/src/main/docker/Dockerfile @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2022,2023 Mercedes-Benz Tech Innovation GmbH @@ -9,7 +9,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -18,7 +18,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR diff --git a/edc-controlplane/edc-runtime-memory/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-controlplane/edc-runtime-memory/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 59e5aeac1..c39ec879f 100644 --- a/edc-controlplane/edc-runtime-memory/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-controlplane/edc-runtime-memory/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,6 +16,7 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + org.eclipse.tractusx.edc.vault.memory.VaultSeedExtension diff --git a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile index 68c730258..ca47ef4a6 100644 --- a/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile +++ b/edc-dataplane/edc-dataplane-azure-vault/src/main/docker/Dockerfile @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2022,2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation @@ -8,7 +8,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -17,7 +17,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR ARG OTEL_JAR diff --git a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile index 5e42900a9..2d0e41b11 100644 --- a/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile +++ b/edc-dataplane/edc-dataplane-hashicorp-vault/src/main/docker/Dockerfile @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2022,2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation @@ -8,7 +8,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -17,7 +17,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + FROM eclipse-temurin:21.0.2_13-jre-alpine ARG JAR diff --git a/edc-extensions/bpn-validation/bpn-validation-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/bpn-validation/bpn-validation-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index bb54cf2b2..fa5236b23 100644 --- a/edc-extensions/bpn-validation/bpn-validation-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,5 +16,6 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# -org.eclipse.tractusx.edc.api.bpn.BusinessPartnerGroupApiExtension \ No newline at end of file +################################################################################# + +org.eclipse.tractusx.edc.api.bpn.BusinessPartnerGroupApiExtension diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/bpn-validation/bpn-validation-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 80602ce92..e741abd6a 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + org.eclipse.tractusx.edc.validation.businesspartner.BusinessPartnerValidationExtension org.eclipse.tractusx.edc.validation.businesspartner.defaults.DefaultStoreProviderExtension org.eclipse.tractusx.edc.validation.businesspartner.LegacyBusinessPartnerValidationExtension diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index eae3fe7cb..bf4d34696 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,5 +16,6 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + org.eclipse.tractusx.edc.validation.businesspartner.store.SqlBusinessPartnerGroupStoreExtension diff --git a/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index eeb06425e..946240dd6 100644 --- a/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 0eba76af1..19b030723 100644 --- a/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/edc-extensions/dataplane-selector-configuration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/dataplane-selector-configuration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 7abfadd3c..f5c6a6e5c 100644 --- a/edc-extensions/dataplane-selector-configuration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/dataplane-selector-configuration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,6 +16,7 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + org.eclipse.tractusx.edc.dataplane.selector.configuration.DataPlaneSelectorConfigurationServiceExtension diff --git a/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 35dd325ee..49bee9eac 100644 --- a/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 8405d9959..5b607a3e9 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,15 +1,16 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # # -org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCacheExtension \ No newline at end of file +org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCacheExtension diff --git a/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index aa0b83674..c5be405d9 100644 --- a/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 31005a423..09a7e2c69 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index aaa4c53b0..8215b53a4 100644 --- a/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,9 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# +################################################################################ + org.eclipse.tractusx.edc.postgresql.migration.AssetPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.ContractDefinitionPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.ContractNegotiationPostgresqlMigrationExtension diff --git a/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index e8bd8056e..4f1e44009 100644 --- a/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/provision-additional-headers/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,5 +16,6 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + org.eclipse.tractusx.edc.provision.additionalheaders.ProvisionAdditionalHeadersExtension diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 28d3cef1c..eaf46ad2a 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,15 +1,16 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # # -org.eclipse.tractusx.edc.iam.ssi.identity.SsiIdentityServiceExtension \ No newline at end of file +org.eclipse.tractusx.edc.iam.ssi.identity.SsiIdentityServiceExtension diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 845bc7fc6..06d6f062c 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,15 +1,16 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # # -org.eclipse.tractusx.edc.iam.ssi.identity.extractor.SsiIdentityExtractorExtension \ No newline at end of file +org.eclipse.tractusx.edc.iam.ssi.identity.extractor.SsiIdentityExtractorExtension diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 251e96278..88f896183 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation # diff --git a/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index bfdbb7ac1..00d1df592 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Mercedes-Benz Tech Innovation GmbH - Initial ServiceExtension file # diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 8656b38dd..8b15dfb3d 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,12 +1,13 @@ -# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://www.apache.org/licenses/LICENSE-2.0. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + # Contributors: # Mercedes-Benz Tech Innovation GmbH - Initial ServiceExtension file # diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml index 8f4c6da4a..98ac76659 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-azure-vault-test.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + fullnameOverride: tx-prod diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml index bb60ea652..c4cc7bb1a 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # @@ -7,7 +7,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- fullnameOverride: tx-inmem diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml index 453800d0f..20ec65cbc 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-test.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + fullnameOverride: tx-prod ################################ diff --git a/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml b/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml index 09dd735d7..90d060a08 100644 --- a/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml +++ b/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml @@ -16,7 +16,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# ********************************************************************************/ +################################################################################# + ********************************************************************************/ # version: '3' @@ -90,4 +91,4 @@ volumes: networks: miw-net: - name: miw-net \ No newline at end of file + name: miw-net diff --git a/lintconf.yaml b/lintconf.yaml index f310a9da8..72991a5c7 100644 --- a/lintconf.yaml +++ b/lintconf.yaml @@ -1,4 +1,4 @@ -# +################################################################################# # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -6,7 +6,7 @@ # # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 +# https://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 @@ -15,7 +15,8 @@ # under the License. # # SPDX-License-Identifier: Apache-2.0 -# +################################################################################# + --- rules: diff --git a/resources/serviceextension.header b/resources/serviceextension.header new file mode 100644 index 000000000..11e5adf4f --- /dev/null +++ b/resources/serviceextension.header @@ -0,0 +1,19 @@ +^##{80}$ +^# Copyright \(c\) 20\d\d((,| -)20\d{2})? [A-Za-z].+\S$ +^#$ +^# See the NOTICE file\(s\) distributed with this work for additional$ +^# information regarding copyright ownership.$ +^#$ +^# This program and the accompanying materials are made available under the$ +^# terms of the Apache License, Version 2.0 which is available at$ +^# https://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\.$ +^#$ +^# SPDX-License-Identifier: Apache\-2\.0$ +^##{80}$ +^$ diff --git a/resources/tx-checkstyle-config.xml b/resources/tx-checkstyle-config.xml index 5c2258ca4..e9f93ae8c 100644 --- a/resources/tx-checkstyle-config.xml +++ b/resources/tx-checkstyle-config.xml @@ -49,6 +49,12 @@ + + + + + + From 851a9d6694b25386306ffb33a96fe4bb547bf605 Mon Sep 17 00:00:00 2001 From: ndr_brt Date: Wed, 7 Feb 2024 15:08:01 +0100 Subject: [PATCH 74/83] check also yaml files --- .github/dependabot.yml | 2 +- .github/release.yaml | 2 +- .github/workflows/deployment-test.yaml | 2 +- .github/workflows/draft-new-release.yaml | 2 +- .github/workflows/helm-lint.yaml | 2 +- .github/workflows/kics.yml | 2 +- .github/workflows/publish-docker.yaml | 2 +- .github/workflows/publish-maven.yaml | 2 +- .github/workflows/publish-new-release.yml | 2 +- .github/workflows/publish-swaggerhub.yaml | 2 +- .github/workflows/publish.yaml | 2 +- .github/workflows/run-all-tests.yml | 2 +- .github/workflows/trivy.yml | 2 +- .github/workflows/upgradeability-test.yaml | 2 +- .github/workflows/veracode.yaml | 2 +- .github/workflows/verify.yaml | 2 +- build.gradle.kts | 6 ++-- chart_schema.yaml | 2 +- .../tractusx-connector-azure-vault/Chart.yaml | 2 +- .../templates/configmap-controlplane.yaml | 2 +- .../templates/deployment-controlplane.yaml | 2 +- .../templates/deployment-dataplane.yaml | 2 +- .../templates/service-controlplane.yaml | 2 +- .../values.yaml | 3 +- charts/tractusx-connector-memory/Chart.yaml | 2 +- .../templates/configmap-runtime.yaml | 2 +- .../templates/deployment-runtime.yaml | 2 +- .../templates/hpa-runtime.yaml | 2 +- .../templates/ingress-runtime.yaml | 2 +- .../templates/service-runtime.yaml | 2 +- .../templates/serviceaccount.yaml | 2 +- .../templates/tests/test-runtime.yaml | 2 +- charts/tractusx-connector-memory/values.yaml | 2 +- charts/tractusx-connector/Chart.yaml | 2 +- .../templates/configmap-controlplane.yaml | 2 +- .../templates/configmap-dataplane.yaml | 2 +- .../templates/deployment-controlplane.yaml | 2 +- .../templates/deployment-dataplane.yaml | 2 +- .../templates/hpa-controlplane.yaml | 2 +- .../templates/hpa-dataplane.yaml | 2 +- .../templates/ingress-controlplane.yaml | 2 +- .../templates/ingress-dataplane.yaml | 2 +- .../templates/service-controlplane.yaml | 2 +- .../templates/service-dataplane.yaml | 2 +- .../templates/serviceaccount.yaml | 2 +- charts/tractusx-connector/values.yaml | 3 +- checkov.yaml | 2 +- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ct.yaml | 2 +- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 29 ++++++++++++------- ...rg.eclipse.edc.spi.system.ServiceExtension | 29 ++++++++++++------- ...rg.eclipse.edc.spi.system.ServiceExtension | 29 ++++++++++++------- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 13 ++++++--- ...rg.eclipse.edc.spi.system.ServiceExtension | 4 +-- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 14 +++++---- ...rg.eclipse.edc.spi.system.ServiceExtension | 12 ++++++-- ...rg.eclipse.edc.spi.system.ServiceExtension | 12 ++++++-- .../helm/tractusx-connector-memory-test.yaml | 2 +- .../docker-environment/docker-compose.yaml | 6 ++-- .../keycloak/health-check.sh | 25 +++++++++------- .../docker-environment/postgres/db.sh | 25 +++++++++------- .../docker-environment/postgres/seed.sh | 25 +++++++++------- ...rg.eclipse.edc.spi.system.ServiceExtension | 23 +++++++++------ ...rg.eclipse.edc.spi.system.ServiceExtension | 25 +++++++++------- lintconf.yaml | 2 +- ...serviceextension.header => hashtag.header} | 1 + resources/tx-checkstyle-config.xml | 6 ++-- .../src/test/resources/tenants.properties | 19 ++++++++++++ 77 files changed, 333 insertions(+), 210 deletions(-) rename resources/{serviceextension.header => hashtag.header} (99%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index c3d95499d..0165d0e38 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/release.yaml b/.github/release.yaml index 834bb1ca6..667620bab 100644 --- a/.github/release.yaml +++ b/.github/release.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/deployment-test.yaml b/.github/workflows/deployment-test.yaml index 4bfabb800..e5208e7fa 100644 --- a/.github/workflows/deployment-test.yaml +++ b/.github/workflows/deployment-test.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/draft-new-release.yaml b/.github/workflows/draft-new-release.yaml index e89941cde..99e7468e7 100644 --- a/.github/workflows/draft-new-release.yaml +++ b/.github/workflows/draft-new-release.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/helm-lint.yaml b/.github/workflows/helm-lint.yaml index 157beb2cf..3f3d7fb8e 100644 --- a/.github/workflows/helm-lint.yaml +++ b/.github/workflows/helm-lint.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/kics.yml b/.github/workflows/kics.yml index 8c6f0113e..c3969d28a 100644 --- a/.github/workflows/kics.yml +++ b/.github/workflows/kics.yml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/publish-docker.yaml b/.github/workflows/publish-docker.yaml index 6158103ad..89e98b1ea 100644 --- a/.github/workflows/publish-docker.yaml +++ b/.github/workflows/publish-docker.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/publish-maven.yaml b/.github/workflows/publish-maven.yaml index 1b0aa22ae..e30663c3e 100644 --- a/.github/workflows/publish-maven.yaml +++ b/.github/workflows/publish-maven.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/publish-new-release.yml b/.github/workflows/publish-new-release.yml index fd5ba9674..34c0ccb3a 100644 --- a/.github/workflows/publish-new-release.yml +++ b/.github/workflows/publish-new-release.yml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/publish-swaggerhub.yaml b/.github/workflows/publish-swaggerhub.yaml index afe360dee..15594b614 100644 --- a/.github/workflows/publish-swaggerhub.yaml +++ b/.github/workflows/publish-swaggerhub.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index db4212713..7da9f01dd 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/run-all-tests.yml b/.github/workflows/run-all-tests.yml index 2f02fdb87..26eacc08a 100644 --- a/.github/workflows/run-all-tests.yml +++ b/.github/workflows/run-all-tests.yml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index faa1c1eb3..e83831a5a 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/upgradeability-test.yaml b/.github/workflows/upgradeability-test.yaml index 4aba43bcc..ce2015790 100644 --- a/.github/workflows/upgradeability-test.yaml +++ b/.github/workflows/upgradeability-test.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/veracode.yaml b/.github/workflows/veracode.yaml index 8ba705009..2ed6cae51 100644 --- a/.github/workflows/veracode.yaml +++ b/.github/workflows/veracode.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/.github/workflows/verify.yaml b/.github/workflows/verify.yaml index 4a93b0cf9..27510f350 100644 --- a/.github/workflows/verify.yaml +++ b/.github/workflows/verify.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/build.gradle.kts b/build.gradle.kts index b3e8a37fb..57c190c48 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -19,7 +19,6 @@ import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage import com.github.jengelman.gradle.plugins.shadow.ShadowJavaPlugin -import org.gradle.kotlin.dsl.provider.inClassPathMode import java.time.Duration plugins { @@ -111,12 +110,13 @@ allprojects { configFile = rootProject.file("resources/tx-checkstyle-config.xml") configDirectory.set(rootProject.file("resources")) + // gradle checkstyle plugin only includes java src, so we add allSource and .github folder tasks.checkstyleMain { - this.source = project.sourceSets.getByName("main").allSource + this.source = project.sourceSets.main.get().allSource.srcDir(".github") } tasks.checkstyleTest { - this.source = project.sourceSets.getByName("test").allSource + this.source = project.sourceSets.test.get().allSource } //checkstyle violations are reported at the WARN level diff --git a/chart_schema.yaml b/chart_schema.yaml index 3fe9a48ee..b799e5a8a 100644 --- a/chart_schema.yaml +++ b/chart_schema.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-azure-vault/Chart.yaml b/charts/tractusx-connector-azure-vault/Chart.yaml index 76712e4be..3ac594bb1 100644 --- a/charts/tractusx-connector-azure-vault/Chart.yaml +++ b/charts/tractusx-connector-azure-vault/Chart.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml index bad2597c9..52ba65a50 100644 --- a/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/configmap-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml index deaf09d95..18e2500c4 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation + # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml index 12486cc88..48085d744 100644 --- a/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/deployment-dataplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml b/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml index cf9afe695..f39a69538 100644 --- a/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml +++ b/charts/tractusx-connector-azure-vault/templates/service-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-azure-vault/values.yaml b/charts/tractusx-connector-azure-vault/values.yaml index b45e21728..38a24c0e9 100644 --- a/charts/tractusx-connector-azure-vault/values.yaml +++ b/charts/tractusx-connector-azure-vault/values.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -21,7 +21,6 @@ ################################################################################# - --- # Default values for eclipse-dataspace-connector. # This is a YAML-formatted file. diff --git a/charts/tractusx-connector-memory/Chart.yaml b/charts/tractusx-connector-memory/Chart.yaml index 490b17399..484da846e 100644 --- a/charts/tractusx-connector-memory/Chart.yaml +++ b/charts/tractusx-connector-memory/Chart.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/configmap-runtime.yaml b/charts/tractusx-connector-memory/templates/configmap-runtime.yaml index f80aabf4e..d4c87b10c 100644 --- a/charts/tractusx-connector-memory/templates/configmap-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/configmap-runtime.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml index 5fdf7ddae..3634e2402 100644 --- a/charts/tractusx-connector-memory/templates/deployment-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/deployment-runtime.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation + # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/hpa-runtime.yaml b/charts/tractusx-connector-memory/templates/hpa-runtime.yaml index 871e9e5c1..3243dbad1 100644 --- a/charts/tractusx-connector-memory/templates/hpa-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/hpa-runtime.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/ingress-runtime.yaml b/charts/tractusx-connector-memory/templates/ingress-runtime.yaml index e3aa9f22d..211f78685 100644 --- a/charts/tractusx-connector-memory/templates/ingress-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/ingress-runtime.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/service-runtime.yaml b/charts/tractusx-connector-memory/templates/service-runtime.yaml index ce87d83a9..d6c441b85 100644 --- a/charts/tractusx-connector-memory/templates/service-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/service-runtime.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation + # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/serviceaccount.yaml b/charts/tractusx-connector-memory/templates/serviceaccount.yaml index a13980423..ae9ac61bc 100644 --- a/charts/tractusx-connector-memory/templates/serviceaccount.yaml +++ b/charts/tractusx-connector-memory/templates/serviceaccount.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/templates/tests/test-runtime.yaml b/charts/tractusx-connector-memory/templates/tests/test-runtime.yaml index 87f132235..97892c0c8 100644 --- a/charts/tractusx-connector-memory/templates/tests/test-runtime.yaml +++ b/charts/tractusx-connector-memory/templates/tests/test-runtime.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation + # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector-memory/values.yaml b/charts/tractusx-connector-memory/values.yaml index d749a3478..ef4341779 100644 --- a/charts/tractusx-connector-memory/values.yaml +++ b/charts/tractusx-connector-memory/values.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/Chart.yaml b/charts/tractusx-connector/Chart.yaml index f6e396c95..83ccea10a 100644 --- a/charts/tractusx-connector/Chart.yaml +++ b/charts/tractusx-connector/Chart.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/configmap-controlplane.yaml b/charts/tractusx-connector/templates/configmap-controlplane.yaml index bad2597c9..52ba65a50 100644 --- a/charts/tractusx-connector/templates/configmap-controlplane.yaml +++ b/charts/tractusx-connector/templates/configmap-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/configmap-dataplane.yaml b/charts/tractusx-connector/templates/configmap-dataplane.yaml index 37d25f8e8..32aea7298 100644 --- a/charts/tractusx-connector/templates/configmap-dataplane.yaml +++ b/charts/tractusx-connector/templates/configmap-dataplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/deployment-controlplane.yaml b/charts/tractusx-connector/templates/deployment-controlplane.yaml index b47c19b58..1cc371318 100644 --- a/charts/tractusx-connector/templates/deployment-controlplane.yaml +++ b/charts/tractusx-connector/templates/deployment-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation + # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/deployment-dataplane.yaml b/charts/tractusx-connector/templates/deployment-dataplane.yaml index db6ea94a0..8a43fc37b 100644 --- a/charts/tractusx-connector/templates/deployment-dataplane.yaml +++ b/charts/tractusx-connector/templates/deployment-dataplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/hpa-controlplane.yaml b/charts/tractusx-connector/templates/hpa-controlplane.yaml index d54cf61c9..3195a123f 100644 --- a/charts/tractusx-connector/templates/hpa-controlplane.yaml +++ b/charts/tractusx-connector/templates/hpa-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/hpa-dataplane.yaml b/charts/tractusx-connector/templates/hpa-dataplane.yaml index c5980c67f..9e3f76940 100644 --- a/charts/tractusx-connector/templates/hpa-dataplane.yaml +++ b/charts/tractusx-connector/templates/hpa-dataplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/ingress-controlplane.yaml b/charts/tractusx-connector/templates/ingress-controlplane.yaml index 3a845a8ae..292ba233e 100644 --- a/charts/tractusx-connector/templates/ingress-controlplane.yaml +++ b/charts/tractusx-connector/templates/ingress-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/ingress-dataplane.yaml b/charts/tractusx-connector/templates/ingress-dataplane.yaml index ce854ee41..84df3ffea 100644 --- a/charts/tractusx-connector/templates/ingress-dataplane.yaml +++ b/charts/tractusx-connector/templates/ingress-dataplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/service-controlplane.yaml b/charts/tractusx-connector/templates/service-controlplane.yaml index cf9afe695..f39a69538 100644 --- a/charts/tractusx-connector/templates/service-controlplane.yaml +++ b/charts/tractusx-connector/templates/service-controlplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/service-dataplane.yaml b/charts/tractusx-connector/templates/service-dataplane.yaml index cb205c635..0f1fc5e8c 100644 --- a/charts/tractusx-connector/templates/service-dataplane.yaml +++ b/charts/tractusx-connector/templates/service-dataplane.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/templates/serviceaccount.yaml b/charts/tractusx-connector/templates/serviceaccount.yaml index a13980423..ae9ac61bc 100644 --- a/charts/tractusx-connector/templates/serviceaccount.yaml +++ b/charts/tractusx-connector/templates/serviceaccount.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/charts/tractusx-connector/values.yaml b/charts/tractusx-connector/values.yaml index 7cac337a8..0de6875f6 100644 --- a/charts/tractusx-connector/values.yaml +++ b/charts/tractusx-connector/values.yaml @@ -2,7 +2,7 @@ # Copyright (c) 2023 ZF Friedrichshafen AG # Copyright (c) 2023 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. @@ -21,7 +21,6 @@ ################################################################################# - --- # Default values for eclipse-dataspace-connector. # This is a YAML-formatted file. diff --git a/checkov.yaml b/checkov.yaml index f70a2decd..456f155e6 100644 --- a/checkov.yaml +++ b/checkov.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 0f4a83ee2..82993677d 100644 --- a/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/core/edr-cache-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,20 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.edr.core.EdrCacheCoreExtension diff --git a/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 5283c5a45..e5f833dc9 100644 --- a/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/core/edr-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,17 +1,21 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.edr.core.EdrCoreExtension org.eclipse.tractusx.edc.edr.core.EdrCoreServiceExtension diff --git a/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 4a7baa309..60c8a9e94 100644 --- a/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/core/json-ld-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,20 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.jsonld.JsonLdExtension diff --git a/ct.yaml b/ct.yaml index 57b8ffa71..8bb40b8a4 100644 --- a/ct.yaml +++ b/ct.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 946240dd6..3b058563d 100644 --- a/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/cx-policy/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,17 +1,21 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.policy.cx.CxPolicyExtension diff --git a/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 19b030723..13333ee69 100644 --- a/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/data-encryption/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,17 +1,21 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.data.encryption.TxEncryptorExtension diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 11229c1f5..2c9a42b68 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,13 +1,20 @@ - # - # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # - # This program and the accompanying materials are made available under the - # terms of the Apache License, Version 2.0 which is available at - # https://www.apache.org/licenses/LICENSE-2.0 - # - # SPDX-License-Identifier: Apache-2.0 - # - # Contributors: - # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# org.eclipse.tractusx.edc.dataplane.proxy.consumer.api.DataPlaneProxyConsumerApiExtension diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index be66cb9c7..cd51fc686 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,13 +1,20 @@ - # - # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # - # This program and the accompanying materials are made available under the - # terms of the Apache License, Version 2.0 which is available at - # https://www.apache.org/licenses/LICENSE-2.0 - # - # SPDX-License-Identifier: Apache-2.0 - # - # Contributors: - # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# org.eclipse.tractusx.edc.dataplane.proxy.provider.api.DataPlaneProxyProviderApiExtension diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 5153c83eb..c3031b319 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,13 +1,20 @@ - # - # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - # - # This program and the accompanying materials are made available under the - # terms of the Apache License, Version 2.0 which is available at - # https://www.apache.org/licenses/LICENSE-2.0 - # - # SPDX-License-Identifier: Apache-2.0 - # - # Contributors: - # Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# org.eclipse.tractusx.edc.dataplane.proxy.provider.core.ProxyProviderCoreExtension diff --git a/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 49bee9eac..3443e55a6 100644 --- a/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/edr/edr-api/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,20 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.api.edr.EdrApiExtension diff --git a/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 5b607a3e9..6ce8fce04 100644 --- a/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/edr/edr-cache-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,20 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.edr.store.sql.SqlEndpointDataReferenceCacheExtension diff --git a/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index c5be405d9..3b9e5cfd9 100644 --- a/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/edr/edr-callback/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,17 +1,21 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.callback.InProcessCallbackRegistryExtension org.eclipse.tractusx.edc.callback.LocalCallbackExtension diff --git a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 09a7e2c69..8441c54b3 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/iatp/tx-iatp/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,17 +1,22 @@ ################################################################################# # Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# org.eclipse.tractusx.edc.iam.iatp.IatpDefaultScopeExtension org.eclipse.tractusx.edc.iam.iatp.IatpScopeExtractorExtension diff --git a/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 8215b53a4..d89bb3f09 100644 --- a/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/postgresql-migration/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,4 +1,4 @@ -################################################################################################################################################################# +################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # Copyright (c) 2021,2022 Contributors to the Eclipse Foundation # @@ -17,7 +17,7 @@ # # SPDX-License-Identifier: Apache-2.0 ################################################################################# -################################################################################ + org.eclipse.tractusx.edc.postgresql.migration.AssetPostgresqlMigrationExtension org.eclipse.tractusx.edc.postgresql.migration.ContractDefinitionPostgresqlMigrationExtension diff --git a/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index eaf46ad2a..858acb7ef 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/ssi/ssi-identity-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,20 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.iam.ssi.identity.SsiIdentityServiceExtension diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 06d6f062c..da0c5e345 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/ssi/ssi-identity-extractor/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,20 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.iam.ssi.identity.extractor.SsiIdentityExtractorExtension diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 88f896183..6919e95a8 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,18 +1,22 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation -# -# - org.eclipse.tractusx.edc.iam.ssi.miw.SsiMiwCredentialClientExtension org.eclipse.tractusx.edc.iam.ssi.miw.SsiMiwApiClientExtension org.eclipse.tractusx.edc.iam.ssi.miw.SsiMiwOauth2ClientExtension diff --git a/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 00d1df592..03d56f041 100644 --- a/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/transferprocess-sftp-client/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,14 +1,20 @@ ################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Mercedes-Benz Tech Innovation GmbH - Initial ServiceExtension file -# org.eclipse.tractusx.edc.transferprocess.sftp.client.SftpClientExtension diff --git a/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 8b15dfb3d..f17c7f783 100644 --- a/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-extensions/transferprocess-sftp-provisioner/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,14 +1,20 @@ ################################################################################# # Copyright (c) 2022 Mercedes-Benz Tech Innovation GmbH # +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# # This program and the accompanying materials are made available under the # terms of the Apache License, Version 2.0 which is available at # https://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. +# # SPDX-License-Identifier: Apache-2.0 ################################################################################# -# Contributors: -# Mercedes-Benz Tech Innovation GmbH - Initial ServiceExtension file -# org.eclipse.tractusx.edc.transferprocess.sftp.provisioner.SftpProvisionerExtension diff --git a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml index c4cc7bb1a..354c667ae 100644 --- a/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml +++ b/edc-tests/deployment/src/main/resources/helm/tractusx-connector-memory-test.yaml @@ -1,6 +1,6 @@ ################################################################################# # Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml b/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml index 90d060a08..b89dc5729 100644 --- a/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml +++ b/edc-tests/miw-tests/src/test/resources/docker-environment/docker-compose.yaml @@ -1,5 +1,4 @@ -# -# /******************************************************************************** +################################################################################# # Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional @@ -17,8 +16,7 @@ # # SPDX-License-Identifier: Apache-2.0 ################################################################################# - ********************************************************************************/ -# + version: '3' diff --git a/edc-tests/miw-tests/src/test/resources/docker-environment/keycloak/health-check.sh b/edc-tests/miw-tests/src/test/resources/docker-environment/keycloak/health-check.sh index e2d91a386..27efb3eea 100755 --- a/edc-tests/miw-tests/src/test/resources/docker-environment/keycloak/health-check.sh +++ b/edc-tests/miw-tests/src/test/resources/docker-environment/keycloak/health-check.sh @@ -1,17 +1,22 @@ #!/bin/bash +################################################################################# +# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # -# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. # -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. # +# SPDX-License-Identifier: Apache-2.0 +################################################################################# # health check approach taken from https://stackoverflow.com/a/75693900/7079724 @@ -25,4 +30,4 @@ ERROR=$? exec 3<&- exec 3>&- -exit $ERROR \ No newline at end of file +exit $ERROR diff --git a/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/db.sh b/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/db.sh index d020e9e08..0be008b1e 100755 --- a/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/db.sh +++ b/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/db.sh @@ -1,16 +1,21 @@ +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # -# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. # -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. # +# SPDX-License-Identifier: Apache-2.0 +################################################################################# set -e @@ -20,4 +25,4 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-E GRANT ALL PRIVILEGES ON DATABASE $POSTGRES_DB_NAME_MIW TO $POSTGRES_USERNAME_MIW; \c $POSTGRES_DB_NAME_MIW GRANT ALL ON SCHEMA public TO $POSTGRES_USERNAME_MIW; -EOSQL \ No newline at end of file +EOSQL diff --git a/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/seed.sh b/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/seed.sh index 5d4f20287..5c505a387 100755 --- a/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/seed.sh +++ b/edc-tests/miw-tests/src/test/resources/docker-environment/postgres/seed.sh @@ -1,17 +1,22 @@ #!/bin/bash +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # -# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. # -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. # +# SPDX-License-Identifier: Apache-2.0 +################################################################################# set -e @@ -21,4 +26,4 @@ psql -v ON_ERROR_STOP=1 --username "keycloak" --dbname "keycloak" <<-EOSQL INSERT INTO public.wallet (id, name, did, bpn, algorithm, did_document, created_at, modified_at, modified_from) VALUES (2, 'Another Participant', 'did:web:localhost%3A8000:BPNL000000000042', 'BPNL000000000042', 'ED25519', '{"verificationMethod":[{"publicKeyJwk":{"kty":"OKP","crv":"Ed25519","x":"Xok4qFXhNjMC3l-VHoQBJ_RHhtDmxevaoN13PE3j8MY"},"controller":"did:web:localhost%3A8000:BPNL000000000000","id":"did:web:localhost%3A8000:BPNL000000000000#","type":"JsonWebKey2020"}],"@context":"https://www.w3.org/ns/did/v1","id":"did:web:localhost%3A8000:BPNL000000000000"}', '2023-06-29 13:49:07.138000', '2023-06-29 13:49:07.140000', null); INSERT INTO public.issuers_credential (id, holder_did, issuer_did, credential_id, credential_data, credential_type, created_at, modified_at, modified_from) VALUES (3, 'did:web:localhost%3A8000:BPNL000000000042', 'did:web:localhost%3A8000:BPNL000000000042', 'a043c406-d51d-4672-ad89-517c68d025f9', '{"issuanceDate":"2023-06-29T13:49:11Z","credentialSubject":[{"holderIdentifier":"BPNL000000000000","id":"did:web:localhost%3A8000:BPNL000000000000","type":"SummaryCredential","items":["BpnCredential"],"contractTemplates":"https://public.catena-x.org/contracts/"}],"id":"a043c406-d51d-4672-ad89-517c68d025f9","proof":{"assertionMethod":"did:web:localhost%3A8000:BPNL000000000000#","proofPurpose":"proofPurpose","type":"JsonWebSignature2020","created":"2023-06-29T13:49:11Z","jws":"eyJhbGciOiJFZERTQSJ9..waFlAQyE42TddNz0v4q_MkIbSgbjexDQqdt-k6LEQG3BvhE1Adj6SIERtUzmYowuLtdcTBbwVAROf9yzpfNMAg"},"type":["VerifiableCredential","SummaryCredential"],"@context":["https://www.w3.org/2018/credentials/v1","https://catenax-ng.github.io/product-core-schemas/SummaryVC.json"],"issuer":"did:web:localhost%3A8000:BPNL000000000000","expirationDate":"2025-01-01T00:00:00Z"}', 'SummaryCredential', '2023-06-29 13:49:11.870000', '2023-06-29 13:49:11.925000', null); INSERT INTO public.holders_credential (id, holder_did, issuer_did, credential_id, credential_data, credential_type, created_at, modified_at, modified_from) VALUES (3, 'did:web:localhost%3A8000:BPNL000000000042', 'did:web:localhost%3A8000:BPNL000000000042', 'a043c406-d51d-4672-ad89-517c68d025f9', '{"issuanceDate":"2023-06-29T13:49:11Z","credentialSubject":[{"holderIdentifier":"BPNL000000000000","id":"did:web:localhost%3A8000:BPNL000000000000","type":"SummaryCredential","items":["BpnCredential"],"contractTemplates":"https://public.catena-x.org/contracts/"}],"id":"a043c406-d51d-4672-ad89-517c68d025f9","proof":{"assertionMethod":"did:web:localhost%3A8000:BPNL000000000000#","proofPurpose":"proofPurpose","type":"JsonWebSignature2020","created":"2023-06-29T13:49:11Z","jws":"eyJhbGciOiJFZERTQSJ9..waFlAQyE42TddNz0v4q_MkIbSgbjexDQqdt-k6LEQG3BvhE1Adj6SIERtUzmYowuLtdcTBbwVAROf9yzpfNMAg"},"type":["VerifiableCredential","SummaryCredential"],"@context":["https://www.w3.org/2018/credentials/v1","https://catenax-ng.github.io/product-core-schemas/SummaryVC.json"],"issuer":"did:web:localhost%3A8000:BPNL000000000000","expirationDate":"2025-01-01T00:00:00Z"}', 'SummaryCredential', '2023-06-29 13:49:11.870000', '2023-06-29 13:49:11.925000', null); -EOSQL \ No newline at end of file +EOSQL diff --git a/edc-tests/runtime/extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-tests/runtime/extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 75f82b423..1db031d31 100644 --- a/edc-tests/runtime/extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-tests/runtime/extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,16 +1,21 @@ +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # -# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. # -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. # +# SPDX-License-Identifier: Apache-2.0 +################################################################################# org.eclipse.tractusx.edc.lifecycle.ConsumerServicesExtension org.eclipse.tractusx.edc.lifecycle.VaultSeedExtension diff --git a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension index 934715158..db5562906 100644 --- a/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension +++ b/edc-tests/runtime/iatp/iatp-extensions/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -1,18 +1,23 @@ +################################################################################# +# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) # -# Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. # -# This program and the accompanying materials are made available under the -# terms of the Apache License, Version 2.0 which is available at -# https://www.apache.org/licenses/LICENSE-2.0 -# -# SPDX-License-Identifier: Apache-2.0 -# -# Contributors: -# Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - initial API and implementation +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. # +# SPDX-License-Identifier: Apache-2.0 +################################################################################# org.eclipse.tractusx.edc.iatp.TestAudienceMapperExtension org.eclipse.tractusx.edc.iatp.ih.IdentityHubExtension org.eclipse.tractusx.edc.iatp.policy.CredentialPolicyEvaluationExtension -org.eclipse.tractusx.edc.iatp.CredentialsJsonLdExtension \ No newline at end of file +org.eclipse.tractusx.edc.iatp.CredentialsJsonLdExtension diff --git a/lintconf.yaml b/lintconf.yaml index 72991a5c7..16aab67f8 100644 --- a/lintconf.yaml +++ b/lintconf.yaml @@ -1,5 +1,5 @@ ################################################################################# -# Copyright (c) 2021, 2023 Contributors to the Eclipse Foundation +# Copyright (c) 2021,2023 Contributors to the Eclipse Foundation # # See the NOTICE file(s) distributed with this work for additional # information regarding copyright ownership. diff --git a/resources/serviceextension.header b/resources/hashtag.header similarity index 99% rename from resources/serviceextension.header rename to resources/hashtag.header index 11e5adf4f..a6357d5b2 100644 --- a/resources/serviceextension.header +++ b/resources/hashtag.header @@ -1,3 +1,4 @@ +^#! ^##{80}$ ^# Copyright \(c\) 20\d\d((,| -)20\d{2})? [A-Za-z].+\S$ ^#$ diff --git a/resources/tx-checkstyle-config.xml b/resources/tx-checkstyle-config.xml index e9f93ae8c..5ca5d0548 100644 --- a/resources/tx-checkstyle-config.xml +++ b/resources/tx-checkstyle-config.xml @@ -50,9 +50,9 @@ - - - + + + diff --git a/samples/multi-tenancy/src/test/resources/tenants.properties b/samples/multi-tenancy/src/test/resources/tenants.properties index 0362cfa59..daaa526b9 100644 --- a/samples/multi-tenancy/src/test/resources/tenants.properties +++ b/samples/multi-tenancy/src/test/resources/tenants.properties @@ -1,3 +1,22 @@ +################################################################################# +# Copyright (c) 2024 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://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. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + edc.tenants.one.edc.any=any edc.tenants.one.web.http.port=18181 edc.tenants.one.web.http.path=/api From c9d0a56e15b936d29a655b7bae0d70ed840266da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 7 Feb 2024 18:53:33 +0100 Subject: [PATCH 75/83] chore(deps): bump org.slf4j:slf4j-api from 2.0.11 to 2.0.12 (#1033) * chore(deps): bump org.slf4j:slf4j-api from 2.0.11 to 2.0.12 Bumps org.slf4j:slf4j-api from 2.0.11 to 2.0.12. --- updated-dependencies: - dependency-name: org.slf4j:slf4j-api dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 2 +- build.gradle.kts | 2 +- gradle/libs.versions.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 9da5dea3b..ba027cd1d 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -472,7 +472,7 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.32, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.35, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 -maven/mavencentral/org.slf4j/slf4j-api/2.0.11, MIT, approved, #5915 +maven/mavencentral/org.slf4j/slf4j-api/2.0.12, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/database-commons/1.19.4, Apache-2.0, approved, #10345 diff --git a/build.gradle.kts b/build.gradle.kts index 57c190c48..b0dd494bb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -60,7 +60,7 @@ allprojects { mavenCentral() } dependencies { - implementation("org.slf4j:slf4j-api:2.0.11") + implementation("org.slf4j:slf4j-api:2.0.12") // this is used to counter version conflicts between the JUnit version pulled in by the plugin, // and the one expected by IntelliJ testImplementation(platform("org.junit:junit-bom:5.10.2")) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 90ef55af5..87a9f3ec8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ okhttp = "4.12.0" postgres = "42.7.1" restAssured = "5.4.0" rsApi = "3.1.0" -slf4j = "2.0.11" +slf4j = "2.0.12" testcontainers = "1.19.4" tink = "1.12.0" titanium = "1.3.3" From a0465b1cd9cb84aeaa22fdc9bab194fb2b03bc66 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 08:42:51 +0100 Subject: [PATCH 76/83] chore(deps): bump aws from 2.23.17 to 2.23.19 (#1030) * chore(deps): bump aws from 2.23.17 to 2.23.19 Bumps `aws` from 2.23.17 to 2.23.19. Updates `software.amazon.awssdk:s3` from 2.23.17 to 2.23.19 Updates `software.amazon.awssdk:s3-transfer-manager` from 2.23.17 to 2.23.19 --- updated-dependencies: - dependency-name: software.amazon.awssdk:s3 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: software.amazon.awssdk:s3-transfer-manager dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 54 +++++++++++++++++++-------------------- gradle/libs.versions.toml | 2 +- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index ba027cd1d..727f04ebb 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -485,58 +485,58 @@ maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 -maven/mavencentral/software.amazon.awssdk/annotations/2.23.17, Apache-2.0, approved, #13157 +maven/mavencentral/software.amazon.awssdk/annotations/2.23.19, Apache-2.0, approved, #13157 maven/mavencentral/software.amazon.awssdk/apache-client/2.22.9, Apache-2.0, approved, #12633 -maven/mavencentral/software.amazon.awssdk/apache-client/2.23.17, Apache-2.0, approved, #13142 +maven/mavencentral/software.amazon.awssdk/apache-client/2.23.19, Apache-2.0, approved, #13142 maven/mavencentral/software.amazon.awssdk/arns/2.22.9, Apache-2.0, approved, #12647 -maven/mavencentral/software.amazon.awssdk/arns/2.23.17, Apache-2.0, approved, #13135 +maven/mavencentral/software.amazon.awssdk/arns/2.23.19, Apache-2.0, approved, #13135 maven/mavencentral/software.amazon.awssdk/auth/2.22.9, Apache-2.0, approved, #12622 -maven/mavencentral/software.amazon.awssdk/auth/2.23.17, Apache-2.0, approved, #13141 +maven/mavencentral/software.amazon.awssdk/auth/2.23.19, Apache-2.0, approved, #13141 maven/mavencentral/software.amazon.awssdk/aws-core/2.22.9, Apache-2.0, approved, #12640 -maven/mavencentral/software.amazon.awssdk/aws-core/2.23.17, Apache-2.0, approved, #13148 +maven/mavencentral/software.amazon.awssdk/aws-core/2.23.19, Apache-2.0, approved, #13148 maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.22.9, Apache-2.0, approved, #12645 -maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.17, Apache-2.0, approved, #13150 +maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.23.19, Apache-2.0, approved, #13150 maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.22.9, Apache-2.0, approved, #12628 -maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.17, Apache-2.0, approved, #13146 +maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.23.19, Apache-2.0, approved, #13146 maven/mavencentral/software.amazon.awssdk/checksums-spi/2.22.9, Apache-2.0, approved, #12642 -maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.17, Apache-2.0, approved, #13158 +maven/mavencentral/software.amazon.awssdk/checksums-spi/2.23.19, Apache-2.0, approved, #13158 maven/mavencentral/software.amazon.awssdk/checksums/2.22.9, Apache-2.0, approved, #12641 -maven/mavencentral/software.amazon.awssdk/checksums/2.23.17, Apache-2.0, approved, #13144 +maven/mavencentral/software.amazon.awssdk/checksums/2.23.19, Apache-2.0, approved, #13144 maven/mavencentral/software.amazon.awssdk/crt-core/2.22.9, Apache-2.0, approved, #12635 -maven/mavencentral/software.amazon.awssdk/crt-core/2.23.17, Apache-2.0, approved, #13136 +maven/mavencentral/software.amazon.awssdk/crt-core/2.23.19, Apache-2.0, approved, #13136 maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.22.9, Apache-2.0, approved, #12624 -maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.17, Apache-2.0, approved, #13151 +maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.23.19, Apache-2.0, approved, #13151 maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.22.9, Apache-2.0, approved, #12637 -maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.17, Apache-2.0, approved, #13154 +maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.23.19, Apache-2.0, approved, #13154 maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.22.9, Apache-2.0, approved, #12638 -maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.17, Apache-2.0, approved, #13147 +maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.23.19, Apache-2.0, approved, #13147 maven/mavencentral/software.amazon.awssdk/http-auth/2.22.9, Apache-2.0, approved, #12626 -maven/mavencentral/software.amazon.awssdk/http-auth/2.23.17, Apache-2.0, approved, #13149 +maven/mavencentral/software.amazon.awssdk/http-auth/2.23.19, Apache-2.0, approved, #13149 maven/mavencentral/software.amazon.awssdk/http-client-spi/2.22.9, Apache-2.0, approved, #12627 -maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.17, Apache-2.0, approved, #13155 +maven/mavencentral/software.amazon.awssdk/http-client-spi/2.23.19, Apache-2.0, approved, #13155 maven/mavencentral/software.amazon.awssdk/iam/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/identity-spi/2.22.9, Apache-2.0, approved, #12636 -maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.17, Apache-2.0, approved, #13143 +maven/mavencentral/software.amazon.awssdk/identity-spi/2.23.19, Apache-2.0, approved, #13143 maven/mavencentral/software.amazon.awssdk/json-utils/2.22.9, Apache-2.0, approved, #12646 -maven/mavencentral/software.amazon.awssdk/json-utils/2.23.17, Apache-2.0, approved, #13139 +maven/mavencentral/software.amazon.awssdk/json-utils/2.23.19, Apache-2.0, approved, #13139 maven/mavencentral/software.amazon.awssdk/metrics-spi/2.22.9, Apache-2.0, approved, #12649 -maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.17, Apache-2.0, approved, #13153 +maven/mavencentral/software.amazon.awssdk/metrics-spi/2.23.19, Apache-2.0, approved, #13153 maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.22.9, Apache-2.0, approved, #12644 -maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.17, Apache-2.0, approved, #13134 +maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.23.19, Apache-2.0, approved, #13134 maven/mavencentral/software.amazon.awssdk/profiles/2.22.9, Apache-2.0, approved, #12620 -maven/mavencentral/software.amazon.awssdk/profiles/2.23.17, Apache-2.0, approved, #13132 +maven/mavencentral/software.amazon.awssdk/profiles/2.23.19, Apache-2.0, approved, #13132 maven/mavencentral/software.amazon.awssdk/protocol-core/2.22.9, Apache-2.0, approved, #12648 -maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.17, Apache-2.0, approved, #13133 +maven/mavencentral/software.amazon.awssdk/protocol-core/2.23.19, Apache-2.0, approved, #13133 maven/mavencentral/software.amazon.awssdk/regions/2.22.9, Apache-2.0, approved, #12643 -maven/mavencentral/software.amazon.awssdk/regions/2.23.17, Apache-2.0, approved, #13159 -maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.17, Apache-2.0, approved, #13156 +maven/mavencentral/software.amazon.awssdk/regions/2.23.19, Apache-2.0, approved, #13159 +maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.23.19, Apache-2.0, approved, #13156 maven/mavencentral/software.amazon.awssdk/s3/2.22.9, Apache-2.0, approved, #12630 -maven/mavencentral/software.amazon.awssdk/s3/2.23.17, Apache-2.0, approved, #13152 +maven/mavencentral/software.amazon.awssdk/s3/2.23.19, Apache-2.0, approved, #13152 maven/mavencentral/software.amazon.awssdk/sdk-core/2.22.9, Apache-2.0, approved, #12639 -maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.17, Apache-2.0, approved, #13138 +maven/mavencentral/software.amazon.awssdk/sdk-core/2.23.19, Apache-2.0, approved, #13138 maven/mavencentral/software.amazon.awssdk/sts/2.22.9, Apache-2.0, approved, clearlydefined maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.22.9, Apache-2.0, approved, #12629 -maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.17, Apache-2.0, approved, #13140 +maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.23.19, Apache-2.0, approved, #13140 maven/mavencentral/software.amazon.awssdk/utils/2.22.9, Apache-2.0, approved, #12631 -maven/mavencentral/software.amazon.awssdk/utils/2.23.17, Apache-2.0, approved, #13137 +maven/mavencentral/software.amazon.awssdk/utils/2.23.19, Apache-2.0, approved, #13137 maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 87a9f3ec8..aae2873c1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -6,7 +6,7 @@ edc = "0.5.1-20240131-SNAPSHOT" apache-sshd = "2.12.0" assertj = "3.25.3" awaitility = "4.2.0" -aws = "2.23.17" +aws = "2.23.19" azure-identity = "1.11.1" bouncyCastle-jdk18on = "1.77" flyway = "9.22.3" From a5f0d60419a40cbcbe4ed7648efba4d63f531251 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:03:12 +0100 Subject: [PATCH 77/83] chore(deps): bump aquasecurity/trivy-action from 0.12.0 to 0.17.0 (#1031) Bumps [aquasecurity/trivy-action](https://github.com/aquasecurity/trivy-action) from 0.12.0 to 0.17.0. - [Release notes](https://github.com/aquasecurity/trivy-action/releases) - [Commits](https://github.com/aquasecurity/trivy-action/compare/0.12.0...0.17.0) --- updated-dependencies: - dependency-name: aquasecurity/trivy-action 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/trivy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index e83831a5a..bd8f6db98 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -58,7 +58,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.12.0 + uses: aquasecurity/trivy-action@0.17.0 with: scan-type: "config" # ignore-unfixed: true @@ -102,7 +102,7 @@ jobs: ## the next two steps will only execute if the image exists check was successful - name: Run Trivy vulnerability scanner if: success() && steps.imageCheck.outcome != 'failure' - uses: aquasecurity/trivy-action@0.12.0 + uses: aquasecurity/trivy-action@0.17.0 with: image-ref: "tractusx/${{ matrix.image }}:sha-${{ needs.git-sha7.outputs.value }}" format: "sarif" From 88bbf7d6197a15f4577581eaf7bba28c0dab3bae Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 8 Feb 2024 10:55:24 +0100 Subject: [PATCH 78/83] chore(deps): bump com.azure:azure-identity from 1.11.1 to 1.11.2 (#1032) * chore(deps): bump com.azure:azure-identity from 1.11.1 to 1.11.2 Bumps [com.azure:azure-identity](https://github.com/Azure/azure-sdk-for-java) from 1.11.1 to 1.11.2. - [Release notes](https://github.com/Azure/azure-sdk-for-java/releases) - [Commits](https://github.com/Azure/azure-sdk-for-java/compare/azure-identity_1.11.1...azure-identity_1.11.2) --- updated-dependencies: - dependency-name: com.azure:azure-identity dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] * chore: dependencies file * chore: dependencies file --------- Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Enrico Risa --- DEPENDENCIES | 5 +++++ gradle/libs.versions.toml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/DEPENDENCIES b/DEPENDENCIES index 727f04ebb..0797f7cb6 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -6,9 +6,12 @@ maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.1, Apache-2.0, approved, maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.3, Apache-2.0, approved, #8912 maven/mavencentral/com.azure/azure-core-http-netty/1.13.11, MIT AND Apache-2.0, approved, #7948 maven/mavencentral/com.azure/azure-core-http-netty/1.13.9, MIT AND Apache-2.0, approved, #7948 +maven/mavencentral/com.azure/azure-core-http-netty/1.14.0, , restricted, clearlydefined maven/mavencentral/com.azure/azure-core/1.44.1, MIT, approved, clearlydefined maven/mavencentral/com.azure/azure-core/1.45.1, MIT AND Apache-2.0, approved, #11845 +maven/mavencentral/com.azure/azure-core/1.46.0, , restricted, clearlydefined maven/mavencentral/com.azure/azure-identity/1.11.1, MIT, approved, clearlydefined +maven/mavencentral/com.azure/azure-identity/1.11.2, , restricted, clearlydefined maven/mavencentral/com.azure/azure-json/1.1.0, MIT AND Apache-2.0, approved, #10547 maven/mavencentral/com.azure/azure-security-keyvault-secrets/4.7.3, MIT, approved, #10868 maven/mavencentral/com.azure/azure-storage-blob/12.24.1, MIT, approved, #10568 @@ -145,8 +148,10 @@ maven/mavencentral/io.opentelemetry/opentelemetry-api/1.32.0, Apache-2.0, approv maven/mavencentral/io.opentelemetry/opentelemetry-context/1.32.0, Apache-2.0, approved, #11683 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.38, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.39, Apache-2.0, approved, #9687 +maven/mavencentral/io.projectreactor.netty/reactor-netty-core/1.0.40, Apache-2.0, approved, #9687 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.38, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.39, Apache-2.0, approved, #11661 +maven/mavencentral/io.projectreactor.netty/reactor-netty-http/1.0.40, Apache-2.0, approved, #11661 maven/mavencentral/io.projectreactor/reactor-core/3.4.33, Apache-2.0, approved, #7517 maven/mavencentral/io.projectreactor/reactor-core/3.4.34, Apache-2.0, approved, #7517 maven/mavencentral/io.rest-assured/json-path/5.4.0, Apache-2.0, approved, #12042 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index aae2873c1..87ed2749d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -7,7 +7,7 @@ apache-sshd = "2.12.0" assertj = "3.25.3" awaitility = "4.2.0" aws = "2.23.19" -azure-identity = "1.11.1" +azure-identity = "1.11.2" bouncyCastle-jdk18on = "1.77" flyway = "9.22.3" iron-vc = "0.8.1" From c519e31d06729c0d5d0d1e9600029ebea321c868 Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Thu, 8 Feb 2024 12:10:05 +0100 Subject: [PATCH 79/83] refactor: removes Jws2020CryptoSuite implementation (#1036) --- .../ssi/jws2020-crypto-suite/README.md | 69 ----- .../ssi/jws2020-crypto-suite/build.gradle.kts | 36 --- .../signature/jws2020/ByteArrayAdapter.java | 45 ---- .../signature/jws2020/IssuerCompat.java | 83 ------ .../signature/jws2020/JsonAdapter.java | 59 ----- .../signature/jws2020/JwkAdapter.java | 83 ------ .../security/signature/jws2020/JwkMethod.java | 54 ---- .../signature/jws2020/Jws2020CryptoSuite.java | 31 --- .../signature/jws2020/Jws2020Schema.java | 115 --------- .../jws2020/Jws2020SignatureProvider.java | 133 ---------- .../jws2020/JwsSignature2020Suite.java | 74 ------ .../jws2020/JwsSignatureProofOptions.java | 36 --- .../signature/jws2020/KeyFactory.java | 129 ---------- .../signature/jws2020/IssuerTests.java | 242 ------------------ .../signature/jws2020/JsonAdapterTest.java | 67 ----- .../signature/jws2020/KeyFactoryTest.java | 191 -------------- .../signature/jws2020/TestFunctions.java | 58 ----- .../jws2020/TestResourcesLoader.java | 71 ----- .../signature/jws2020/VerifierTests.java | 113 -------- .../resources/jws2020/issuing/0001_vc.json | 21 -- .../jws2020/issuing/0003_vc_embedded.json | 21 -- .../jws2020/issuing/0004_vc_did_key.json | 21 -- .../issuing/0005_vp_compacted_signed.json | 38 --- .../jws2020/issuing/businessPartnerData.json | 177 ------------- .../jws2020/issuing/private-key.json | 7 - .../resources/jws2020/verifying/0001_vc.json | 27 -- .../jws2020/verifying/0002_vc_forged.json | 36 --- .../jws2020/verifying/0003_vc_embedded.json | 37 --- .../verifying/0004_vc_two_valid_proofs.json | 45 ---- .../verifying/0005_vc_one_forged_proof.json | 45 ---- .../jws2020/verifying/0006_vc_did_key.json | 28 -- .../jws2020/verifying/0006_vp_compacted.json | 39 --- .../verifying/0007_vp_compacted_forged.json | 39 --- .../verifying/businessPartnerData.json | 177 ------------- .../verifying/verification-method.json | 11 - .../src/test/resources/rsakey.json | 13 - .../edc/lifecycle/tx/TxParticipant.java | 1 - settings.gradle.kts | 1 - 38 files changed, 2473 deletions(-) delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/README.md delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0001_vc.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0003_vc_embedded.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0004_vc_did_key.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0005_vp_compacted_signed.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/businessPartnerData.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/private-key.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0001_vc.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0002_vc_forged.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0003_vc_embedded.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0004_vc_two_valid_proofs.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0005_vc_one_forged_proof.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vc_did_key.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vp_compacted.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0007_vp_compacted_forged.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/businessPartnerData.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/verification-method.json delete mode 100644 edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/rsakey.json diff --git a/edc-extensions/ssi/jws2020-crypto-suite/README.md b/edc-extensions/ssi/jws2020-crypto-suite/README.md deleted file mode 100644 index c552f3180..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/README.md +++ /dev/null @@ -1,69 +0,0 @@ -# JsonWebSignature2020 - -This module extends the [iron-verifiable-credentials library](https://github.com/filip26/iron-verifiable-credentials), -which we use in conjunction with [titanium-ld](https://github.com/filip26/titanium-json-ld/) with an implementation for -the [JsonWebSignature2020](https://www.w3.org/community/reports/credentials/CG-FINAL-lds-jws2020-20220721) crypto suite. - -## Technical aspects - -This implementation is actually mostly glue code between the `iron-verifiable-credentials` lib and the -well-known [Nimbus JOSE lib](https://connect2id.com/products/nimbus-jose-jwt), as all cryptographic primitives are taken -from Nimbus. - -VerifiableCredentials and VerifiablePresentations are processed as JSON(-LD) objects, so some familiarity with JSON-LD -is required. -The entrypoint into the cryptographic suite is the `Vc` class, which allows signing/issuing and verifying JSON-LD -structures. The following samples use explicit types for clarity. These are just some illustrative examples, please -check the `IssuerTests` and the `VerifierTests` for more comprehensive explanations. - -### Sign a VC - -```java -JwsSignature2020Suite suite = new JwsSignature2020Suite(JacksonJsonLd.createObjectMapper()); -JsonObject vc = createVcAsJsonLd(); -JWK keyPair = createKeyPairAsJwk(); -JwkMethod signKeys = new JwkMethod(id,type,controller,keyPair); - -var options = suite.createOptions() - .created(Instant.now()) - .verificationMethod(signKeys) // embeds the proof - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - -Issuer signedVc = Vc.sign(vc, signKeys, options); - -JsonObject compacted = IssuerCompat.compact(signedVc); -``` - -### Verify a VC - -```java -JwsSignature2020Suite suite = new JwsSignature2020Suite(JacksonJsonLd.createObjectMapper()); -JsonObject vc = readSignedVc(); -Verifier result = Vc.verify(vc, suite); - -try { - result.isValid(); -} catch(VerificationError error) { - //handle -} -``` - -## Limitations & Known Issues - -Java 17 [dropped support](https://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-es256k-signature) for -the `secp256k1` curve. Alternatively, the BouncyCastle JCA provider could be used. -For this implementation, we chose to forego this at the benefit of a smaller library footprint. There is plenty of other -curves to choose from. - -On a similar note, support for Octet Keypairs (`"OKP"`) has not yet been added to the standard Java JCA, thus an -additional dependency `tink` is needed, -check [here](https://connect2id.com/products/nimbus-jose-jwt/examples/jwk-generation#okp) for details. If that is not -acceptable to you, please add a dependency exclusion to your build script. - -`iron-verifiable-credentials` is not 100% agnostic toward its crypto suites, for example there is -a [hard-coded context](https://github.com/filip26/iron-verifiable-credentials/blob/82d13326c5f64a0f38c75d417ffc263febfd970d/src/main/java/com/apicatalog/vc/processor/Issuer.java#L122) -added to the compacted JSON-LD, which is incorrect. It doesn't negatively impact the resulting JSON-LD, other than -possibly affecting processing times, but unfortunately it also makes it impossible to add more contexts, such -as . We mitigated this with -the [`IssuerCompat.java`](https://github.com/eclipse-tractusx/tractusx-edc/blob/main/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java), -which should be used for compaction. diff --git a/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts b/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts deleted file mode 100644 index 25602c5de..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/build.gradle.kts +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ -plugins { - `java-library` -} - -dependencies { - implementation(libs.edc.spi.jwt) - implementation(libs.nimbus.jwt) - implementation(libs.edc.spi.jsonld) - implementation(libs.edc.jsonld) - implementation(libs.edc.util) - // used for the Ed25519 Verifier in conjunction with OctetKeyPairs (OKP) - runtimeOnly(libs.tink) - implementation(libs.jakartaJson) - - implementation(libs.apicatalog.iron.vc) { - exclude("com.github.multiformats") - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java deleted file mode 100644 index b66260d95..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/ByteArrayAdapter.java +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.jsonld.lang.Keywords; -import com.apicatalog.ld.schema.adapter.LdValueAdapter; -import jakarta.json.Json; -import jakarta.json.JsonValue; -import org.eclipse.edc.jsonld.spi.JsonLdKeywords; - -class ByteArrayAdapter implements LdValueAdapter { - @Override - public byte[] read(JsonValue value) { - if (value.getValueType().equals(JsonValue.ValueType.OBJECT)) { - var obj = value.asJsonObject(); - return obj.getString(JsonLdKeywords.VALUE).getBytes(); - } - return value.toString().getBytes(); - } - - @Override - public JsonValue write(byte[] value) { - return Json.createObjectBuilder() - .add(Keywords.VALUE, new String(value)) - .build(); - } - -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java deleted file mode 100644 index eaf8fa305..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/IssuerCompat.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.jsonld.JsonLd; -import com.apicatalog.jsonld.JsonLdError; -import com.apicatalog.jsonld.document.Document; -import com.apicatalog.jsonld.document.JsonDocument; -import com.apicatalog.jsonld.loader.DocumentLoader; -import com.apicatalog.ld.DocumentError; -import com.apicatalog.ld.signature.SigningError; -import com.apicatalog.vc.processor.Issuer; -import jakarta.json.Json; -import jakarta.json.JsonObject; -import org.eclipse.edc.util.reflection.ReflectionUtil; - -import java.net.URI; -import java.util.Arrays; - -/** - * The {@link Issuer} adds the context, but currently that adds hard-coded {@code "https://w3id.org/security/suites/ed25519-2020/v1"}. - * For the Jwk2020 suite we need that to be {@code "https://w3id.org/security/suites/jws-2020/v1"}, so as a temporary workaround we do not - * use {@link Issuer#getCompacted()}, but rather use {@link IssuerCompat#compact(Issuer, String...)}. - */ -public class IssuerCompat { - /** - * Compacts the JSON structure represented by the {@link Issuer} by delegating to {@link JsonLd#compact(Document, URI)}. Note that before compacting, the JSON-LD is expanded, signed, all additional contexts are added - * and then compacted. - *

- * By default, the following contexts are added automatically: - *

- * - * @param issuer The {@link Issuer} - * @param additionalContexts Any additional context URIs that should be used for compaction. For Jws2020 it is highly likely that - * @return a JSON-LD structure in compacted format that contains the signed content (e.g. a VC). - */ - public static JsonObject compact(Issuer issuer, String... additionalContexts) { - try { - var expanded = issuer.getExpanded(); - var arrayBuilder = Json.createArrayBuilder(); - Arrays.stream(additionalContexts).forEach(arrayBuilder::add); - var context = arrayBuilder - .add("https://www.w3.org/2018/credentials/v1") - .add("https://w3id.org/security/suites/jws-2020/v1") - .add("https://www.w3.org/ns/did/v1") - .build(); - return JsonLd.compact(JsonDocument.of(expanded), JsonDocument.of(context)).loader(getLoader(issuer)) - .get(); - - } catch (JsonLdError | SigningError | DocumentError e) { - throw new RuntimeException(e); - } - } - - /** - * rather crude hack to obtain the {@link Issuer}'s loader. The EDC util we're using here basically fetches the declared field recursively. - * - * @see ReflectionUtil#getFieldValue(String, Object) - */ - private static DocumentLoader getLoader(Issuer issuer) { - return ReflectionUtil.getFieldValue("loader", issuer); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java deleted file mode 100644 index 903377abe..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JsonAdapter.java +++ /dev/null @@ -1,59 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.schema.adapter.LdValueAdapter; -import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.json.Json; -import jakarta.json.JsonObject; -import jakarta.json.JsonValue; -import org.eclipse.edc.jsonld.spi.JsonLdKeywords; - -import java.util.Map; - -class JsonAdapter implements LdValueAdapter { - private final ObjectMapper mapper; - - JsonAdapter(ObjectMapper mapper) { - this.mapper = mapper; - } - - @Override - public Object read(JsonValue value) { - var input = value; - if (value instanceof JsonObject) { - var jo = value.asJsonObject(); - input = jo.get(JsonLdKeywords.VALUE); - } - return mapper.convertValue(input, Object.class); - } - - @Override - public JsonValue write(Object value) { - if (value instanceof Map) { - var jo = Json.createObjectBuilder(); - jo.add(JsonLdKeywords.VALUE, Json.createObjectBuilder((Map) value)); - jo.add(JsonLdKeywords.TYPE, JsonLdKeywords.JSON); - return mapper.convertValue(jo.build(), JsonValue.class); - } - return mapper.convertValue(value, JsonValue.class); - } - -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java deleted file mode 100644 index e5322a480..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkAdapter.java +++ /dev/null @@ -1,83 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.schema.LdObject; -import com.apicatalog.ld.schema.LdTerm; -import com.apicatalog.ld.schema.adapter.LdValueAdapter; -import com.apicatalog.ld.signature.method.VerificationMethod; -import com.apicatalog.vc.integrity.DataIntegrity; - -import java.net.URI; -import java.util.HashMap; -import java.util.Map; -import java.util.Objects; - -import static org.eclipse.edc.security.signature.jws2020.Jws2020Schema.JWK_PRIVATE_KEY; -import static org.eclipse.edc.security.signature.jws2020.Jws2020Schema.JWK_PUBLIC_KEY; - -/** - * Adapter that converts between {@link LdObject} and {@link VerificationMethod} - */ -class JwkAdapter implements LdValueAdapter { - - @Override - public VerificationMethod read(LdObject value) { - URI id = value.value(LdTerm.ID); - URI type = value.value(LdTerm.TYPE); - URI controller = value.value(DataIntegrity.CONTROLLER); - var keyProperty = getKeyProperty(value); - var jwk = KeyFactory.create(keyProperty); - return new JwkMethod(id, type, controller, jwk); - } - - - @Override - public LdObject write(VerificationMethod method) { - var result = new HashMap(); - Objects.requireNonNull(method, "VerificationMethod cannot be null!"); - - if (method.id() != null) { - result.put(LdTerm.ID.uri(), method.id()); - } - if (method.type() != null) { - result.put(LdTerm.TYPE.uri(), method.type()); - } - if (method.controller() != null) { - result.put(DataIntegrity.CONTROLLER.uri(), method.controller()); - } - - if (method instanceof JwkMethod ecKeyPair) { - if (ecKeyPair.keyPair() != null) { - result.put(JWK_PUBLIC_KEY.uri(), ecKeyPair.keyPair().toPublicJWK().toJSONObject()); - } - } - - return new LdObject(result); - } - - private Map getKeyProperty(LdObject value) { - if (value.contains(JWK_PRIVATE_KEY)) { - return value.value(JWK_PRIVATE_KEY); - } - return value.value(JWK_PUBLIC_KEY); - } - -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java deleted file mode 100644 index 8be2d7547..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwkMethod.java +++ /dev/null @@ -1,54 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.signature.key.KeyPair; -import com.nimbusds.jose.jwk.JWK; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.net.URI; - -record JwkMethod(URI id, URI type, URI controller, JWK keyPair) implements KeyPair { - - @Override - public byte[] privateKey() { - return keyPair != null ? serializeKeyPair(keyPair) : null; - } - - - @Override - public byte[] publicKey() { - return keyPair != null ? serializeKeyPair(keyPair.toPublicJWK()) : null; - } - - private byte[] serializeKeyPair(JWK keyPair) { - try { - var bos = new ByteArrayOutputStream(); - var out = new ObjectOutputStream(bos); - out.writeObject(keyPair); - return bos.toByteArray(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java deleted file mode 100644 index 51f400092..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020CryptoSuite.java +++ /dev/null @@ -1,31 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.schema.LdTerm; -import com.apicatalog.ld.signature.CryptoSuite; -import com.apicatalog.ld.signature.primitive.MessageDigest; -import com.apicatalog.ld.signature.primitive.Urdna2015; - -class Jws2020CryptoSuite extends CryptoSuite { - Jws2020CryptoSuite(LdTerm id) { - super(id, new Urdna2015(), new MessageDigest("SHA-256"), new Jws2020SignatureProvider()); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java deleted file mode 100644 index 0aff57cc5..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020Schema.java +++ /dev/null @@ -1,115 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.schema.LdProperty; -import com.apicatalog.ld.schema.LdSchema; -import com.apicatalog.ld.schema.LdTerm; -import com.apicatalog.vc.VcTag; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.time.Instant; - -import static com.apicatalog.ld.schema.LdSchema.id; -import static com.apicatalog.ld.schema.LdSchema.link; -import static com.apicatalog.ld.schema.LdSchema.object; -import static com.apicatalog.ld.schema.LdSchema.property; -import static com.apicatalog.ld.schema.LdSchema.string; -import static com.apicatalog.ld.schema.LdSchema.type; -import static com.apicatalog.ld.schema.LdSchema.xsdDateTime; -import static com.apicatalog.vc.VcSchema.proof; -import static com.apicatalog.vc.VcSchema.verificationMethod; -import static com.apicatalog.vc.VcVocab.SECURITY_VOCAB; -import static com.apicatalog.vc.integrity.DataIntegrity.CHALLENGE; -import static com.apicatalog.vc.integrity.DataIntegrity.CREATED; -import static com.apicatalog.vc.integrity.DataIntegrity.DOMAIN; -import static com.apicatalog.vc.integrity.DataIntegrity.PURPOSE; -import static com.apicatalog.vc.integrity.DataIntegrity.VERIFICATION_METHOD; - -/** - * Internal class that encapsulates all JSON schemas that are relevant for JWS2020, such as the structure of the verification method - */ -class Jws2020Schema { - public static final LdTerm JSON_WEB_KEY_TYPE = LdTerm.create("JsonWebKey2020", SECURITY_VOCAB); - public static final LdTerm JSON_WEB_SIGNATURE_TYPE = LdTerm.create("JsonWebSignature2020", SECURITY_VOCAB); - public static final LdTerm JWS = LdTerm.create("jws", SECURITY_VOCAB); - public static final LdTerm CONTROLLER = LdTerm.create("controller", SECURITY_VOCAB); - public static final LdTerm JWK_PRIVATE_KEY = LdTerm.create("privateKeyJwk", SECURITY_VOCAB); - public static final LdTerm JWK_PUBLIC_KEY = LdTerm.create("publicKeyJwk", SECURITY_VOCAB); - - - /** - * Creates an {@link LdSchema} for the verification method object of JWS2020, which looks roughly like this: - *
-     *     "verificationMethod": [
-     *       {
-     *         "id": "#ovsDKYBjFemIy8DVhc-w2LSi8CvXMw2AYDzHj04yxkc",
-     *         "type": "JsonWebKey2020",
-     *         "controller": "https://example.com/issuer/123",
-     *         "publicKeyJwk": {
-     *           "kty": "OKP",
-     *           "crv": "Ed25519",
-     *           "x": "CV-aGlld3nVdgnhoZK0D36Wk-9aIMlZjZOK2XhPMnkQ"
-     *         }
-     *       }
-     *     ],
-     * 
- * - * @param mapper The object mapper that is used to deserialize the {@code publicKeyJwk} part. - * @return The {@link LdSchema} that represents the above structure. Never null. - */ - public static LdSchema create(ObjectMapper mapper) { - return proof( - type(JSON_WEB_SIGNATURE_TYPE).required(), - property(CREATED, xsdDateTime()) - .test(created -> Instant.now().isAfter(created)) - .required(), - property(CONTROLLER, link()), - property(PURPOSE, link()).required(), - verificationMethod(VERIFICATION_METHOD, getVerificationMethod(mapper).map(new JwkAdapter())).required(), - property(DOMAIN, string()) - .test((domain, params) -> !params.containsKey(DOMAIN.name()) || params.get(DOMAIN.name()).equals(domain)), - property(CHALLENGE, string()), - property(JWS, new ByteArrayAdapter(), VcTag.ProofValue.name()) - ); - } - - private static LdSchema getVerificationMethod(ObjectMapper mapper) { - return jsonWebKeySchema(mapper); - } - - private static LdSchema jsonWebKeySchema(ObjectMapper mapper) { - return new LdSchema( - object( - id().required(), - type(JSON_WEB_KEY_TYPE), - property(CONTROLLER, link()), - jwkPublicKey(mapper) - )); - } - - private static LdProperty jwkPublicKey(ObjectMapper mapper) { - return property(JWK_PUBLIC_KEY, new JsonAdapter(mapper)); - } - - private static LdProperty jwkPrivateKey(ObjectMapper mapper) { - return property(JWK_PRIVATE_KEY, new JsonAdapter(mapper)); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java deleted file mode 100644 index aba77769e..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/Jws2020SignatureProvider.java +++ /dev/null @@ -1,133 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.signature.KeyGenError; -import com.apicatalog.ld.signature.SigningError; -import com.apicatalog.ld.signature.VerificationError; -import com.apicatalog.ld.signature.algorithm.SignatureAlgorithm; -import com.apicatalog.ld.signature.key.KeyPair; -import com.nimbusds.jose.JOSEException; -import com.nimbusds.jose.JWSAlgorithm; -import com.nimbusds.jose.JWSHeader; -import com.nimbusds.jose.JWSObject; -import com.nimbusds.jose.Payload; -import com.nimbusds.jose.jwk.Curve; -import com.nimbusds.jose.jwk.ECKey; -import com.nimbusds.jose.jwk.JWK; -import com.nimbusds.jose.jwk.OctetKeyPair; -import com.nimbusds.jose.jwk.RSAKey; -import org.eclipse.edc.spi.EdcException; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.text.ParseException; -import java.util.Collections; - -class Jws2020SignatureProvider implements SignatureAlgorithm { - - @Override - public void verify(byte[] publicKey, byte[] signature, byte[] data) throws VerificationError { - - try { - var jwk = deserialize(publicKey); - if (jwk == null) { - throw new UnsupportedOperationException("Cannot deserialize public key, expected JWK format"); - } - var verifier = KeyFactory.createVerifier(jwk); - - var detachedPayload = new Payload(data); - var jws = new String(signature); - - var parsedJwsObject = JWSObject.parse(jws, detachedPayload); - var isValid = parsedJwsObject.verify(verifier); - - if (!isValid) { - throw new VerificationError(VerificationError.Code.InvalidSignature); - } - - } catch (JOSEException | ParseException e) { - throw new VerificationError(VerificationError.Code.InvalidSignature, e); - } - } - - @Override - public byte[] sign(byte[] privateKey, byte[] data) throws SigningError { - - try { - var keyPair = deserialize(privateKey); - if (keyPair == null) { - throw new UnsupportedOperationException("Cannot deserialize key pair, expected JWK format"); - } - // Create and sign JWS - JWSHeader header = new JWSHeader.Builder(from(keyPair)) - .base64URLEncodePayload(false) - .criticalParams(Collections.singleton("b64")) - .build(); - - var detachedPayload = new Payload(data); - var jwsObject = new JWSObject(header, detachedPayload); - jwsObject.sign(KeyFactory.createSigner(keyPair)); - - boolean isDetached = true; - String jws = jwsObject.serialize(isDetached); - return jws.getBytes(); - - } catch (JOSEException e) { - throw new SigningError(SigningError.Code.UnsupportedCryptoSuite, e); - } - } - - @Override - public KeyPair keygen(int length) throws KeyGenError { - return null; - } - - /** - * Attempt to determine the {@link JWSAlgorithm} from the curve that is being used in the ECKey pair - */ - private JWSAlgorithm from(JWK keyPair) { - if (keyPair instanceof ECKey eckey) { - var jwsAlgorithm = JWSAlgorithm.Family.EC.stream() - .filter(algo -> Curve.forJWSAlgorithm(algo).contains(eckey.getCurve())) - .findFirst(); - return jwsAlgorithm.orElseThrow(() -> new EdcException("Could not determine JWSAlgorithm for Curve " + eckey.getCurve())); - } else if (keyPair instanceof OctetKeyPair okp) { - var jwsAlgorithm = JWSAlgorithm.Family.ED.stream() - .filter(algo -> Curve.forJWSAlgorithm(algo).contains(okp.getCurve())) - .findFirst(); - return jwsAlgorithm.orElseThrow(() -> new EdcException("Could not determine JWSAlgorithm for Curve " + okp.getCurve())); - } else if (keyPair instanceof RSAKey) { - return JWSAlgorithm.RS512; - } - return null; - } - - private JWK deserialize(byte[] privateKey) { - ByteArrayInputStream bis = new ByteArrayInputStream(privateKey); - try { - ObjectInputStream in = new ObjectInputStream(bis); - return (JWK) in.readObject(); - } catch (IOException | ClassNotFoundException e) { - return null; - } - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java deleted file mode 100644 index 021ebf582..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignature2020Suite.java +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.schema.LdSchema; -import com.apicatalog.ld.schema.LdTerm; -import com.apicatalog.ld.signature.CryptoSuite; -import com.apicatalog.ld.signature.SignatureSuite; -import com.fasterxml.jackson.databind.ObjectMapper; -import org.eclipse.edc.jsonld.util.JacksonJsonLd; - -import java.net.URI; - -/** - * {@link SignatureSuite} that provides cryptographic facilities and a key schema for
Json Web Signature 2020. - */ -public final class JwsSignature2020Suite implements SignatureSuite { - static final URI CONTEXT = URI.create("https://w3id.org/security/suites/jws-2020/v1"); - private final Jws2020CryptoSuite cryptoSuite; - private final ObjectMapper mapper; - - /** - * Creates a new {@link JwsSignature2020Suite} using an object mapper. That mapper is needed because parts of the schema are plain JSON. - * - * @param mapper a JSON-aware {@link ObjectMapper}, e.g. using {@link JacksonJsonLd#createObjectMapper()} - * @see Jws2020Schema - */ - public JwsSignature2020Suite(ObjectMapper mapper) { - this.mapper = mapper; - cryptoSuite = new Jws2020CryptoSuite(LdTerm.ID); - } - - @Override - public LdTerm getId() { - return Jws2020Schema.JSON_WEB_SIGNATURE_TYPE; - } - - @Override - public URI getContext() { - return CONTEXT; - } - - @Override - public LdSchema getSchema() { - return Jws2020Schema.create(mapper); - } - - @Override - public CryptoSuite getCryptoSuite() { - return cryptoSuite; - } - - @Override - public JwsSignatureProofOptions createOptions() { - return new JwsSignatureProofOptions(this); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java deleted file mode 100644 index c29cffd3f..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/JwsSignatureProofOptions.java +++ /dev/null @@ -1,36 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.vc.integrity.DataIntegrityProofOptions; - -/** - * Proof options for Jws2020 - */ -public class JwsSignatureProofOptions extends DataIntegrityProofOptions { - /** - * Create a new proof options instance - * - * @param suite The {@link JwsSignature2020Suite} for which the options are created. - */ - public JwsSignatureProofOptions(JwsSignature2020Suite suite) { - super(suite); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java b/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java deleted file mode 100644 index 6b5b7c649..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/main/java/org/eclipse/edc/security/signature/jws2020/KeyFactory.java +++ /dev/null @@ -1,129 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.nimbusds.jose.JOSEException; -import com.nimbusds.jose.JWSSigner; -import com.nimbusds.jose.JWSVerifier; -import com.nimbusds.jose.crypto.ECDSASigner; -import com.nimbusds.jose.crypto.ECDSAVerifier; -import com.nimbusds.jose.crypto.Ed25519Signer; -import com.nimbusds.jose.crypto.Ed25519Verifier; -import com.nimbusds.jose.crypto.RSASSASigner; -import com.nimbusds.jose.crypto.RSASSAVerifier; -import com.nimbusds.jose.jwk.ECKey; -import com.nimbusds.jose.jwk.JWK; -import com.nimbusds.jose.jwk.OctetKeyPair; -import com.nimbusds.jose.jwk.RSAKey; - -import java.text.ParseException; -import java.util.Map; -import java.util.Objects; - -import static java.lang.String.format; - -/** - * Utility class that has two basic duties: - *
    - *
  • Create cryptographic keys represented in JWK format ({@link JWK}) out of JSON or JSON-like objects
  • - *
  • Create {@link JWSSigner}s and {@link JWSVerifier}s for any given key represented in {@link JWK} format.
  • - *
- *

- * For this, the well-known Nimbus JOSE+JWT library is used. - */ -public class KeyFactory { - - /** - * Creates a {@link JWK} out of a map that represents a JSON structure. - * - * @param jsonObject The map containing the JSON - * @return the corresponding key. - * @throws RuntimeException if the JSON was malformed, or the JWK type was unknown. Typically, this wraps a {@link ParseException} - */ - public static JWK create(Map jsonObject) { - if (jsonObject == null) return null; - try { - return JWK.parse(jsonObject); - } catch (ParseException e) { - throw new RuntimeException(e); - } - } - - /** - * Creates a {@link JWK} out of a JSON string containing the key properties - * - * @param json The string containing plain JSON - * @return the corresponding key. - * @throws RuntimeException if the JSON was malformed, or the JWK type was unknown. Typically, this wraps a {@link ParseException} - */ - public static JWK create(String json) { - if (json == null) return null; - try { - return JWK.parse(json); - } catch (ParseException e) { - throw new RuntimeException(e); - } - } - - /** - * Creates a {@link JWSVerifier} from the base class {@link JWK}. Currently only supports EC, OKP and RSA keys. - * - * @param jwk The {@link JWK} for which the {@link JWSVerifier} is to be created. - * @return the {@link JWSVerifier} - * @throws UnsupportedOperationException if the verifier could not be created, in which case the root cause would be {@link JOSEException} - */ - public static JWSVerifier createVerifier(JWK jwk) { - Objects.requireNonNull(jwk, "jwk cannot be null"); - var value = jwk.getKeyType().getValue(); - try { - return switch (value) { - case "EC" -> new ECDSAVerifier((ECKey) jwk); - case "OKP" -> new Ed25519Verifier((OctetKeyPair) jwk); - case "RSA" -> new RSASSAVerifier((RSAKey) jwk); - default -> - throw new UnsupportedOperationException(format("Cannot create JWSVerifier for JWK-type [%s], currently only supporting EC, OKP and RSA", value)); - }; - } catch (JOSEException ex) { - throw new UnsupportedOperationException(ex); - } - } - - /** - * Creates a {@link JWSSigner} from the base class {@link JWK}. Currently only supports EC, OKP and RSA keys. - * - * @param jwk The {@link JWK} for which the {@link JWSSigner} is to be created. - * @return the {@link JWSSigner} - * @throws UnsupportedOperationException if the signer could not be created, in which case the root cause would be {@link JOSEException} - */ - public static JWSSigner createSigner(JWK jwk) { - var value = jwk.getKeyType().getValue(); - try { - return switch (value) { - case "EC" -> new ECDSASigner((ECKey) jwk); - case "OKP" -> new Ed25519Signer((OctetKeyPair) jwk); - case "RSA" -> new RSASSASigner((RSAKey) jwk); - default -> - throw new UnsupportedOperationException(format("Cannot create JWSVerifier for JWK-type [%s], currently only supporting EC, OKP and RSA", value)); - }; - } catch (JOSEException ex) { - throw new UnsupportedOperationException(ex); - } - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java deleted file mode 100644 index 5ffe1b51b..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/IssuerTests.java +++ /dev/null @@ -1,242 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.jsonld.loader.SchemeRouter; -import com.apicatalog.ld.DocumentError; -import com.apicatalog.ld.signature.SigningError; -import com.apicatalog.vc.Vc; -import com.nimbusds.jose.JOSEException; -import com.nimbusds.jose.jwk.Curve; -import com.nimbusds.jose.jwk.ECKey; -import com.nimbusds.jose.jwk.KeyUse; -import com.nimbusds.jose.jwk.RSAKey; -import com.nimbusds.jose.jwk.gen.OctetKeyPairGenerator; -import jakarta.json.JsonObject; -import jakarta.json.JsonString; -import org.eclipse.edc.jsonld.util.JacksonJsonLd; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -import java.net.URI; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.time.Instant; -import java.util.Date; -import java.util.UUID; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.eclipse.edc.security.signature.jws2020.TestFunctions.createKeyPair; -import static org.eclipse.edc.security.signature.jws2020.TestFunctions.readResourceAsJson; -import static org.eclipse.edc.security.signature.jws2020.TestFunctions.readResourceAsString; - -class IssuerTests { - - private final JwsSignature2020Suite jws2020suite = new JwsSignature2020Suite(JacksonJsonLd.createObjectMapper()); - //used to load remote data from a local directory - private final TestResourcesLoader loader = new TestResourcesLoader("https://org.eclipse.tractusx/", "jws2020/issuing/", SchemeRouter.defaultInstance()); - - @DisplayName("t0001: a simple credential to sign (EC Key)") - @Test - void signSimpleCredential_ecKey() throws SigningError, DocumentError { - var vc = readResourceAsJson("jws2020/issuing/0001_vc.json"); - var keypair = createKeyPair(KeyFactory.create(readResourceAsString("jws2020/issuing/private-key.json"))); - - var verificationMethodUrl = "https://org.eclipse.tractusx/verification-method"; - - var proofOptions = jws2020suite.createOptions() - .created(Instant.parse("2022-12-31T23:00:00Z")) - .verificationMethod(new JwkMethod(URI.create(verificationMethodUrl), null, null, null)) - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - - - var issuer = Vc.sign(vc, keypair, proofOptions).loader(loader); - - // would throw an exception - var compacted = IssuerCompat.compact(issuer, "https://www.w3.org/ns/did/v1"); - var verificationMethod = compacted.getJsonObject("sec:proof").get("verificationMethod"); - - assertThat(verificationMethod).describedAs("Expected a String!").isInstanceOf(JsonString.class); - assertThat(((JsonString) verificationMethod).getString()).isEqualTo(verificationMethodUrl); - } - - @DisplayName("t0001: a simple credential to sign (RSA Key)") - @ParameterizedTest(name = "keySize = {0} bits") - @ValueSource(ints = {2048, 3072, 4096}) - void signSimpleCredential_rsaKey(int keysize) throws SigningError, DocumentError, NoSuchAlgorithmException { - var vc = readResourceAsJson("jws2020/issuing/0001_vc.json"); - - KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); - gen.initialize(keysize); - var keyPair = gen.generateKeyPair(); - - var jwk = new RSAKey.Builder((RSAPublicKey) keyPair.getPublic()) - .privateKey((RSAPrivateKey) keyPair.getPrivate()) - .keyUse(KeyUse.SIGNATURE) - .keyID(UUID.randomUUID().toString()) - .issueTime(new Date()) - .build(); - var keypair = createKeyPair(jwk); - - var verificationMethodUrl = "https://org.eclipse.tractusx/verification-method"; - - var proofOptions = jws2020suite.createOptions() - .created(Instant.parse("2022-12-31T23:00:00Z")) - .verificationMethod(new JwkMethod(URI.create(verificationMethodUrl), null, null, null)) - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - - - var issuer = Vc.sign(vc, keypair, proofOptions).loader(loader); - - // would throw an exception - var compacted = IssuerCompat.compact(issuer, "https://www.w3.org/ns/did/v1"); - var verificationMethod = compacted.getJsonObject("sec:proof").get("verificationMethod"); - - assertThat(verificationMethod).describedAs("Expected a String!").isInstanceOf(JsonString.class); - assertThat(((JsonString) verificationMethod).getString()).isEqualTo(verificationMethodUrl); - } - - @DisplayName("t0001: a simple credential to sign (OctetKeyPair)") - @Test - void signSimpleCredential_octetKeyPair() throws SigningError, DocumentError, JOSEException { - var vc = readResourceAsJson("jws2020/issuing/0001_vc.json"); - - var jwk = new OctetKeyPairGenerator(Curve.Ed25519).generate(); - var keypair = createKeyPair(jwk); - - var verificationMethodUrl = "https://org.eclipse.tractusx/verification-method"; - - var proofOptions = jws2020suite.createOptions() - .created(Instant.parse("2022-12-31T23:00:00Z")) - .verificationMethod(new JwkMethod(URI.create(verificationMethodUrl), null, null, null)) - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - - - var issuer = Vc.sign(vc, keypair, proofOptions).loader(loader); - - // would throw an exception - var compacted = IssuerCompat.compact(issuer, "https://www.w3.org/ns/did/v1"); - var verificationMethod = compacted.getJsonObject("sec:proof").get("verificationMethod"); - - assertThat(verificationMethod).describedAs("Expected a String!").isInstanceOf(JsonString.class); - assertThat(((JsonString) verificationMethod).getString()).isEqualTo(verificationMethodUrl); - } - - @DisplayName("t0002: compacted signed credential") - @Test - void signCompactedCredential() { - // nothing to do here, it's the same as above - } - - @DisplayName("t0003: signed embedded verificationMethod") - @Test - void signEmbeddedVerificationMethod() throws SigningError, DocumentError { - var vc = readResourceAsJson("jws2020/issuing/0001_vc.json"); - var keypair = createKeyPair(KeyFactory.create(readResourceAsString("jws2020/issuing/private-key.json"))); - - var proofOptions = jws2020suite.createOptions() - .created(Instant.parse("2022-12-31T23:00:00Z")) - .verificationMethod(keypair) - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - - - var issuer = Vc.sign(vc, keypair, proofOptions).loader(loader); - - // would throw an exception - var compacted = IssuerCompat.compact(issuer, "https://www.w3.org/ns/did/v1"); - var verificationMethod = compacted.getJsonObject("sec:proof").get("verificationMethod"); - - assertThat(verificationMethod).describedAs("Expected an Object!").isInstanceOf(JsonObject.class); - assertThat(verificationMethod.asJsonObject().get("publicKeyJwk")) - .isInstanceOf(JsonObject.class) - .satisfies(jv -> { - assertThat(jv.asJsonObject().get("x")).isNotNull(); - assertThat(jv.asJsonObject().get("crv")).isNotNull(); - assertThat(jv.asJsonObject().get("kty")).isNotNull(); - }); - } - - @DisplayName("t0004: a credential with DID key as verification method") - @Test - void signVerificationDidKey() throws SigningError, DocumentError { - var vc = readResourceAsJson("jws2020/issuing/0001_vc.json"); - var eckey = (ECKey) KeyFactory.create(""" - { - "kty": "EC", - "d": "UEUJVbKZC3vR-y65gXx8NZVnE0QD5xe6qOk4eiObj-qVOg5zqt9zc0d6fdu4mUuu", - "use": "sig", - "crv": "P-384", - "x": "l6IS348kIFEANYl3CWueMYVXcZmK0eMI0vejkF1GHbl77dOZuZwi9L2IQmuA27ux", - "y": "m-8s5FM8Tn00OKVFxE-wfCs3J2keE2EBAYYZgAmfI1LCRD9iU2LBced-EBK18Da9", - "alg": "ES384" - } - """); - var keypair = createKeyPair(eckey); - - // check https://w3c-ccg.github.io/did-method-key/#create for details - var didKey = "did:key:zC2zU1wUHhYYX4CDwNwky9f5jtSvp5aQy5aNRQMHEdpK5xkJMy6TcMbWBP3scHbR6hhidR3RRjfAA7cuLxjydXgEiZUzRzguozYFeR3G6SzjAwswJ6hXKBWhFEHm2L6Rd6GRAw8r3kyPovxvcabdMF2gBy5TAioY1mVYFeT6"; - - var proofOptions = jws2020suite.createOptions() - .created(Instant.parse("2022-12-31T23:00:00Z")) - .verificationMethod(new JwkMethod(URI.create(didKey), null, null, null)) - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - - - var issuer = Vc.sign(vc, keypair, proofOptions).loader(loader); - - // would throw an exception - var compacted = IssuerCompat.compact(issuer, "https://www.w3.org/ns/did/v1"); - var verificationMethod = compacted.getJsonObject("sec:proof").get("verificationMethod"); - - assertThat(verificationMethod).describedAs("Expected a String!").isInstanceOf(JsonString.class); - assertThat(((JsonString) verificationMethod).getString()).isEqualTo(didKey); - - } - - @DisplayName("t0005: compacted signed presentation") - @Test - void signCompactedPresentation() throws SigningError, DocumentError { - var vp = readResourceAsJson("jws2020/issuing/0005_vp_compacted_signed.json"); - - var keypair = createKeyPair(KeyFactory.create(readResourceAsString("jws2020/issuing/private-key.json"))); - - var verificationMethodUrl = "https://org.eclipse.tractusx/verification-method"; - - var proofOptions = jws2020suite.createOptions() - .created(Instant.parse("2022-12-31T23:00:00Z")) - .verificationMethod(new JwkMethod(URI.create(verificationMethodUrl), null, null, null)) - .purpose(URI.create("https://w3id.org/security#assertionMethod")); - - - var issuer = Vc.sign(vp, keypair, proofOptions).loader(loader); - - // would throw an exception - var compacted = IssuerCompat.compact(issuer, "https://www.w3.org/ns/did/v1"); - var verificationMethod = compacted.getJsonObject("sec:proof").get("verificationMethod"); - - assertThat(verificationMethod).describedAs("Expected a String!").isInstanceOf(JsonString.class); - assertThat(((JsonString) verificationMethod).getString()).isEqualTo(verificationMethodUrl); - } - -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java deleted file mode 100644 index bd738db04..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/JsonAdapterTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import jakarta.json.Json; -import jakarta.json.JsonObject; -import jakarta.json.JsonString; -import jakarta.json.JsonValue; -import org.eclipse.edc.jsonld.util.JacksonJsonLd; -import org.junit.jupiter.api.Test; - -import java.util.Map; - -import static org.assertj.core.api.Assertions.assertThat; - -class JsonAdapterTest { - - private final JsonAdapter adapter = new JsonAdapter(JacksonJsonLd.createObjectMapper()); - - @Test - void read() { - var jo = Json.createValue("foobar"); - var result = adapter.read(jo); - assertThat(result).isEqualTo("foobar"); - } - - @Test - void read_jsonObjectWithValue() { - var jo = Json.createObjectBuilder() - .add("@type", "test-type") - .add("@value", "test-value") - .build(); - var result = adapter.read(jo); - assertThat(result).isEqualTo("test-value"); - } - - @Test - void write() { - var obj = "test-string"; - var result = adapter.write(obj); - assertThat(result).isInstanceOf(JsonString.class); - } - - @Test - void write_map() { - var map = Map.of("key1", "value1", "key2", "value2"); - var result = adapter.write(map); - assertThat(result).isInstanceOf(JsonObject.class).extracting(JsonValue::asJsonObject).matches(jo -> jo.size() == 2); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java deleted file mode 100644 index 1d8df717f..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/KeyFactoryTest.java +++ /dev/null @@ -1,191 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.nimbusds.jose.JOSEException; -import com.nimbusds.jose.jwk.Curve; -import com.nimbusds.jose.jwk.ECKey; -import com.nimbusds.jose.jwk.JWK; -import com.nimbusds.jose.jwk.KeyUse; -import com.nimbusds.jose.jwk.OctetKeyPair; -import com.nimbusds.jose.jwk.RSAKey; -import com.nimbusds.jose.jwk.gen.OctetKeyPairGenerator; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtensionContext; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.ArgumentsProvider; -import org.junit.jupiter.params.provider.ArgumentsSource; - -import java.security.InvalidAlgorithmParameterException; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.interfaces.ECPrivateKey; -import java.security.interfaces.ECPublicKey; -import java.security.interfaces.RSAPrivateKey; -import java.security.interfaces.RSAPublicKey; -import java.text.ParseException; -import java.util.Date; -import java.util.Map; -import java.util.UUID; -import java.util.stream.Stream; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.eclipse.edc.security.signature.jws2020.TestFunctions.readResourceAsString; - -class KeyFactoryTest { - - @Test - void create_ecKey() throws JsonProcessingException { - var json = """ - { - "kty": "EC", - "crv": "P-384", - "x": "eQbMauiHc9HuiqXT894gW5XTCrOpeY8cjLXAckfRtdVBLzVHKaiXAAxBFeVrSB75", - "y": "YOjxhMkdH9QnNmGCGuGXJrjAtk8CQ1kTmEEi9cg2R9ge-zh8SFT1Xu6awoUjK5Bv", - "d": "dXghMAzYZmv46SNRuxmfDIuAlv7XIhvlkPzW3vXsopB1ihWp47tx0hqjZmYO6fJa" - } - """; - - assertThat(KeyFactory.create(json)).isInstanceOf(ECKey.class).extracting(JWK::isPrivate).isEqualTo(true); - var map = new ObjectMapper().readValue(json, Map.class); - assertThat(KeyFactory.create(map)).isInstanceOf(ECKey.class).extracting(JWK::isPrivate).isEqualTo(true); - } - - @Test - void create_rsa() throws JsonProcessingException { - // the RSA key would violate the Checkstyle line length constraint - var json = readResourceAsString("rsakey.json"); - - assertThat(KeyFactory.create(json)).isInstanceOf(RSAKey.class).extracting(JWK::isPrivate).isEqualTo(true); - var map = new ObjectMapper().readValue(json, Map.class); - assertThat(KeyFactory.create(map)).isInstanceOf(RSAKey.class).extracting(JWK::isPrivate).isEqualTo(true); - } - - @Test - void create_okp() throws JsonProcessingException { - var json = """ - { - "kty" : "OKP", - "crv" : "Ed25519", - "x" : "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo", - "d" : "nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A", - "use" : "sig", - "kid" : "FdFYFzERwC2uCBB46pZQi4GG85LujR8obt-KWRBICVQ" - } - """; - - assertThat(KeyFactory.create(json)).isInstanceOf(OctetKeyPair.class).extracting(JWK::isPrivate).isEqualTo(true); - var map = new ObjectMapper().readValue(json, Map.class); - assertThat(KeyFactory.create(map)).isInstanceOf(OctetKeyPair.class).extracting(JWK::isPrivate).isEqualTo(true); - } - - @Test - void create_invalidJson() throws JsonProcessingException { - // JSON misses the "crv" property - var json = """ - { - "kty": "EC", - "x": "eQbMauiHc9HuiqXT894gW5XTCrOpeY8cjLXAckfRtdVBLzVHKaiXAAxBFeVrSB75", - "y": "YOjxhMkdH9QnNmGCGuGXJrjAtk8CQ1kTmEEi9cg2R9ge-zh8SFT1Xu6awoUjK5Bv" - } - """; - - assertThatThrownBy(() -> assertThat(KeyFactory.create(json))).isInstanceOf(RuntimeException.class).rootCause().isInstanceOf(ParseException.class); - - var map = new ObjectMapper().readValue(json, Map.class); - assertThatThrownBy(() -> assertThat(KeyFactory.create(map))).isInstanceOf(RuntimeException.class).rootCause().isInstanceOf(ParseException.class); - } - - @ParameterizedTest(name = "{1}") - @ArgumentsSource(ValidJwkProvider.class) - void createVerifier(JWK validJwk, String name) { - assertThat(KeyFactory.createVerifier(validJwk.toPublicJWK())).isNotNull(); - } - - @ParameterizedTest(name = "{1}") - @ArgumentsSource(ValidJwkProvider.class) - void createSigner(JWK validJwk, String name) { - assertThat(KeyFactory.createSigner(validJwk)).isNotNull(); - } - - private static class ValidJwkProvider implements ArgumentsProvider { - @Override - public Stream provideArguments(ExtensionContext extensionContext) { - return Stream.of( - Arguments.of(createEcKey(Curve.P_256), "EC Key with P256 Curve"), - Arguments.of(createEcKey(Curve.P_384), "EC Key with P384 Curve"), - Arguments.of(createEcKey(Curve.P_521), "EC Key with P512 Curve"), - Arguments.of(createOkp(), "Octet Key Pair"), - Arguments.of(createRsaKey(2048), "RSA Key, 2048 bit"), - Arguments.of(createRsaKey(4096), "RSA Key, 4096 bit") - ); - } - - private RSAKey createRsaKey(int keysize) { - try { - KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA"); - gen.initialize(keysize); - KeyPair keyPair = gen.generateKeyPair(); - - return new RSAKey.Builder((RSAPublicKey) keyPair.getPublic()) - .privateKey((RSAPrivateKey) keyPair.getPrivate()) - .keyUse(KeyUse.SIGNATURE) - .keyID(UUID.randomUUID().toString()) - .issueTime(new Date()) - .build(); - - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e); - } - } - - private OctetKeyPair createOkp() { - try { - return new OctetKeyPairGenerator(Curve.Ed25519) - .keyUse(KeyUse.SIGNATURE) // indicate the intended use of the key (optional) - .keyID(UUID.randomUUID().toString()) // give the key a unique ID (optional) - .issueTime(new Date()) // issued-at timestamp (optional) - .generate(); - } catch (JOSEException e) { - throw new RuntimeException(e); - } - - } - - private ECKey createEcKey(Curve curve) { - try { - KeyPairGenerator gen = KeyPairGenerator.getInstance("EC"); - gen.initialize(curve.toECParameterSpec()); - KeyPair keyPair = gen.generateKeyPair(); - - return new ECKey.Builder(curve, (ECPublicKey) keyPair.getPublic()) - .privateKey((ECPrivateKey) keyPair.getPrivate()) - .build(); - } catch (InvalidAlgorithmParameterException | NoSuchAlgorithmException e) { - throw new RuntimeException(e); - } - } - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java deleted file mode 100644 index 80c192308..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestFunctions.java +++ /dev/null @@ -1,58 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.ld.signature.key.KeyPair; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.nimbusds.jose.jwk.JWK; -import jakarta.json.JsonObject; -import org.eclipse.edc.jsonld.util.JacksonJsonLd; - -import java.io.IOException; -import java.net.URI; -import java.util.Objects; -import java.util.UUID; - -class TestFunctions { - - private static final ObjectMapper MAPPER = JacksonJsonLd.createObjectMapper(); - - static KeyPair createKeyPair(JWK jwk) { - var id = URI.create("https://org.eclipse.tractusx/keys/" + UUID.randomUUID()); - var type = URI.create("https://w3id.org/security#JsonWebKey2020"); - return new JwkMethod(id, type, null, jwk); - } - - static JsonObject readResourceAsJson(String name) { - try { - return MAPPER.readValue(Thread.currentThread().getContextClassLoader().getResourceAsStream(name), JsonObject.class); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - static String readResourceAsString(String name) { - try (var stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(name)) { - return new String(Objects.requireNonNull(stream).readAllBytes()); - } catch (IOException e) { - throw new RuntimeException(e); - } - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java deleted file mode 100644 index 7cc20b18a..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/TestResourcesLoader.java +++ /dev/null @@ -1,71 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.jsonld.JsonLdError; -import com.apicatalog.jsonld.document.Document; -import com.apicatalog.jsonld.document.JsonDocument; -import com.apicatalog.jsonld.loader.DocumentLoader; -import com.apicatalog.jsonld.loader.DocumentLoaderOptions; - -import java.io.IOException; -import java.net.URI; - -/** - * JSON-LD document loader that allows to "redirect" the loading of remote documents (contexts,...). - * For example, referencing a remote context, or a remote verificationMethod would fail, if that document doesn't exist, but we need it - * for testing, so we can "redirect" the pointer to the local test resources folder. - */ -class TestResourcesLoader implements DocumentLoader { - private final String base; - private final DocumentLoader baseLoader; - private final String resourcePath; - - TestResourcesLoader(String base, String resourcePath, DocumentLoader baseLoader) { - this.base = base; - this.resourcePath = resourcePath; - this.baseLoader = baseLoader; - } - - @Override - public Document loadDocument(URI uri, DocumentLoaderOptions options) throws JsonLdError { - Document document; - var url = uri.toString(); - if (url.startsWith(base)) { - try (var is = Thread.currentThread().getContextClassLoader().getResourceAsStream(rewrite(uri))) { - document = JsonDocument.of(is); - } catch (IOException e) { - throw new RuntimeException(e); - } - - } else { - document = baseLoader.loadDocument(uri, options); - } - return document; - } - - private String rewrite(URI url) { - var path = resourcePath + url.toString().replace(base, ""); - if (!path.endsWith(".json")) { - path += ".json"; - } - return path; - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java b/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java deleted file mode 100644 index eaa1e029e..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/java/org/eclipse/edc/security/signature/jws2020/VerifierTests.java +++ /dev/null @@ -1,113 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.edc.security.signature.jws2020; - -import com.apicatalog.jsonld.loader.SchemeRouter; -import com.apicatalog.ld.DocumentError; -import com.apicatalog.ld.signature.VerificationError; -import com.apicatalog.vc.Vc; -import org.eclipse.edc.jsonld.util.JacksonJsonLd; -import org.junit.jupiter.api.Disabled; -import org.junit.jupiter.api.DisplayName; -import org.junit.jupiter.api.Test; - -import static org.assertj.core.api.Assertions.assertThatNoException; -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.eclipse.edc.security.signature.jws2020.TestFunctions.readResourceAsJson; - -class VerifierTests { - - private final JwsSignature2020Suite jws2020suite = new JwsSignature2020Suite(JacksonJsonLd.createObjectMapper()); - //used to load remote data from a local directory - private final TestResourcesLoader loader = new TestResourcesLoader("https://org.eclipse.tractusx/", "jws2020/verifying/", SchemeRouter.defaultInstance()); - - @DisplayName("t0001: valid signed VC") - @Test - void verifyValidVc() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0001_vc.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatNoException().isThrownBy(result::isValid); - } - - @DisplayName("t0002: forged credentials subject") - @Test - void verify_forgedSubject() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0002_vc_forged.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatThrownBy(result::isValid).isInstanceOf(VerificationError.class); - } - - @DisplayName("t0003: valid VC with embedded verification method") - @Test - void verifyVc_withEmbeddedVerificationMethod() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0003_vc_embedded.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatNoException().isThrownBy(result::isValid); - } - - @DisplayName("t0004: proof set of two valid proofs") - @Test - void verify_multipleValidProofs() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0004_vc_two_valid_proofs.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatNoException().isThrownBy(result::isValid); - } - - @DisplayName("t0005: proof set having one forged proof") - @Test - void verify_oneForgedProof() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0005_vc_one_forged_proof.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatThrownBy(result::isValid).isInstanceOf(VerificationError.class); - } - - /** - * The did:key method is not yet supported, since it is only a community draft, and implementability in conjunction with JWS2020 is - * unclear. Furthermore, the "did:key" implementation relies - * on this Multibase library, which is not available from MavenCentral. - *

- * The biggest challenge with Jws will be to reconstruct the key type/curve from just the public key. - */ - @Disabled("did:key is not supported") - @DisplayName("t0006: DID key as verification method (not yet supported)") - @Test - void verify_didKeyAsVerificationMethod() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0006_vc_did_key.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatThrownBy(result::isValid).isInstanceOf(UnsupportedOperationException.class) - .hasMessage("Cannot deserialize public key, expected JWK format"); - } - - @DisplayName("t0007: valid signed VP") - @Test - void verify_validSignedVp() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0006_vp_compacted.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatNoException().isThrownBy(result::isValid); - } - - @DisplayName("t0008: forged signed VP") - @Test - void verify_forgedSignedVp() throws VerificationError, DocumentError { - var vc = readResourceAsJson("jws2020/verifying/0007_vp_compacted_forged.json"); - var result = Vc.verify(vc, jws2020suite).loader(loader); - assertThatThrownBy(result::isValid).isInstanceOf(VerificationError.class); - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0001_vc.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0001_vc.json deleted file mode 100644 index d46429d2f..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0001_vc.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "bpn": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0003_vc_embedded.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0003_vc_embedded.json deleted file mode 100644 index d46429d2f..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0003_vc_embedded.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "bpn": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0004_vc_did_key.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0004_vc_did_key.json deleted file mode 100644 index 46d55fdd3..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0004_vc_did_key.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1" - ] -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0005_vp_compacted_signed.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0005_vp_compacted_signed.json deleted file mode 100644 index 124db8952..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/0005_vp_compacted_signed.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "@context": [ - "https://www.w3.org/2018/credentials/v1", - "https://www.w3.org/2018/credentials/examples/v1" - ], - "id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5", - "type": "VerifiablePresentation", - "verifiableCredential": [ - { - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "bpn": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - }, - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1" - ] - } - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/businessPartnerData.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/businessPartnerData.json deleted file mode 100644 index b36e7cd46..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/businessPartnerData.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "@context": { - "@version": 1.1, - "@protected": true, - "BpnCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential", - "@context": { - "@version": 1.1, - "@protected": true, - "id": "@id", - "type": "@type", - "bpn": "http://schema.org/identifier" - } - }, - "MembershipCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#MembershipCredential", - "@context": { - "@version": 1.1, - "@protected": true, - "id": "@id", - "type": "@type", - "ex": "https://example.org/examples#", - "startTime": { - "@id": "https://schema.org/startTime", - "@type": "https://schema.org/DateTime" - }, - "memberOf": { - "@id": "https://schema.org/memberOf", - "@type": "https://schema.org/Text" - }, - "status": { - "@id": "ex:status", - "@type": "https://schema.org/Text" - } - } - }, - "NameCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#NameCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "value": { - "@id": "ex:value", - "@type": "https://schema.org/Text" - }, - "name": { - "@id": "ex:name", - "@type": "https://schema.org/Text" - }, - "shortName": { - "@id": "ex:shortName", - "@type": "https://schema.org/Text" - }, - "fipsCode": { - "@id": "ex:fipsCode", - "@type": "https://schema.org/Text" - }, - "number": { - "@id": "ex:number", - "@type": "https://schema.org/Text" - }, - "direction": { - "@id": "ex:direction", - "@type": "https://schema.org/Text" - }, - "nameType": { - "@id": "ex:nameType", - "@type": "https://schema.org/object" - }, - "language": { - "@id": "ex:language", - "@type": "https://schema.org/object" - } - } - }, - "BankAccountCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#BankAccountCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "trustScores": { - "@id": "ex:trustScores" - }, - "nationalBankIdentifier": { - "@id": "ex:nationalBankIdentifier", - "@type": "https://schema.org/Text" - }, - "nationalBankAccountIdentifier": { - "@id": "ex:nationalBankAccountIdentifier", - "@type": "https://schema.org/Text" - }, - "internationalBankIdentifier": { - "@id": "ex:internationalBankIdentifier", - "@type": "https://schema.org/Text" - }, - "internationalBankAccountIdentifier": { - "@id": "ex:internationalBankAccountIdentifier", - "@type": "https://schema.org/Text" - }, - "currency": { - "@id": "ex:typeOf", - "@type": "https://schema.org/object" - } - } - }, - "AddressCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#AddressCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "version": { - "@id": "ex:typeOf", - "@type": "https://schema.org/object" - }, - "careOf": { - "@id": "ex:careOf", - "@type": "https://schema.org/Text" - }, - "contexts": { - "@id": "ex:contexts" - }, - "bpn": { - "@id": "ex:bpn" - }, - "country": { - "@id": "ex:country", - "@type": "https://schema.org/object" - }, - "administrativeAreas": { - "@id": "ex:administrativeAreas" - }, - "postCodes": { - "@id": "ex:postCodes" - }, - "localities": { - "@id": "ex:localities" - }, - "thoroughfares": { - "@id": "ex:thoroughfares" - }, - "premises": { - "@id": "ex:premises" - }, - "postalDeliveryPoints": { - "@id": "ex:postalDeliveryPoints" - }, - "geographicCoordinates": { - "@id": "ex:geographicCoordinates", - "@type": "https://schema.org/object" - }, - "types": { - "@id": "ex:types" - } - } - }, - "LegalFormCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#LegalFormCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "technicalKey": {"@id": "ex:technicalKey", "@type":"https://schema.org/Text"}, - "name": {"@id": "ex:name", "@type":"https://schema.org/Text"}, - "url": {"@id": "ex:url", "@type":"https://schema.org/Text"}, - "mainAbbreviation": {"@id": "https://schema.org/Text#4", "@type":"https://schema.org/Text"}, - "language": {"@id": "https://schema.org/Text#5", "@type":"https://schema.org/object"}, - "categories": {"@id": "https://schema.org/Text#6", "@type":"https://schema.org/ItemList"} - } - } - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/private-key.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/private-key.json deleted file mode 100644 index 4b9aa1c24..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/issuing/private-key.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "kty": "EC", - "d": "RQenh0DD80AULwMqtTgYrihOft-kUGXGxL3prdtINDE9rp2ta3_CT1IcNUnDuG0F", - "crv": "P-384", - "x": "AqMfyYAh2SMf8bMoLbE6mOCbVyz8hukpBqrVheAFP4Anz2_cfzLEKKROD5EaAxSo", - "y": "P4KceKXv31JasLqvBPZWA9t1S2cMiHIQQ8ttAl5cFX3xBuzIPlgTRWPOVaNPWNFl" -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0001_vc.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0001_vc.json deleted file mode 100644 index af27d5f5a..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0001_vc.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - }, - "@context": [ - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1" - ] -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0002_vc_forged.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0002_vc_forged.json deleted file mode 100644 index 82643a27e..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0002_vc_forged.json +++ /dev/null @@ -1,36 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "bpn": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "BpnCredential" - }, - "id": "7f6c11b4-d2b9-43c3-8411-53f6089b5d2b", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": { - "type": "JsonWebKey2020", - "publicKeyJwk": { - "kty": "EC", - "crv": "P-384", - "x": "eQbMauiHc9HuiqXT894gW5XTCrOpeY8cjLXAckfRtdVBLzVHKaiXAAxBFeVrSB75", - "y": "YOjxhMkdH9QnNmGCGuGXJrjAtk8CQ1kTmEEi9cg2R9ge-zh8SFT1Xu6awoUjK5Bv" - }, - "id": "https://org.eclipse.tractusx/keys/68c7189c-b849-4f85-b27d-c796c7cf29ed" - }, - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..xJWgUGQLLeC6XqZKXfkboY49NJeKW7GCOvqvXsP2iCXijMQVwz3yjCEf_4Hs3xLJZqz7_ZVYOEGeg5k2UMctVQ_uwsrPZ6w72jq4pMaNAlUIEeRDLYVUSl6v2FoeZftt" - }, - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0003_vc_embedded.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0003_vc_embedded.json deleted file mode 100644 index 0475a48a1..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0003_vc_embedded.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "bpn": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "BpnCredential" - }, - "id": "7f6c11b4-d2b9-43c3-8411-53f6089b5d2b", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": { - "type": "JsonWebKey2020", - "publicKeyJwk": { - "kty": "EC", - "crv": "P-384", - "x": "eQbMauiHc9HuiqXT894gW5XTCrOpeY8cjLXAckfRtdVBLzVHKaiXAAxBFeVrSB75", - "y": "YOjxhMkdH9QnNmGCGuGXJrjAtk8CQ1kTmEEi9cg2R9ge-zh8SFT1Xu6awoUjK5Bv" - }, - "id": "https://org.eclipse.tractusx/keys/68c7189c-b849-4f85-b27d-c796c7cf29ed" - }, - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..0ueANOomarONwEL2Y0QnCFjgOdgPjI8kL2Wk4QWh8SJjvVTR80ASVh7bi8HlQp6dUigP3r509oMQkXB6TEddi0D8oQc2Lv0uWxl7yxPInBcfIsWmQrFBTb4mCSU_MJwE" - }, - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1", - "https://www.w3.org/ns/did/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0004_vc_two_valid_proofs.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0004_vc_two_valid_proofs.json deleted file mode 100644 index c68077de3..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0004_vc_two_valid_proofs.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": [ - { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": { - "type": "JsonWebKey2020", - "publicKeyJwk": { - "kty": "OKP", - "crv": "Ed25519", - "x": "WNAhS5ptnuCCX0GAvlz_Ng0vLt72fddnn3kQTkQSYhU" - }, - "id": "https://org.eclipse.tractusx/keys/e4f14fcc-d607-487d-ac42-2f526eedc91a" - }, - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFZERTQSJ9..UsYPNpv_vwcjQliZ5n5ZZECzE9S7u_vLYf2pFQgqdXCVAPdMQ3IpbEdOxe4xgi-hzw7iqpE8lRRwBGDCPOqqDA" - }, - { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - } - ], - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1", - "https://www.w3.org/ns/did/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0005_vc_one_forged_proof.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0005_vc_one_forged_proof.json deleted file mode 100644 index 7df5f179a..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0005_vc_one_forged_proof.json +++ /dev/null @@ -1,45 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": [ - { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": { - "type": "JsonWebKey2020", - "publicKeyJwk": { - "kty": "OKP", - "crv": "Ed25519", - "x": "11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo" - }, - "id": "https://org.eclipse.tractusx/keys/e4f14fcc-d607-487d-ac42-2f526eedc91a" - }, - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFZERTQSJ9..UsYPNpv_vwcjQliZ5n5ZZECzE9S7u_vLYf2pFQgqdXCVAPdMQ3IpbEdOxe4xgi-hzw7iqpE8lRRwBGDCPOqqDA" - }, - { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - } - ], - "@context": [ - "https://org.eclipse.tractusx/businessPartnerData", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1", - "https://www.w3.org/ns/did/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vc_did_key.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vc_did_key.json deleted file mode 100644 index 83394a24e..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vc_did_key.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "did:key:zC2zU1wUHhYYX4CDwNwky9f5jtSvp5aQy5aNRQMHEdpK5xkJMy6TcMbWBP3scHbR6hhidR3RRjfAA7cuLxjydXgEiZUzRzguozYFeR3G6SzjAwswJ6hXKBWhFEHm2L6Rd6GRAw8r3kyPovxvcabdMF2gBy5TAioY1mVYFeT6", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..Om6PnvxKvcHXUwT6mycHMf8aPQADAlJKCP4TgCBPgd4-Y67DwcIvZkMZrPxcNPskUIKKFXr_1Ecv5mE016xBtS03itgUsZY7BjD44oMAYgyfw1t2Gdpcph-GvuB_9U0Q" - }, - "@context": [ - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1", - "https://www.w3.org/ns/did/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vp_compacted.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vp_compacted.json deleted file mode 100644 index ec42acc49..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0006_vp_compacted.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5", - "type": "VerifiablePresentation", - "verifiableCredential": { - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - } - }, - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..qVCNVL_jxQdqa509KPTjRERopJiRtW1CqctVD_uGtUlCNF9oM2eB1L821YvjW0VjZjP6XdS5bLfQpG3azg9Hm8-L4vFBiH8HgEdVllHVcmO1odG-2GQAnhdP6Kdg42Wh" - }, - "@context": [ - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1", - "https://www.w3.org/ns/did/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0007_vp_compacted_forged.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0007_vp_compacted_forged.json deleted file mode 100644 index 30b8c8400..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/0007_vp_compacted_forged.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "id": "urn:uuid:3978344f-8596-4c3a-a978-8fcaba3903c5", - "type": "VerifiablePresentation", - "verifiableCredential": { - "issuanceDate": "2023-06-12T13:13:30Z", - "credentialSubject": { - "http://schema.org/identifier": "BPNL000000000000", - "id": "did:web:localhost:BPNL000000000000", - "type": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential" - }, - "id": "https://org.eclipse.tractusx/testcases/t0001", - "type": [ - "VerifiableCredential", - "BpnCredentialCX" - ], - "issuer": "did:web:localhost:BPNL000000000000", - "expirationDate": "2024-12-31T23:00:00Z", - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - } - }, - "sec:proof": { - "type": "JsonWebSignature2020", - "created": "2022-12-31T23:00:00Z", - "proofPurpose": "assertionMethod", - "verificationMethod": "https://org.eclipse.tractusx/verification-method", - "jws": "eyJiNjQiOmZhbHNlLCJjcml0IjpbImI2NCJdLCJhbGciOiJFUzM4NCJ9..dbi6LFkdeBeCz3sHaxRRFVJC2_rF8Z_oYqaoNOpYtzQh61WP78pK7nKT53WsE-7uiBUMamLA8vEGJpFQ3h4MXDi2OKh1YDpphS_pwyDkqYbsguMs2KYqPxe8t1OC2G1o" - }, - "@context": [ - "https://www.w3.org/ns/did/v1", - "https://www.w3.org/2018/credentials/v1", - "https://w3id.org/security/suites/jws-2020/v1", - "https://www.w3.org/ns/did/v1" - ] -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/businessPartnerData.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/businessPartnerData.json deleted file mode 100644 index b36e7cd46..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/businessPartnerData.json +++ /dev/null @@ -1,177 +0,0 @@ -{ - "@context": { - "@version": 1.1, - "@protected": true, - "BpnCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#BpnCredential", - "@context": { - "@version": 1.1, - "@protected": true, - "id": "@id", - "type": "@type", - "bpn": "http://schema.org/identifier" - } - }, - "MembershipCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#MembershipCredential", - "@context": { - "@version": 1.1, - "@protected": true, - "id": "@id", - "type": "@type", - "ex": "https://example.org/examples#", - "startTime": { - "@id": "https://schema.org/startTime", - "@type": "https://schema.org/DateTime" - }, - "memberOf": { - "@id": "https://schema.org/memberOf", - "@type": "https://schema.org/Text" - }, - "status": { - "@id": "ex:status", - "@type": "https://schema.org/Text" - } - } - }, - "NameCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#NameCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "value": { - "@id": "ex:value", - "@type": "https://schema.org/Text" - }, - "name": { - "@id": "ex:name", - "@type": "https://schema.org/Text" - }, - "shortName": { - "@id": "ex:shortName", - "@type": "https://schema.org/Text" - }, - "fipsCode": { - "@id": "ex:fipsCode", - "@type": "https://schema.org/Text" - }, - "number": { - "@id": "ex:number", - "@type": "https://schema.org/Text" - }, - "direction": { - "@id": "ex:direction", - "@type": "https://schema.org/Text" - }, - "nameType": { - "@id": "ex:nameType", - "@type": "https://schema.org/object" - }, - "language": { - "@id": "ex:language", - "@type": "https://schema.org/object" - } - } - }, - "BankAccountCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#BankAccountCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "trustScores": { - "@id": "ex:trustScores" - }, - "nationalBankIdentifier": { - "@id": "ex:nationalBankIdentifier", - "@type": "https://schema.org/Text" - }, - "nationalBankAccountIdentifier": { - "@id": "ex:nationalBankAccountIdentifier", - "@type": "https://schema.org/Text" - }, - "internationalBankIdentifier": { - "@id": "ex:internationalBankIdentifier", - "@type": "https://schema.org/Text" - }, - "internationalBankAccountIdentifier": { - "@id": "ex:internationalBankAccountIdentifier", - "@type": "https://schema.org/Text" - }, - "currency": { - "@id": "ex:typeOf", - "@type": "https://schema.org/object" - } - } - }, - "AddressCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#AddressCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "uuid": "http://schema.org/identifier", - "version": { - "@id": "ex:typeOf", - "@type": "https://schema.org/object" - }, - "careOf": { - "@id": "ex:careOf", - "@type": "https://schema.org/Text" - }, - "contexts": { - "@id": "ex:contexts" - }, - "bpn": { - "@id": "ex:bpn" - }, - "country": { - "@id": "ex:country", - "@type": "https://schema.org/object" - }, - "administrativeAreas": { - "@id": "ex:administrativeAreas" - }, - "postCodes": { - "@id": "ex:postCodes" - }, - "localities": { - "@id": "ex:localities" - }, - "thoroughfares": { - "@id": "ex:thoroughfares" - }, - "premises": { - "@id": "ex:premises" - }, - "postalDeliveryPoints": { - "@id": "ex:postalDeliveryPoints" - }, - "geographicCoordinates": { - "@id": "ex:geographicCoordinates", - "@type": "https://schema.org/object" - }, - "types": { - "@id": "ex:types" - } - } - }, - "LegalFormCredential": { - "@id": "https://org.eclipse.tractusx/businessPartnerData#LegalFormCredential", - "@context": { - "@version": 1.1, - "id": "@id", - "type": "@type", - "technicalKey": {"@id": "ex:technicalKey", "@type":"https://schema.org/Text"}, - "name": {"@id": "ex:name", "@type":"https://schema.org/Text"}, - "url": {"@id": "ex:url", "@type":"https://schema.org/Text"}, - "mainAbbreviation": {"@id": "https://schema.org/Text#4", "@type":"https://schema.org/Text"}, - "language": {"@id": "https://schema.org/Text#5", "@type":"https://schema.org/object"}, - "categories": {"@id": "https://schema.org/Text#6", "@type":"https://schema.org/ItemList"} - } - } - } -} diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/verification-method.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/verification-method.json deleted file mode 100644 index c541be484..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/jws2020/verifying/verification-method.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "@context": ["https://www.w3.org/ns/did/v1", "https://w3id.org/security/suites/jws-2020/v1"], - "type": "JsonWebKey2020", - "id": "https://org.eclipse.tractusx/verification-keys.json", - "publicKeyJwk": { - "kty": "EC", - "crv": "P-384", - "x": "AqMfyYAh2SMf8bMoLbE6mOCbVyz8hukpBqrVheAFP4Anz2_cfzLEKKROD5EaAxSo", - "y": "P4KceKXv31JasLqvBPZWA9t1S2cMiHIQQ8ttAl5cFX3xBuzIPlgTRWPOVaNPWNFl" - } -} \ No newline at end of file diff --git a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/rsakey.json b/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/rsakey.json deleted file mode 100644 index aa8d9df69..000000000 --- a/edc-extensions/ssi/jws2020-crypto-suite/src/test/resources/rsakey.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "kty": "RSA", - "kid": "cc34c0a0-bd5a-4a3c-a50d-a2a7db7643df", - "use": "sig", - "n": "pjdss8ZaDfEH6K6U7GeW2nxDqR4IP049fk1fK0lndimbMMVBdPv_hSpm8T8EtBDxrUdi1OHZfMhUixGaut-3nQ4GG9nM249oxhCtxqqNvEXrmQRGqczyLxuh-fKn9Fg--hS9UpazHpfVAFnB5aCfXoNhPuI8oByyFKMKaOVgHNqP5NBEqabiLftZD3W_lsFCPGuzr4Vp0YS7zS2hDYScC2oOMu4rGU1LcMZf39p3153Cq7bS2Xh6Y-vw5pwzFYZdjQxDn8x8BG3fJ6j8TGLXQsbKH1218_HcUJRvMwdpbUQG5nvA2GXVqLqdwp054Lzk9_B_f1lVrmOKuHjTNHq48w", - "e": "AQAB", - "d": "ksDmucdMJXkFGZxiomNHnroOZxe8AmDLDGO1vhs-POa5PZM7mtUPonxwjVmthmpbZzla-kg55OFfO7YcXhg-Hm2OWTKwm73_rLh3JavaHjvBqsVKuorX3V3RYkSro6HyYIzFJ1Ek7sLxbjDRcDOj4ievSX0oN9l-JZhaDYlPlci5uJsoqro_YrE0PRRWVhtGynd-_aWgQv1YzkfZuMD-hJtDi1Im2humOWxA4eZrFs9eG-whXcOvaSwO4sSGbS99ecQZHM2TcdXeAs1PvjVgQ_dKnZlGN3lTWoWfQP55Z7Tgt8Nf1q4ZAKd-NlMe-7iqCFfsnFwXjSiaOa2CRGZn-Q", - "p": "4A5nU4ahEww7B65yuzmGeCUUi8ikWzv1C81pSyUKvKzu8CX41hp9J6oRaLGesKImYiuVQK47FhZ--wwfpRwHvSxtNU9qXb8ewo-BvadyO1eVrIk4tNV543QlSe7pQAoJGkxCia5rfznAE3InKF4JvIlchyqs0RQ8wx7lULqwnn0", - "q": "ven83GM6SfrmO-TBHbjTk6JhP_3CMsIvmSdo4KrbQNvp4vHO3w1_0zJ3URkmkYGhz2tgPlfd7v1l2I6QkIh4Bumdj6FyFZEBpxjE4MpfdNVcNINvVj87cLyTRmIcaGxmfylY7QErP8GFA-k4UoH_eQmGKGK44TRzYj5hZYGWIC8", - "dp": "lmmU_AG5SGxBhJqb8wxfNXDPJjf__i92BgJT2Vp4pskBbr5PGoyV0HbfUQVMnw977RONEurkR6O6gxZUeCclGt4kQlGZ-m0_XSWx13v9t9DIbheAtgVJ2mQyVDvK4m7aRYlEceFh0PsX8vYDS5o1txgPwb3oXkPTtrmbAGMUBpE", - "dq": "mxRTU3QDyR2EnCv0Nl0TCF90oliJGAHR9HJmBe__EjuCBbwHfcT8OG3hWOv8vpzokQPRl5cQt3NckzX3fs6xlJN4Ai2Hh2zduKFVQ2p-AF2p6Yfahscjtq-GY9cB85NxLy2IXCC0PF--Sq9LOrTE9QV988SJy_yUrAjcZ5MmECk", - "qi": "ldHXIrEmMZVaNwGzDF9WG8sHj2mOZmQpw9yrjLK9hAsmsNr5LTyqWAqJIYZSwPTYWhY4nu2O0EY9G9uYiqewXfCKw_UngrJt8Xwfq1Zruz0YY869zPN4GiE9-9rzdZB33RBw8kIOquY3MK74FMwCihYx_LiU2YTHkaoJ3ncvtvg" -} \ No newline at end of file diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java index 3dd93d571..5072d5079 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/TxParticipant.java @@ -66,7 +66,6 @@ public void createAsset(String id) { * Stores BPN groups */ public void storeBusinessPartner(String bpn, String... groups) { - var culo = "ciao"; var body = Json.createObjectBuilder() .add(ID, bpn) .add(TX_NAMESPACE + "groups", Json.createArrayBuilder(Arrays.asList(groups))) diff --git a/settings.gradle.kts b/settings.gradle.kts index b6630d82e..3b2cbcff6 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -50,7 +50,6 @@ include(":edc-extensions:edr:edr-cache-sql") include(":edc-extensions:cx-policy") include("edc-extensions:ssi:ssi-identity-core") include("edc-extensions:ssi:ssi-miw-credential-client") -include("edc-extensions:ssi:jws2020-crypto-suite") include(":edc-extensions:ssi:ssi-identity-extractor") include(":edc-extensions:iatp:tx-iatp") From c916421962adfa730c2c7d2a6e7331fb0b167bac Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Thu, 8 Feb 2024 17:13:52 +0100 Subject: [PATCH 80/83] =?UTF-8?q?Revert=20"chore(deps):=20bump=20aquasecur?= =?UTF-8?q?ity/trivy-action=20from=200.12.0=20to=200.17.0=20(#1=E2=80=A6"?= =?UTF-8?q?=20(#1037)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit a5f0d60419a40cbcbe4ed7648efba4d63f531251. --- .github/workflows/trivy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index bd8f6db98..e83831a5a 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -58,7 +58,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.17.0 + uses: aquasecurity/trivy-action@0.12.0 with: scan-type: "config" # ignore-unfixed: true @@ -102,7 +102,7 @@ jobs: ## the next two steps will only execute if the image exists check was successful - name: Run Trivy vulnerability scanner if: success() && steps.imageCheck.outcome != 'failure' - uses: aquasecurity/trivy-action@0.17.0 + uses: aquasecurity/trivy-action@0.12.0 with: image-ref: "tractusx/${{ matrix.image }}:sha-${{ needs.git-sha7.outputs.value }}" format: "sarif" From 2e12f4098e50ff97c5ae7d827429b43a7921e456 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20Magalh=C3=A3es?= Date: Thu, 8 Feb 2024 16:50:13 +0000 Subject: [PATCH 81/83] refactor(tests): Tests use ServiceExtensionContext injection (#1034) * chore: refactor test to use context injection * chore: fix missing imports --- .../edc/jsonld/JsonLdExtensionTest.java | 8 ++------ .../vault/memory/VaultSeedExtensionTest.java | 11 +++-------- .../encryption/TxEncryptorExtensionTest.java | 17 ++++++----------- .../edc/api/edr/EdrApiExtensionTest.java | 4 +--- ...InProcessCallbackRegistryExtensionTest.java | 12 +----------- .../callback/LocalCallbackExtensionTest.java | 8 ++------ .../SsiIdentityServiceExtensionTest.java | 9 ++------- .../SsiIdentityExtractorExtensionTest.java | 8 ++------ .../ssi/miw/SsiMiwApiClientExtensionTest.java | 7 ++----- .../miw/SsiMiwConfigurationExtensionTest.java | 18 +++--------------- .../SsiMiwCredentialClientExtensionTest.java | 6 ++---- .../miw/SsiMiwOauth2ClientExtensionTest.java | 13 +++---------- .../miw/SsiMiwValidationRuleExtensionTest.java | 7 ++----- 13 files changed, 31 insertions(+), 97 deletions(-) diff --git a/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java b/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java index 7a2de182f..3129111a0 100644 --- a/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java +++ b/core/json-ld-core/src/test/java/org/eclipse/tractusx/edc/jsonld/JsonLdExtensionTest.java @@ -22,7 +22,6 @@ import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -40,18 +39,15 @@ @ExtendWith(DependencyInjectionExtension.class) public class JsonLdExtensionTest { - JsonLdExtension extension; - JsonLd jsonLdService = mock(JsonLd.class); @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { + void setup(ServiceExtensionContext context) { context.registerService(JsonLd.class, jsonLdService); - extension = factory.constructInstance(JsonLdExtension.class); } @Test - void initialize(ServiceExtensionContext context) { + void initialize(ServiceExtensionContext context, JsonLdExtension extension) { extension.initialize(context); jsonLdService.registerCachedDocument(eq(CREDENTIALS_V_1), any(URI.class)); jsonLdService.registerCachedDocument(eq(CREDENTIALS_SUMMARY_V_1), any(URI.class)); diff --git a/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java b/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java index 90e5d8103..2eb407ce0 100644 --- a/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java +++ b/edc-controlplane/edc-runtime-memory/src/test/java/org/eclipse/tractusx/edc/vault/memory/VaultSeedExtensionTest.java @@ -24,7 +24,6 @@ import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -41,27 +40,23 @@ @ExtendWith(DependencyInjectionExtension.class) class VaultSeedExtensionTest { - private VaultSeedExtension extension; - private ServiceExtensionContext context; private Monitor monitor; @BeforeEach - void setup(ServiceExtensionContext context, ObjectFactory factory) { - this.context = context; + void setup(ServiceExtensionContext context) { monitor = mock(Monitor.class); context.registerService(Monitor.class, monitor); context.registerService(Vault.class, new InMemoryVault(monitor)); - extension = factory.constructInstance(VaultSeedExtension.class); } @Test - void name() { + void name(VaultSeedExtension extension) { assertThat(extension.name()).isEqualTo("Vault Seed Extension"); } @ParameterizedTest @ValueSource(strings = { "key1:", "key1:value1", "key1:value1;", ";key1:value1", ";sdf;key1:value1" }) - void createInMemVault_validString(String secret) { + void createInMemVault_validString(String secret, ServiceExtensionContext context, VaultSeedExtension extension) { when(context.getSetting(eq(VaultSeedExtension.VAULT_MEMORY_SECRETS_PROPERTY), eq(null))).thenReturn(secret); extension.createInMemVault(context); verify(monitor, times(1)).debug(anyString()); diff --git a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java index 4dcccf508..e5fffc02a 100644 --- a/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java +++ b/edc-extensions/data-encryption/src/test/java/org/eclipse/tractusx/edc/data/encryption/TxEncryptorExtensionTest.java @@ -23,7 +23,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.tractusx.edc.data.encryption.aes.AesEncryptor; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -47,25 +46,21 @@ class TxEncryptorExtensionTest { private final Monitor monitor = mock(); - private TxEncryptorExtension extension; - private ServiceExtensionContext context; @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext c) { - c.registerService(Monitor.class, monitor); - context = c; + void setup(ServiceExtensionContext context) { + context.registerService(Monitor.class, monitor); when(context.getSetting(ENCRYPTION_KEY_ALIAS, null)).thenReturn("test-key"); - extension = factory.constructInstance(TxEncryptorExtension.class); } @Test - void createEncryptor_noConfig_createsDefault() { + void createEncryptor_noConfig_createsDefault(ServiceExtensionContext context, TxEncryptorExtension extension) { var encryptor = extension.createEncryptor(context); assertThat(encryptor).isInstanceOf(AesEncryptor.class); } @Test - void createEncryptor_otherAlgorithm_createsNoop() { + void createEncryptor_otherAlgorithm_createsNoop(ServiceExtensionContext context, TxEncryptorExtension extension) { when(context.getSetting(eq(ENCRYPTION_ALGORITHM), any())).thenReturn("some-algorithm"); var encryptor = extension.createEncryptor(context); assertThat(encryptor).isInstanceOf(NoopDataEncrypter.class); @@ -73,7 +68,7 @@ void createEncryptor_otherAlgorithm_createsNoop() { } @Test - void createEncryptor_withPropertyEqualsAes() { + void createEncryptor_withPropertyEqualsAes(ServiceExtensionContext context, TxEncryptorExtension extension) { when(context.getSetting(eq(ENCRYPTION_ALGORITHM), any())).thenReturn("AES"); var encryptor = extension.createEncryptor(context); assertThat(encryptor).isInstanceOf(AesEncryptor.class); @@ -81,7 +76,7 @@ void createEncryptor_withPropertyEqualsAes() { @ParameterizedTest @ValueSource(strings = { CACHING_ENABLED, CACHING_SECONDS }) - void verifyDeprecationWarnings(String deprecatedSetting) { + void verifyDeprecationWarnings(String deprecatedSetting, ServiceExtensionContext context, TxEncryptorExtension extension) { when(context.getSetting(eq(deprecatedSetting), any())).thenReturn("doesn't matter"); extension.createEncryptor(context); verify(monitor).warning(startsWith("Caching the secret keys was deprecated because it is unsafe")); diff --git a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java index 15a807faa..ef2e3c4e9 100644 --- a/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java +++ b/edc-extensions/edr/edr-api/src/test/java/org/eclipse/tractusx/edc/api/edr/EdrApiExtensionTest.java @@ -44,18 +44,16 @@ public class EdrApiExtensionTest { private final ManagementApiTypeTransformerRegistry transformerRegistry = mock(); private final WebService webService = mock(WebService.class); private final ManagementApiConfiguration configuration = mock(ManagementApiConfiguration.class); - private EdrApiExtension extension; @BeforeEach void setUp(ObjectFactory factory, ServiceExtensionContext context) { context.registerService(WebService.class, webService); context.registerService(ManagementApiTypeTransformerRegistry.class, transformerRegistry); context.registerService(ManagementApiConfiguration.class, configuration); - extension = factory.constructInstance(EdrApiExtension.class); } @Test - void initialize_ShouldConfigureTheController(ServiceExtensionContext context) { + void initialize_ShouldConfigureTheController(ServiceExtensionContext context, EdrApiExtension extension) { var alias = "context"; when(configuration.getContextAlias()).thenReturn(alias); diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java index ea29a42f3..150cfe589 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/InProcessCallbackRegistryExtensionTest.java @@ -21,8 +21,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -31,16 +29,8 @@ @ExtendWith(DependencyInjectionExtension.class) public class InProcessCallbackRegistryExtensionTest { - InProcessCallbackRegistryExtension extension; - - - @BeforeEach - void setUp(ObjectFactory factory, ServiceExtensionContext context) { - extension = factory.constructInstance(InProcessCallbackRegistryExtension.class); - } - @Test - void shouldInitializeTheExtension(ServiceExtensionContext context) { + void shouldInitializeTheExtension(ServiceExtensionContext context, InProcessCallbackRegistryExtension extension) { assertThat(extension.callbackRegistry()).isInstanceOf(InProcessCallbackRegistryImpl.class); } } diff --git a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java index f154c4e96..8fb31d81c 100644 --- a/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java +++ b/edc-extensions/edr/edr-callback/src/test/java/org/eclipse/tractusx/edc/callback/LocalCallbackExtensionTest.java @@ -24,7 +24,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.message.RemoteMessageDispatcherRegistry; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.tractusx.edc.spi.callback.InProcessCallback; import org.eclipse.tractusx.edc.spi.callback.InProcessCallbackRegistry; import org.junit.jupiter.api.BeforeEach; @@ -41,8 +40,6 @@ @ExtendWith(DependencyInjectionExtension.class) public class LocalCallbackExtensionTest { - LocalCallbackExtension extension; - RemoteMessageDispatcherRegistry dispatcherRegistry = mock(RemoteMessageDispatcherRegistry.class); CallbackProtocolResolverRegistry resolverRegistry = mock(CallbackProtocolResolverRegistry.class); @@ -50,16 +47,15 @@ public class LocalCallbackExtensionTest { InProcessCallbackRegistry inProcessCallbackRegistry = mock(InProcessCallbackRegistry.class); @BeforeEach - void setUp(ObjectFactory factory, ServiceExtensionContext context) { + void setUp(ServiceExtensionContext context) { context.registerService(RemoteMessageDispatcherRegistry.class, dispatcherRegistry); context.registerService(CallbackProtocolResolverRegistry.class, resolverRegistry); context.registerService(InProcessCallbackRegistry.class, inProcessCallbackRegistry); - extension = factory.constructInstance(LocalCallbackExtension.class); } @Test - void shouldInitializeTheExtension(ServiceExtensionContext context) { + void shouldInitializeTheExtension(ServiceExtensionContext context, LocalCallbackExtension extension) { extension.initialize(context); var captor = ArgumentCaptor.forClass(CallbackProtocolResolver.class); diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java index 8642df8fb..6b9a73a1a 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceExtensionTest.java @@ -23,7 +23,6 @@ import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.configuration.Config; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.tractusx.edc.iam.ssi.spi.SsiCredentialClient; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -40,17 +39,13 @@ public class SsiIdentityServiceExtensionTest { SsiIdentityServiceExtension extension; - ServiceExtensionContext context; - @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { - this.context = context; + void setup(ServiceExtensionContext context) { context.registerService(SsiCredentialClient.class, mock(SsiCredentialClient.class)); - extension = factory.constructInstance(SsiIdentityServiceExtension.class); } @Test - void initialize() { + void initialize(ServiceExtensionContext context, SsiIdentityServiceExtension extension) { var cfg = mock(Config.class); when(context.getConfig()).thenReturn(cfg); when(cfg.getString(ENDPOINT_AUDIENCE)).thenReturn("test"); diff --git a/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java b/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java index ae8f386b6..de3799312 100644 --- a/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java +++ b/edc-extensions/ssi/ssi-identity-extractor/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/extractor/SsiIdentityExtractorExtensionTest.java @@ -22,7 +22,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.agent.ParticipantAgentService; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -34,18 +33,15 @@ @ExtendWith(DependencyInjectionExtension.class) public class SsiIdentityExtractorExtensionTest { - SsiIdentityExtractorExtension extension; - ParticipantAgentService participantAgentService = mock(ParticipantAgentService.class); @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { + void setup(ServiceExtensionContext context) { context.registerService(ParticipantAgentService.class, participantAgentService); - extension = factory.constructInstance(SsiIdentityExtractorExtension.class); } @Test - void initialize(ServiceExtensionContext context) { + void initialize(ServiceExtensionContext context, SsiIdentityExtractorExtension extension) { extension.initialize(context); verify(participantAgentService).register(isA(CredentialIdentityExtractor.class)); } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java index b9debd017..9c2cbf9da 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwApiClientExtensionTest.java @@ -21,7 +21,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.edc.spi.types.TypeManager; import org.eclipse.tractusx.edc.iam.ssi.miw.api.MiwApiClient; import org.eclipse.tractusx.edc.iam.ssi.miw.api.MiwApiClientImpl; @@ -39,18 +38,16 @@ public class SsiMiwApiClientExtensionTest { private final SsiMiwConfiguration cfg = mock(SsiMiwConfiguration.class); - private SsiMiwApiClientExtension extension; @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { + void setup(ServiceExtensionContext context) { context.registerService(SsiMiwConfiguration.class, cfg); context.registerService(MiwApiClient.class, mock(MiwApiClient.class)); context.registerService(TypeManager.class, new TypeManager()); - extension = factory.constructInstance(SsiMiwApiClientExtension.class); } @Test - void initialize(ServiceExtensionContext context) { + void initialize(ServiceExtensionContext context, SsiMiwApiClientExtension extension) { when(cfg.getUrl()).thenReturn("http://localhost"); when(cfg.getAuthorityId()).thenReturn("id"); diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java index 0e722fd2f..c3333468e 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwConfigurationExtensionTest.java @@ -22,8 +22,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.configuration.Config; -import org.eclipse.edc.spi.system.injection.ObjectFactory; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -42,18 +40,8 @@ @ExtendWith(DependencyInjectionExtension.class) public class SsiMiwConfigurationExtensionTest { - private SsiMiwConfigurationExtension extension; - - private ServiceExtensionContext context; - - @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { - this.context = context; - extension = factory.constructInstance(SsiMiwConfigurationExtension.class); - } - @Test - void initialize() { + void initialize(ServiceExtensionContext context, SsiMiwConfigurationExtension extension) { var url = "http://localhost:8080"; var authorityId = "id"; var authorityIssuer = "issuer"; @@ -78,7 +66,7 @@ void initialize() { } @Test - void initialize_withDefaultIssuer() { + void initialize_withDefaultIssuer(ServiceExtensionContext context, SsiMiwConfigurationExtension extension) { var url = "http://localhost:8080"; var authorityId = "id"; @@ -102,7 +90,7 @@ void initialize_withDefaultIssuer() { } @Test - void initialize_withTrailingUrl() { + void initialize_withTrailingUrl(ServiceExtensionContext context, SsiMiwConfigurationExtension extension) { var url = "http://localhost:8080/"; var authorityId = "id"; diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java index 7d37c27a4..45f6fda9d 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwCredentialClientExtensionTest.java @@ -21,7 +21,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.tractusx.edc.iam.ssi.miw.api.MiwApiClient; import org.eclipse.tractusx.edc.iam.ssi.miw.credentials.SsiMiwCredentialClient; import org.junit.jupiter.api.BeforeEach; @@ -37,13 +36,12 @@ public class SsiMiwCredentialClientExtensionTest { SsiMiwCredentialClientExtension extension; @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { + void setup(ServiceExtensionContext context) { context.registerService(MiwApiClient.class, mock(MiwApiClient.class)); - extension = factory.constructInstance(SsiMiwCredentialClientExtension.class); } @Test - void initialize() { + void initialize(SsiMiwCredentialClientExtension extension) { assertThat(extension.credentialVerifier()).isInstanceOf(SsiMiwCredentialClient.class); } diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java index e3d4aeca2..e35d733ff 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwOauth2ClientExtensionTest.java @@ -24,7 +24,6 @@ import org.eclipse.edc.spi.security.Vault; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.edc.spi.system.configuration.Config; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.edc.spi.types.TypeManager; import org.eclipse.tractusx.edc.iam.ssi.miw.api.MiwApiClient; import org.eclipse.tractusx.edc.iam.ssi.miw.oauth2.MiwOauth2ClientConfiguration; @@ -44,23 +43,17 @@ @ExtendWith(DependencyInjectionExtension.class) public class SsiMiwOauth2ClientExtensionTest { - SsiMiwOauth2ClientExtension extension; - - ServiceExtensionContext context; - Vault vault = mock(Vault.class); @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { - this.context = context; + void setup(ServiceExtensionContext context) { context.registerService(MiwApiClient.class, mock(MiwApiClient.class)); context.registerService(TypeManager.class, new TypeManager()); context.registerService(Vault.class, vault); - extension = factory.constructInstance(SsiMiwOauth2ClientExtension.class); } @Test - void initialize() { + void initialize(ServiceExtensionContext context, SsiMiwOauth2ClientExtension extension) { var config = mock(Config.class); when(context.getConfig()).thenReturn(config); when(config.getString(TOKEN_URL)).thenReturn("url"); @@ -76,7 +69,7 @@ void initialize() { } @Test - void initialize_withTrailingUrl() { + void initialize_withTrailingUrl(ServiceExtensionContext context, SsiMiwOauth2ClientExtension extension) { var config = mock(Config.class); when(context.getConfig()).thenReturn(config); when(config.getString(TOKEN_URL)).thenReturn("http://localhost:8080/"); diff --git a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java index 763758eb7..2273cb466 100644 --- a/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java +++ b/edc-extensions/ssi/ssi-miw-credential-client/src/test/java/org/eclipse/tractusx/edc/iam/ssi/miw/SsiMiwValidationRuleExtensionTest.java @@ -21,7 +21,6 @@ import org.eclipse.edc.junit.extensions.DependencyInjectionExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; -import org.eclipse.edc.spi.system.injection.ObjectFactory; import org.eclipse.edc.token.spi.TokenValidationRulesRegistry; import org.eclipse.tractusx.edc.iam.ssi.miw.config.SsiMiwConfiguration; import org.eclipse.tractusx.edc.iam.ssi.miw.rule.SsiCredentialIssuerValidationRule; @@ -42,17 +41,15 @@ public class SsiMiwValidationRuleExtensionTest { private final TokenValidationRulesRegistry registry = mock(TokenValidationRulesRegistry.class); private final SsiMiwConfiguration cfg = mock(SsiMiwConfiguration.class); - private SsiMiwValidationRuleExtension extension; @BeforeEach - void setup(ObjectFactory factory, ServiceExtensionContext context) { + void setup(ServiceExtensionContext context) { context.registerService(SsiMiwConfiguration.class, cfg); context.registerService(TokenValidationRulesRegistry.class, registry); - extension = factory.constructInstance(SsiMiwValidationRuleExtension.class); } @Test - void initialize(ServiceExtensionContext context) { + void initialize(ServiceExtensionContext context, SsiMiwValidationRuleExtension extension) { when(cfg.getAuthorityIssuer()).thenReturn("issuer"); extension.initialize(context); From 7e32c2db95cf4051fb9f693652ff32d4aa94dd55 Mon Sep 17 00:00:00 2001 From: Enrico Risa Date: Mon, 12 Feb 2024 13:03:49 +0100 Subject: [PATCH 82/83] chore: upgrade to EDC 0.5.1 (#1047) --- DEPENDENCIES | 372 +++++++++--------- core/edr-cache-core/build.gradle.kts | 1 + .../edc/edr/core/EdrCacheCoreExtension.java | 15 +- .../EdrCacheEntryPredicateConverter.java | 146 ------- .../defaults/EdrCacheEntryPropertyLookup.java | 56 +++ .../InMemoryEndpointDataReferenceCache.java | 36 +- ...nMemoryEndpointDataReferenceCacheTest.java | 5 +- .../summary/SummaryTokenPolicyFunction.java | 17 +- .../SummaryTokenPolicyFunctionTest.java | 8 +- .../asset/ConsumerAssetRequestController.java | 9 +- .../gateway/ProviderGatewayController.java | 9 +- .../iam/iatp/scope/DefaultScopeExtractor.java | 16 +- .../iatp/scope/DefaultScopeExtractorTest.java | 8 +- .../ssi/identity/SsiIdentityServiceTest.java | 4 +- .../lifecycle/tx/iatp/IatpParticipant.java | 2 +- .../AbstractContractNegotiateTest.java | 3 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 5 +- ...HttpConsumerPullWithProxyInMemoryTest.java | 37 +- .../runtime-memory-iatp-ih/build.gradle.kts | 3 + gradle/libs.versions.toml | 5 +- 20 files changed, 366 insertions(+), 391 deletions(-) delete mode 100644 core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java create mode 100644 core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPropertyLookup.java diff --git a/DEPENDENCIES b/DEPENDENCIES index 0797f7cb6..4ed963509 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -60,13 +60,14 @@ maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.4, Apache-2. maven/mavencentral/com.github.stephenc.jcip/jcip-annotations/1.0-1, Apache-2.0, approved, CQ21949 maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0, approved, #20 maven/mavencentral/com.google.code.gson/gson/2.10.1, Apache-2.0, approved, #6159 +maven/mavencentral/com.google.collections/google-collections/1.0, Apache-2.0, approved, CQ3285 maven/mavencentral/com.google.crypto.tink/tink/1.12.0, Apache-2.0, approved, #12041 +maven/mavencentral/com.google.errorprone/error_prone_annotations/2.18.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.errorprone/error_prone_annotations/2.22.0, Apache-2.0, approved, #10661 -maven/mavencentral/com.google.errorprone/error_prone_annotations/2.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/failureaccess/1.0.1, Apache-2.0, approved, CQ22654 -maven/mavencentral/com.google.guava/guava/31.0.1-jre, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.google.guava/guava/32.0.1-jre, Apache-2.0 AND CC0-1.0 AND CC-PDDC, approved, #8772 maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 -maven/mavencentral/com.google.j2objc/j2objc-annotations/1.3, Apache-2.0, approved, CQ21195 +maven/mavencentral/com.google.j2objc/j2objc-annotations/2.8, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.protobuf/protobuf-java/3.24.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j-persistence-extension/1.2.0, MIT, approved, clearlydefined maven/mavencentral/com.microsoft.azure/msal4j/1.14.0, MIT, approved, clearlydefined @@ -76,7 +77,7 @@ maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefin maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.30.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/10.7.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.puppycrawl.tools/checkstyle/10.0, LGPL-2.1-or-later, approved, #7936 +maven/mavencentral/com.puppycrawl.tools/checkstyle/10.12.3, LGPL-2.1-only AND Apache-2.0 AND LGPL-2.1-or-later AND ANTLR-PD AND GPL-2.0-or-later AND LGPL-2.0-or-later AND (Apache-2.0 AND LGPL-2.1-or-later) AND LicenseRef-scancode-proprietary-license, restricted, #13190 maven/mavencentral/com.squareup.okhttp3/mockwebserver/5.0.0-alpha.12, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okhttp3/mockwebserver3/5.0.0-alpha.12, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 @@ -97,7 +98,7 @@ maven/mavencentral/commons-logging/commons-logging/1.2, Apache-2.0, approved, CQ maven/mavencentral/dev.failsafe/failsafe-okhttp/3.3.2, Apache-2.0, approved, #9178 maven/mavencentral/dev.failsafe/failsafe/3.3.1, Apache-2.0, approved, #9268 maven/mavencentral/dev.failsafe/failsafe/3.3.2, Apache-2.0, approved, #9268 -maven/mavencentral/info.picocli/picocli/4.6.3, Apache-2.0, approved, clearlydefined +maven/mavencentral/info.picocli/picocli/4.7.4, Apache-2.0, approved, #4365 maven/mavencentral/io.github.classgraph/classgraph/4.8.154, MIT, approved, CQ22530 maven/mavencentral/io.github.classgraph/classgraph/4.8.162, MIT, approved, CQ22530 maven/mavencentral/io.micrometer/micrometer-commons/1.12.2, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 @@ -200,201 +201,222 @@ maven/mavencentral/net.java.dev.jna/jna/5.13.0, Apache-2.0 AND LGPL-2.1-or-later maven/mavencentral/net.minidev/accessors-smart/2.5.0, Apache-2.0, approved, clearlydefined maven/mavencentral/net.minidev/json-smart/2.4.10, Apache-2.0, approved, #3288 maven/mavencentral/net.minidev/json-smart/2.5.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/net.sf.saxon/Saxon-HE/10.6, MPL-2.0 AND W3C, approved, #7945 -maven/mavencentral/org.antlr/antlr4-runtime/4.9.3, BSD-3-Clause, approved, #322 +maven/mavencentral/net.sf.saxon/Saxon-HE/12.3, MPL-2.0-no-copyleft-exception AND (LicenseRef-scancode-proprietary-license AND MPL-2.0-no-copyleft-exception) AND (MPL-2.0-no-copyleft-exception AND X11) AND (MIT AND MPL-2.0-no-copyleft-exception) AND (MPL-1.0 AND MPL-2.0-no-copyleft-exception) AND (Apache-2.0 AND MPL-2.0-no-copyleft-exception) AND MPL-1.0, restricted, #13191 +maven/mavencentral/org.antlr/antlr4-runtime/4.11.1, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-compress/1.25.0, Apache-2.0, approved, #11600 maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, CQ22642 maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-lang3/3.13.0, Apache-2.0, approved, #9820 +maven/mavencentral/org.apache.commons/commons-lang3/3.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.apache.commons/commons-lang3/3.8.1, Apache-2.0, approved, #815 maven/mavencentral/org.apache.commons/commons-pool2/2.12.0, Apache-2.0 AND LicenseRef-Public-Domain, approved, #10843 +maven/mavencentral/org.apache.commons/commons-text/1.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.groovy/groovy-bom/4.0.16, Apache-2.0, approved, #9266 maven/mavencentral/org.apache.groovy/groovy-json/4.0.16, Apache-2.0, approved, #7411 maven/mavencentral/org.apache.groovy/groovy-xml/4.0.16, Apache-2.0, approved, #10179 maven/mavencentral/org.apache.groovy/groovy/4.0.16, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 +maven/mavencentral/org.apache.httpcomponents.client5/httpclient5/5.1.3, Apache-2.0, approved, #6276 +maven/mavencentral/org.apache.httpcomponents.core5/httpcore5-h2/5.1.3, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.apache.httpcomponents.core5/httpcore5/5.1.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.13, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ23527 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.13, Apache-2.0, approved, CQ23528 +maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.14, Apache-2.0, approved, CQ23528 maven/mavencentral/org.apache.httpcomponents/httpmime/4.5.13, Apache-2.0, approved, CQ11718 +maven/mavencentral/org.apache.maven.doxia/doxia-core/1.12.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.apache.maven.doxia/doxia-logging-api/1.12.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.apache.maven.doxia/doxia-module-xdoc/1.12.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.apache.maven.doxia/doxia-sink-api/1.12.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.sshd/sshd-common/2.12.0, Apache-2.0 AND ISC, approved, #12842 maven/mavencentral/org.apache.sshd/sshd-core/2.12.0, Apache-2.0, approved, #12841 maven/mavencentral/org.apache.sshd/sshd-sftp/2.12.0, Apache-2.0, approved, #12840 +maven/mavencentral/org.apache.xbean/xbean-reflect/3.7, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.assertj/assertj-core/3.25.1, Apache-2.0, approved, #12585 -maven/mavencentral/org.assertj/assertj-core/3.25.2, Apache-2.0, approved, #12585 maven/mavencentral/org.assertj/assertj-core/3.25.3, Apache-2.0, approved, #12585 maven/mavencentral/org.awaitility/awaitility/4.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.77, MIT, approved, #11593 maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.77, MIT AND CC0-1.0, approved, #11595 maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.77, MIT, approved, #11596 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.checkerframework/checker-qual/3.12.0, MIT, approved, clearlydefined +maven/mavencentral/org.checkerframework/checker-qual/3.27.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.41.0, MIT, approved, #12032 +maven/mavencentral/org.codehaus.plexus/plexus-classworlds/2.6.0, Apache-2.0 AND Plexus, approved, CQ22821 +maven/mavencentral/org.codehaus.plexus/plexus-component-annotations/2.1.0, Apache-2.0, approved, #809 +maven/mavencentral/org.codehaus.plexus/plexus-container-default/2.1.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.codehaus.plexus/plexus-utils/3.1.1, , approved, CQ16492 +maven/mavencentral/org.codehaus.plexus/plexus-utils/3.3.0, , approved, CQ21066 maven/mavencentral/org.codehaus.woodstox/stax2-api/4.2.1, BSD-2-Clause, approved, #2670 -maven/mavencentral/org.eclipse.edc/api-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/api-observability/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-index-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/autodoc-processor/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/aws-s3-test/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-blob-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/azure-test/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/boot/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-api-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/crypto-common/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-client/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-http/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/data-plane-util/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/iam-mock/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-did-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-service/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/junit/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jws2020/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-configuration/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/management-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/micrometer-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-client/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/oauth2-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-lease/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/state-machine/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/token-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-local/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-api/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-core/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-azure/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.5.1-20240131-SNAPSHOT, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/api-observability/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-index-sql/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-tokenbased/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/autodoc-processor/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/aws-s3-test/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-blob-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/azure-test/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-event-dispatcher/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/callback-http-dispatcher/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/configuration-filesystem/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-store-sql/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-store-sql/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-api-configuration/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-aggregate-services/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api-client/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/crypto-common/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-address-http-data-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-aws-s3/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-azure-storage/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-client/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-control-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-oauth2/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-http/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-public-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-selector-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/data-plane-util/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/iam-mock/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-did-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-credentials/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-did-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-did/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-keypairs/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-participants/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-hub-store-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-issuers-configuration/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-service/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-client-configuration/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-embedded/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-remote/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-sts-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/identity-trust-transform/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-micrometer/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jetty-micrometer/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/junit/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jws2020/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jwt-verifiable-credentials/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/ldp-verifiable-credentials/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-configuration/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-test-fixtures/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/micrometer-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-client/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/oauth2-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-store-sql/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-monitor-store-sql/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/security/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-lease/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/sql-pool-apache-commons/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/state-machine/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-local/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-data-plane/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-api/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-store-sql/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-pull-http-dynamic-receiver/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-core/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-data-address-http-data/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-azure/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/vault-hashicorp/0.5.1, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.5.1, Apache-2.0, approved, technology.edc maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.20, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.flywaydb/flyway-core/9.22.3, Apache-2.0, approved, #10349 maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish @@ -443,13 +465,9 @@ maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.10.2, EPL-2.0, appro maven/mavencentral/org.junit.jupiter/junit-jupiter-engine/5.9.3, EPL-2.0, approved, #3125 maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.1, EPL-2.0, approved, #9708 maven/mavencentral/org.junit.jupiter/junit-jupiter-params/5.10.2, EPL-2.0, approved, #9708 -maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.1, EPL-2.0, approved, #9715 maven/mavencentral/org.junit.platform/junit-platform-commons/1.10.2, EPL-2.0, approved, #9715 -maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.1, EPL-2.0, approved, #9709 maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.2, EPL-2.0, approved, #9709 -maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.1, EPL-2.0, approved, #9704 maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.2, EPL-2.0, approved, #9704 -maven/mavencentral/org.junit/junit-bom/5.10.1, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.10.2, EPL-2.0, approved, #9844 maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711 maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 @@ -478,7 +496,6 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.35, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.7, MIT, approved, CQ9827 maven/mavencentral/org.slf4j/slf4j-api/2.0.12, MIT, approved, #5915 -maven/mavencentral/org.slf4j/slf4j-api/2.0.5, MIT, approved, #5915 maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 maven/mavencentral/org.testcontainers/database-commons/1.19.4, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/jdbc/1.19.4, Apache-2.0, approved, #10348 @@ -487,6 +504,7 @@ maven/mavencentral/org.testcontainers/junit-jupiter/1.19.4, MIT, approved, #1034 maven/mavencentral/org.testcontainers/postgresql/1.19.4, MIT, approved, #10350 maven/mavencentral/org.testcontainers/testcontainers/1.19.4, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.testcontainers/vault/1.19.4, MIT, approved, #10852 +maven/mavencentral/org.xmlresolver/xmlresolver/5.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 maven/mavencentral/software.amazon.awssdk/annotations/2.22.9, Apache-2.0, approved, #12618 diff --git a/core/edr-cache-core/build.gradle.kts b/core/edr-cache-core/build.gradle.kts index 9eabb03f9..9312ef4b3 100644 --- a/core/edr-cache-core/build.gradle.kts +++ b/core/edr-cache-core/build.gradle.kts @@ -29,6 +29,7 @@ dependencies { implementation(project(":spi:edr-spi")) testImplementation(testFixtures(project(":spi:edr-spi"))) + testImplementation(libs.edc.core.connector) } diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java index 7d7e44434..3f273bea8 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/EdrCacheCoreExtension.java @@ -20,8 +20,12 @@ package org.eclipse.tractusx.edc.edr.core; import org.eclipse.edc.runtime.metamodel.annotation.Extension; +import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; +import org.eclipse.edc.spi.query.CriterionOperatorRegistry; import org.eclipse.edc.spi.system.ServiceExtension; +import org.eclipse.edc.spi.system.ServiceExtensionContext; +import org.eclipse.tractusx.edc.edr.core.defaults.EdrCacheEntryPropertyLookup; import org.eclipse.tractusx.edc.edr.core.defaults.InMemoryEndpointDataReferenceCache; import org.eclipse.tractusx.edc.edr.spi.store.EndpointDataReferenceCache; @@ -33,14 +37,23 @@ public class EdrCacheCoreExtension implements ServiceExtension { static final String NAME = "EDR Cache Core"; + @Inject + private CriterionOperatorRegistry operatorRegistry; + @Override public String name() { return NAME; } + + @Override + public void initialize(ServiceExtensionContext context) { + operatorRegistry.registerPropertyLookup(new EdrCacheEntryPropertyLookup()); + } + @Provider(isDefault = true) public EndpointDataReferenceCache edrCache() { - return new InMemoryEndpointDataReferenceCache(); + return new InMemoryEndpointDataReferenceCache(operatorRegistry); } } diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java deleted file mode 100644 index 7852e89e1..000000000 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPredicateConverter.java +++ /dev/null @@ -1,146 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://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. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.edc.edr.core.defaults; - -import org.eclipse.edc.spi.query.Criterion; -import org.eclipse.edc.spi.query.CriterionToPredicateConverter; -import org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntry; -import org.jetbrains.annotations.NotNull; - -import java.util.List; -import java.util.Objects; -import java.util.function.Predicate; -import java.util.regex.Pattern; - -import static java.lang.String.format; - -/** - * This class is almost a 1:1 copy of the {@code CriterionToPredicateConverterImpl} (except for the {@code property()} method) from the {@code control-plane-core} module. - * Pulling in that module is not possible, because that would pull in almost the entire Control Plane - */ -public class EdrCacheEntryPredicateConverter implements CriterionToPredicateConverter { - - public static final String ASSET_ID = "assetId"; - public static final String AGREEMENT_ID = "agreementId"; - public static final String PROVIDER_ID = "providerId"; - public static final String CONTRACT_NEGOTIATION_ID = "contractNegotiationId"; - public static final String STATE = "state"; - - @Override - public Predicate convert(Criterion criterion) { - var operator = criterion.getOperator().toLowerCase(); - - return switch (operator) { - case "=" -> equalPredicate(criterion); - case "in" -> inPredicate(criterion); - case "like" -> likePredicate(criterion); - default -> - throw new IllegalArgumentException(format("Operator [%s] is not supported by this converter!", criterion.getOperator())); - }; - } - - protected Object property(String key, Object object) { - if (object instanceof EndpointDataReferenceEntry entry) { - return switch (key) { - case ASSET_ID -> entry.getAssetId(); - case AGREEMENT_ID -> entry.getAgreementId(); - case PROVIDER_ID -> entry.getProviderId(); - case CONTRACT_NEGOTIATION_ID -> entry.getContractNegotiationId(); - case STATE -> entry.getState(); - default -> null; - }; - } - throw new IllegalArgumentException("Can only handle objects of type " + EndpointDataReferenceEntry.class.getSimpleName() + " but received an " + object.getClass().getSimpleName()); - } - - @NotNull - private Predicate equalPredicate(Criterion criterion) { - return t -> { - var operandLeft = (String) criterion.getOperandLeft(); - var property = property(operandLeft, t); - if (property == null) { - return false; - } - - if (property.getClass().isEnum() && criterion.getOperandRight() instanceof String) { - var enumProperty = (Enum) property; - return Objects.equals(enumProperty.name(), criterion.getOperandRight()); - } - - if (property instanceof Number c1 && criterion.getOperandRight() instanceof Number c2) { - // interpret as double to not lose any precision - return Double.compare(c1.doubleValue(), c2.doubleValue()) == 0; - } - - if (property instanceof List list) { - return list.stream().anyMatch(it -> Objects.equals(it, criterion.getOperandRight())); - } - - return Objects.equals(property, criterion.getOperandRight()); - }; - } - - @NotNull - private Predicate inPredicate(Criterion criterion) { - return t -> { - var operandLeft = (String) criterion.getOperandLeft(); - var property = property(operandLeft, t); - if (property == null) { - return false; - } - - if (criterion.getOperandRight() instanceof Iterable iterable) { - for (var value : iterable) { - if (value.equals(property)) { - return true; - } - } - return false; - } else { - throw new IllegalArgumentException("Operator IN requires the right-hand operand to be an " + Iterable.class.getName() + " but was " + criterion.getOperandRight().getClass().getName()); - } - - - }; - } - - @NotNull - private Predicate likePredicate(Criterion criterion) { - return t -> { - var operandLeft = (String) criterion.getOperandLeft(); - var property = property(operandLeft, t); - if (property == null) { - return false; - } - - if (criterion.getOperandRight() instanceof String operandRight) { - var regexPattern = Pattern.quote(operandRight) - .replace("%", "\\E.*\\Q") - .replace("_", "\\E.\\Q"); - - regexPattern = "^" + regexPattern + "$"; - - return Pattern.compile(regexPattern).matcher(property.toString()).matches(); - } - - return false; - }; - } -} diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPropertyLookup.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPropertyLookup.java new file mode 100644 index 000000000..9cc2de91c --- /dev/null +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/EdrCacheEntryPropertyLookup.java @@ -0,0 +1,56 @@ +/******************************************************************************** + * Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://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. + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ + +package org.eclipse.tractusx.edc.edr.core.defaults; + +import org.eclipse.edc.spi.query.PropertyLookup; +import org.eclipse.tractusx.edc.edr.spi.types.EndpointDataReferenceEntry; + +/** + * This class is almost a 1:1 copy of the {@code CriterionToPredicateConverterImpl} (except for the {@code property()} method) from the {@code control-plane-core} module. + * Pulling in that module is not possible, because that would pull in almost the entire Control Plane + */ +public class EdrCacheEntryPropertyLookup implements PropertyLookup { + + public static final String ASSET_ID = "assetId"; + public static final String AGREEMENT_ID = "agreementId"; + public static final String PROVIDER_ID = "providerId"; + public static final String CONTRACT_NEGOTIATION_ID = "contractNegotiationId"; + public static final String STATE = "state"; + + @Override + public Object getProperty(String key, Object object) { + return property(key, object); + } + + protected Object property(String key, Object object) { + if (object instanceof EndpointDataReferenceEntry entry) { + return switch (key) { + case ASSET_ID -> entry.getAssetId(); + case AGREEMENT_ID -> entry.getAgreementId(); + case PROVIDER_ID -> entry.getProviderId(); + case CONTRACT_NEGOTIATION_ID -> entry.getContractNegotiationId(); + case STATE -> entry.getState(); + default -> null; + }; + } + return null; + } + +} diff --git a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java index e67ac270e..7d9ab3376 100644 --- a/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java +++ b/core/edr-cache-core/src/main/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCache.java @@ -22,6 +22,7 @@ import org.eclipse.edc.spi.entity.StatefulEntity; import org.eclipse.edc.spi.persistence.Lease; import org.eclipse.edc.spi.query.Criterion; +import org.eclipse.edc.spi.query.CriterionOperatorRegistry; import org.eclipse.edc.spi.query.QuerySpec; import org.eclipse.edc.spi.result.StoreResult; import org.eclipse.edc.spi.types.domain.edr.EndpointDataReference; @@ -57,10 +58,8 @@ */ public class InMemoryEndpointDataReferenceCache implements EndpointDataReferenceCache { private static final long DEFAULT_LEASE_TIME_MILLIS = 60_000; + protected final CriterionOperatorRegistry criterionOperatorRegistry; private final LockManager lockManager; - private final EdrCacheEntryPredicateConverter predicateConverter = new EdrCacheEntryPredicateConverter(); - - private final Map> entriesByAssetId; private final Map entriesByEdrId; @@ -72,11 +71,13 @@ public class InMemoryEndpointDataReferenceCache implements EndpointDataReference private final Clock clock; - public InMemoryEndpointDataReferenceCache() { - this(UUID.randomUUID().toString(), Clock.systemUTC(), new ConcurrentHashMap<>()); + + public InMemoryEndpointDataReferenceCache(CriterionOperatorRegistry criterionOperatorRegistry) { + this(criterionOperatorRegistry, UUID.randomUUID().toString(), Clock.systemUTC(), new ConcurrentHashMap<>()); } - public InMemoryEndpointDataReferenceCache(String lockId, Clock clock, Map leases) { + public InMemoryEndpointDataReferenceCache(CriterionOperatorRegistry criterionOperatorRegistry, String lockId, Clock clock, Map leases) { + this.criterionOperatorRegistry = criterionOperatorRegistry; this.lockId = lockId; lockManager = new LockManager(new ReentrantReadWriteLock()); entriesByAssetId = new HashMap<>(); @@ -101,16 +102,6 @@ public StoreResult findByIdAndLease(String transferP }); } - @Override - public EndpointDataReferenceEntry findById(String correlationId) { - return findByIdAndLease(correlationId).orElse(storeFailure -> null); - } - - @Override - public void save(EndpointDataReferenceEntry entity) { - throw new UnsupportedOperationException("Please use save(EndpointDataReferenceEntry, EndpointDataReference) instead!"); - } - @Override @NotNull public List referencesForAsset(String assetId, String providerId) { @@ -187,15 +178,24 @@ public StoreResult deleteByTransferProcessId(String }); } + @Override + public EndpointDataReferenceEntry findById(String correlationId) { + return findByIdAndLease(correlationId).orElse(storeFailure -> null); + } + @Override public @NotNull List nextNotLeased(int max, Criterion... criteria) { return leaseAndGet(max, criteria); } + @Override + public void save(EndpointDataReferenceEntry entity) { + throw new UnsupportedOperationException("Please use save(EndpointDataReferenceEntry, EndpointDataReference) instead!"); + } private @NotNull List leaseAndGet(int max, Criterion... criteria) { return lockManager.writeLock(() -> { - var filterPredicate = Arrays.stream(criteria).map(predicateConverter::convert).reduce(x -> true, Predicate::and); + var filterPredicate = Arrays.stream(criteria).map(criterionOperatorRegistry::toPredicate).reduce(x -> true, Predicate::and); var entities = entriesByEdrId.values().stream() .filter(filterPredicate) .filter(e -> !isLeased(e.getId())) @@ -210,7 +210,7 @@ public StoreResult deleteByTransferProcessId(String private Stream filterBy(List criteria) { return lockManager.readLock(() -> { var predicate = criteria.stream() - .map(predicateConverter::convert) + .map(criterionOperatorRegistry::toPredicate) .reduce(x -> true, Predicate::and); return entriesByEdrId.values().stream() diff --git a/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java b/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java index d471cab75..42341777a 100644 --- a/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java +++ b/core/edr-cache-core/src/test/java/org/eclipse/tractusx/edc/edr/core/defaults/InMemoryEndpointDataReferenceCacheTest.java @@ -19,6 +19,7 @@ package org.eclipse.tractusx.edc.edr.core.defaults; +import org.eclipse.edc.connector.core.store.CriterionOperatorRegistryImpl; import org.eclipse.edc.spi.persistence.Lease; import org.eclipse.tractusx.edc.edr.spi.EndpointDataReferenceCacheTestBase; import org.eclipse.tractusx.edc.edr.spi.store.EndpointDataReferenceCache; @@ -34,7 +35,9 @@ class InMemoryEndpointDataReferenceCacheTest extends EndpointDataReferenceCacheT @BeforeEach void setUp() { - cache = new InMemoryEndpointDataReferenceCache(CONNECTOR_NAME, Clock.systemUTC(), leases); + var criterionOperatorRegistry = CriterionOperatorRegistryImpl.ofDefaults(); + criterionOperatorRegistry.registerPropertyLookup(new EdrCacheEntryPropertyLookup()); + cache = new InMemoryEndpointDataReferenceCache(criterionOperatorRegistry, CONNECTOR_NAME, Clock.systemUTC(), leases); } @Override diff --git a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java index 00de6eb4b..7125a1ae8 100644 --- a/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java +++ b/edc-extensions/cx-policy/src/main/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunction.java @@ -22,9 +22,8 @@ import org.eclipse.edc.policy.engine.spi.PolicyContext; import org.eclipse.edc.policy.model.Policy; import org.eclipse.edc.spi.EdcException; -import org.eclipse.edc.spi.iam.TokenParameters; +import org.eclipse.edc.spi.iam.RequestScope; -import java.util.Optional; import java.util.function.BiFunction; import static java.lang.String.format; @@ -37,18 +36,12 @@ public class SummaryTokenPolicyFunction implements BiFunction s + " " + CX_SUMMARY_CREDENTIAL) - .orElse(CX_SUMMARY_CREDENTIAL); - - params.claims("scope", newScope); + scopes.scope(CX_SUMMARY_CREDENTIAL); return true; } } diff --git a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java index 0bcc52627..82e4f175e 100644 --- a/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java +++ b/edc-extensions/cx-policy/src/test/java/org/eclipse/tractusx/edc/policy/cx/summary/SummaryTokenPolicyFunctionTest.java @@ -21,7 +21,7 @@ import org.eclipse.edc.policy.engine.spi.PolicyContext; import org.eclipse.edc.policy.model.Policy; -import org.eclipse.edc.spi.iam.TokenParameters; +import org.eclipse.edc.spi.iam.RequestScope; import org.junit.jupiter.api.Test; import static org.assertj.core.api.Assertions.assertThat; @@ -37,13 +37,13 @@ void verify_add_credential() { var function = new SummaryTokenPolicyFunction(); var context = mock(PolicyContext.class); - var builder = TokenParameters.Builder.newInstance().claims("aud", "aud"); - when(context.getContextData(eq(TokenParameters.Builder.class))).thenReturn(builder); + var builder = RequestScope.Builder.newInstance(); + when(context.getContextData(eq(RequestScope.Builder.class))).thenReturn(builder); var policy = Policy.Builder.newInstance().build(); function.apply(policy, context); - assertThat(builder.build().getStringClaim("scope").contains(CX_SUMMARY_CREDENTIAL)).isTrue(); + assertThat(builder.build().getScopes().contains(CX_SUMMARY_CREDENTIAL)).isTrue(); } } diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java index 8f0df8aff..5d104c214 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-consumer-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/consumer/api/asset/ConsumerAssetRequestController.java @@ -26,6 +26,7 @@ import jakarta.ws.rs.container.AsyncResponse; import jakarta.ws.rs.container.Suspended; import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.StreamingOutput; import org.eclipse.edc.connector.dataplane.http.spi.HttpDataAddress; import org.eclipse.edc.connector.dataplane.spi.pipeline.StreamResult; @@ -115,7 +116,13 @@ public void requestAsset(AssetRequest request, @Suspended AsyncResponse response try { // transfer the data asynchronously - var sink = new AsyncStreamingDataSink(consumer -> response.resume((StreamingOutput) consumer::accept), executorService, monitor); + + AsyncStreamingDataSink.AsyncResponseContext asyncResponseContext = callback -> { + StreamingOutput output = t -> callback.outputStreamConsumer().accept(t); + var resp = Response.ok(output).type(callback.mediaType()).build(); + return response.resume(resp); + }; + var sink = new AsyncStreamingDataSink(asyncResponseContext, executorService); transferService.transfer(flowRequest, sink).whenComplete((result, throwable) -> handleCompletion(response, result, throwable)); } catch (Exception e) { diff --git a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java index 0d43b38b2..19d35432e 100644 --- a/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java +++ b/edc-extensions/dataplane-proxy/edc-dataplane-proxy-provider-api/src/main/java/org/eclipse/tractusx/edc/dataplane/proxy/provider/api/gateway/ProviderGatewayController.java @@ -27,6 +27,7 @@ import jakarta.ws.rs.core.Context; import jakarta.ws.rs.core.HttpHeaders; import jakarta.ws.rs.core.PathSegment; +import jakarta.ws.rs.core.Response; import jakarta.ws.rs.core.StreamingOutput; import org.eclipse.edc.connector.dataplane.http.spi.HttpDataAddress; import org.eclipse.edc.connector.dataplane.spi.pipeline.StreamResult; @@ -152,7 +153,13 @@ public void requestAsset(@Context ContainerRequestContext context, @Suspended As var flowRequest = createRequest(requestPath, configuration, httpDataAddress); // transfer the data asynchronously - var sink = new AsyncStreamingDataSink(consumer -> response.resume((StreamingOutput) consumer::accept), executorService, monitor); + + AsyncStreamingDataSink.AsyncResponseContext asyncResponseContext = callback -> { + StreamingOutput output = t -> callback.outputStreamConsumer().accept(t); + var resp = Response.ok(output).type(callback.mediaType()).build(); + return response.resume(resp); + }; + var sink = new AsyncStreamingDataSink(asyncResponseContext, executorService); try { transferService.transfer(flowRequest, sink).whenComplete((result, throwable) -> handleCompletion(response, result, throwable)); diff --git a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java index 02ef153f3..6224fb1c2 100644 --- a/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java +++ b/edc-extensions/iatp/tx-iatp/src/main/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractor.java @@ -22,9 +22,8 @@ import org.eclipse.edc.policy.engine.spi.PolicyContext; import org.eclipse.edc.policy.model.Policy; import org.eclipse.edc.spi.EdcException; -import org.eclipse.edc.spi.iam.TokenParameters; +import org.eclipse.edc.spi.iam.RequestScope; -import java.util.HashSet; import java.util.Set; import java.util.function.BiFunction; @@ -37,16 +36,11 @@ public record DefaultScopeExtractor(Set defaultScopes) implements BiFunc @Override public Boolean apply(Policy policy, PolicyContext policyContext) { - var tokenBuilder = policyContext.getContextData(TokenParameters.Builder.class); - if (tokenBuilder == null) { - throw new EdcException(format("%s not set in policy context", TokenParameters.Builder.class.getName())); + var scopes = policyContext.getContextData(RequestScope.Builder.class); + if (scopes == null) { + throw new EdcException(format("%s not set in policy context", RequestScope.Builder.class.getName())); } - - var tokenParam = tokenBuilder.build(); - var existingScope = tokenParam.getStringClaim("scope"); - var newScopes = new HashSet<>(defaultScopes); - newScopes.add(existingScope); - tokenBuilder.claims("scope", String.join(" ", newScopes).trim()); + defaultScopes.forEach(scopes::scope); return true; } } diff --git a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java index e8b0821aa..f510f71bc 100644 --- a/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java +++ b/edc-extensions/iatp/tx-iatp/src/test/java/org/eclipse/tractusx/edc/iam/iatp/scope/DefaultScopeExtractorTest.java @@ -22,7 +22,7 @@ import org.eclipse.edc.policy.engine.spi.PolicyContextImpl; import org.eclipse.edc.policy.model.Policy; import org.eclipse.edc.spi.EdcException; -import org.eclipse.edc.spi.iam.TokenParameters; +import org.eclipse.edc.spi.iam.RequestScope; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -43,11 +43,11 @@ void setup() { @Test void verify_applyExtractor() { - var builder = TokenParameters.Builder.newInstance(); - var ctx = PolicyContextImpl.Builder.newInstance().additional(TokenParameters.Builder.class, builder).build(); + var builder = RequestScope.Builder.newInstance(); + var ctx = PolicyContextImpl.Builder.newInstance().additional(RequestScope.Builder.class, builder).build(); extractor.apply(Policy.Builder.newInstance().build(), ctx); - assertThat(builder.build().getStringClaim("scope").split(" ")).contains("scope1", "scope2"); + assertThat(builder.build().getScopes()).contains("scope1", "scope2"); } @Test diff --git a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java index d0a157acd..b6d7fc050 100644 --- a/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java +++ b/edc-extensions/ssi/ssi-identity-core/src/test/java/org/eclipse/tractusx/edc/iam/ssi/identity/SsiIdentityServiceTest.java @@ -59,7 +59,7 @@ void verifyJwtToken_success() { when(tokenValidationService.validate(eq(token), eq(List.of()))).thenReturn(Result.success(claim)); - var result = identityService.verifyJwtToken(token, "audience"); + var result = identityService.verifyJwtToken(token, mock()); assertThat(result).isNotNull().extracting(Result::getContent).isEqualTo(claim); } @@ -70,7 +70,7 @@ void verifyJwtToken_failed() { when(tokenValidationService.validate(eq(token), eq(List.of()))).thenReturn(Result.failure("fail")); - var result = identityService.verifyJwtToken(token, "audience"); + var result = identityService.verifyJwtToken(token, mock()); assertThat(result).isNotNull().matches(Result::failed); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java index 551938568..f5ed7d1a3 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/lifecycle/tx/iatp/IatpParticipant.java @@ -128,7 +128,7 @@ private DidDocument generateDidDocument() { var service = new Service(); service.setId("#credential-service"); service.setType("CredentialService"); - service.setServiceEndpoint(csService.toString()); + service.setServiceEndpoint(csService + "/participants/" + getBpn()); var ecKey = new ECKey.Builder(Curve.P_256, (ECPublicKey) keyPair.getPublic()) .privateKey((ECPrivateKey) keyPair.getPrivate()) diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java index d0d4ade4e..df1d470f4 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/negotiation/AbstractContractNegotiateTest.java @@ -27,7 +27,6 @@ import java.util.Map; -import static java.lang.String.format; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.TX_NAMESPACE; @@ -86,7 +85,7 @@ void contractNegotiation_shouldFail_whenPolicyEvaluationFails() { var error = SOKRATES.getContractNegotiationError(negotiationId); assertThat(error).isNotNull(); - assertThat(error).contains(format("Contract offer is not valid: Policy %s not fulfilled", contractPolicyId)); + assertThat(error).contains("Contract offer is not valid: Policy in scope contract.negotiation not fulfilled"); }); } diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java index fdd7bbdec..4691907cd 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest.java @@ -21,6 +21,7 @@ import jakarta.json.JsonObject; import org.eclipse.edc.junit.annotations.EndToEndTest; +import org.junit.jupiter.api.Disabled; import java.util.Map; @@ -28,8 +29,10 @@ import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest +// temporarily disabled waiting for an upstream fix +@Disabled public class IatpFrameworkAgreementHttpConsumerPullWithProxyInMemoryTest extends IatpHttpConsumerPullWithProxyInMemoryTest { - + @Override protected JsonObject createContractPolicy(String bpn) { return frameworkPolicy(Map.of(TX_CREDENTIAL_NAMESPACE + "FrameworkAgreement.pcf", "active")); diff --git a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java index 1f196e239..2c6b38a4b 100644 --- a/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java +++ b/edc-tests/e2e-tests/src/test/java/org/eclipse/tractusx/edc/tests/transfer/IatpHttpConsumerPullWithProxyInMemoryTest.java @@ -22,10 +22,11 @@ import jakarta.json.JsonObject; import org.eclipse.edc.iam.did.spi.document.DidDocument; import org.eclipse.edc.iam.did.spi.resolution.DidResolverRegistry; -import org.eclipse.edc.identityhub.spi.generator.PresentationCreatorRegistry; +import org.eclipse.edc.identityhub.spi.ParticipantContextService; import org.eclipse.edc.identityhub.spi.model.VerifiableCredentialResource; +import org.eclipse.edc.identityhub.spi.model.participant.KeyDescriptor; +import org.eclipse.edc.identityhub.spi.model.participant.ParticipantManifest; import org.eclipse.edc.identityhub.spi.store.CredentialStore; -import org.eclipse.edc.identitytrust.model.CredentialFormat; import org.eclipse.edc.jsonld.spi.JsonLd; import org.eclipse.edc.junit.annotations.EndToEndTest; import org.eclipse.edc.spi.security.Vault; @@ -36,6 +37,7 @@ import org.eclipse.tractusx.edc.lifecycle.tx.iatp.SecureTokenService; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.extension.RegisterExtension; import java.io.IOException; @@ -47,6 +49,8 @@ import static org.eclipse.tractusx.edc.helpers.PolicyHelperFunctions.frameworkPolicy; @EndToEndTest +// temporarily disabled waiting for an upstream fix +@Disabled public class IatpHttpConsumerPullWithProxyInMemoryTest extends AbstractHttpConsumerPullWithProxyTest { protected static final DataspaceIssuer DATASPACE_ISSUER_PARTICIPANT = new DataspaceIssuer(); @@ -96,16 +100,26 @@ static void prepare() { private static void configureParticipant(IatpParticipant participant, ParticipantRuntime runtime, Map dids) { STS_RUNTIME.getContext().getService(Vault.class).storeSecret(participant.verificationId(), participant.privateKey()); + var participantContextService = runtime.getContext().getService(ParticipantContextService.class); var vault = runtime.getContext().getService(Vault.class); - var presentationRegistry = runtime.getContext().getService(PresentationCreatorRegistry.class); var didResolverRegistry = runtime.getContext().getService(DidResolverRegistry.class); var didResolver = new DidExampleResolver(); dids.forEach(didResolver::addCached); didResolverRegistry.register(didResolver); + var key = KeyDescriptor.Builder.newInstance() + .keyId(participant.verificationId()) + .publicKeyPem(participant.publicKey()) + .build(); + + var participantManifest = ParticipantManifest.Builder.newInstance() + .participantId(participant.getBpn()) + .did(participant.didUrl()) + .key(key) + .build(); + + participantContextService.createParticipantContext(participantManifest); vault.storeSecret(participant.verificationId(), participant.privateKey()); - presentationRegistry.addKeyId(participant.verificationId(), CredentialFormat.JSON_LD); - presentationRegistry.addKeyId(participant.verificationId(), CredentialFormat.JWT); storeCredentials(participant, runtime); } @@ -117,9 +131,16 @@ private static void storeCredentials(IatpParticipant participant, ParticipantRun } private static List issueCredentials(IatpParticipant participant, JsonLd jsonLd) { - return List.of( - DATASPACE_ISSUER_PARTICIPANT.issueMembershipCredential(participant, jsonLd), - DATASPACE_ISSUER_PARTICIPANT.issueFrameworkCredential(participant, jsonLd, "PcfCredential")); + + if (participant.getBpn().startsWith("PLATO")) { + return List.of( + DATASPACE_ISSUER_PARTICIPANT.issueMembershipCredential(participant, jsonLd)); + } else { + return List.of( + DATASPACE_ISSUER_PARTICIPANT.issueMembershipCredential(participant, jsonLd), + DATASPACE_ISSUER_PARTICIPANT.issueFrameworkCredential(participant, jsonLd, "PcfCredential")); + } + } @BeforeEach diff --git a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts index 7f6363401..329cbf632 100644 --- a/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts +++ b/edc-tests/runtime/iatp/runtime-memory-iatp-ih/build.gradle.kts @@ -52,6 +52,9 @@ dependencies { implementation(libs.edc.auth.oauth2.client) implementation(libs.edc.ih.api) implementation(libs.edc.ih.credentials) + implementation(libs.edc.ih.keypairs) + implementation(libs.edc.ih.participants) + implementation(libs.edc.ih.did) // for the controller implementation(libs.jakarta.rsApi) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 87ed2749d..e47d813e2 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,7 +2,7 @@ format.version = "1.1" [versions] -edc = "0.5.1-20240131-SNAPSHOT" +edc = "0.5.1" apache-sshd = "2.12.0" assertj = "3.25.3" awaitility = "4.2.0" @@ -134,6 +134,9 @@ edc-identity-trust-sts-client-configuration = { module = "org.eclipse.edc:identi edc-ih-api = { module = "org.eclipse.edc:identity-hub-api", version.ref = "edc" } edc-ih-credentials = { module = "org.eclipse.edc:identity-hub-credentials", version.ref = "edc" } edc-ih-spi-store = { module = "org.eclipse.edc:identity-hub-store-spi", version.ref = "edc" } +edc-ih-keypairs = { module = "org.eclipse.edc:identity-hub-keypairs", version.ref = "edc" } +edc-ih-participants = { module = "org.eclipse.edc:identity-hub-participants", version.ref = "edc" } +edc-ih-did = { module = "org.eclipse.edc:identity-hub-did", version.ref = "edc" } # DPF modules edc-spi-dataplane-dataplane = { module = "org.eclipse.edc:data-plane-spi", version.ref = "edc" } From f07dc2bcfab393774f796de3560508f300061b62 Mon Sep 17 00:00:00 2001 From: eclipse-tractusx-bot Date: Mon, 12 Feb 2024 12:07:03 +0000 Subject: [PATCH 83/83] Prepare release 0.6.0 --- charts/tractusx-connector-azure-vault/Chart.yaml | 4 ++-- charts/tractusx-connector-azure-vault/README.md | 4 ++-- charts/tractusx-connector-memory/Chart.yaml | 4 ++-- charts/tractusx-connector-memory/README.md | 4 ++-- charts/tractusx-connector/Chart.yaml | 4 ++-- charts/tractusx-connector/README.md | 4 ++-- gradle.properties | 2 +- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/charts/tractusx-connector-azure-vault/Chart.yaml b/charts/tractusx-connector-azure-vault/Chart.yaml index 3ac594bb1..74b7e2e7a 100644 --- a/charts/tractusx-connector-azure-vault/Chart.yaml +++ b/charts/tractusx-connector-azure-vault/Chart.yaml @@ -41,12 +41,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.6.0-rc2 +version: 0.6.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.6.0-rc2" +appVersion: "0.6.0" home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector sources: - https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector diff --git a/charts/tractusx-connector-azure-vault/README.md b/charts/tractusx-connector-azure-vault/README.md index 5188b7fd6..f8d970605 100644 --- a/charts/tractusx-connector-azure-vault/README.md +++ b/charts/tractusx-connector-azure-vault/README.md @@ -1,6 +1,6 @@ # tractusx-connector-azure-vault -![Version: 0.6.0-rc2](https://img.shields.io/badge/Version-0.6.0--rc2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.0-rc2](https://img.shields.io/badge/AppVersion-0.6.0--rc2-informational?style=flat-square) +![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.0](https://img.shields.io/badge/AppVersion-0.6.0-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector. The connector deployment consists of two runtime consists of a Control Plane and a Data Plane. Note that _no_ external dependencies such as a PostgreSQL database and Azure KeyVault are included. @@ -45,7 +45,7 @@ Combined, run this shell command to start the in-memory Tractus-X EDC runtime: ```shell helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0.6.0-rc2 \ +helm install my-release tractusx-edc/tractusx-connector-azure-vault --version 0.6.0 \ -f /tractusx-connector-azure-vault-test.yaml \ --set vault.azure.name=$AZURE_VAULT_NAME \ --set vault.azure.client=$AZURE_CLIENT_ID \ diff --git a/charts/tractusx-connector-memory/Chart.yaml b/charts/tractusx-connector-memory/Chart.yaml index 484da846e..ae59aac76 100644 --- a/charts/tractusx-connector-memory/Chart.yaml +++ b/charts/tractusx-connector-memory/Chart.yaml @@ -35,12 +35,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.6.0-rc2 +version: 0.6.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.6.0-rc2" +appVersion: "0.6.0" home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector-memory sources: - https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector-memory diff --git a/charts/tractusx-connector-memory/README.md b/charts/tractusx-connector-memory/README.md index 7ea7be814..48a35e060 100644 --- a/charts/tractusx-connector-memory/README.md +++ b/charts/tractusx-connector-memory/README.md @@ -1,6 +1,6 @@ # tractusx-connector-memory -![Version: 0.6.0-rc2](https://img.shields.io/badge/Version-0.6.0--rc2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.0-rc2](https://img.shields.io/badge/AppVersion-0.6.0--rc2-informational?style=flat-square) +![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.0](https://img.shields.io/badge/AppVersion-0.6.0-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector based on memory. Please only use this for development or testing purposes, never in production workloads! @@ -39,7 +39,7 @@ Combined, run this shell command to start the in-memory Tractus-X EDC runtime: ```shell helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install my-release tractusx-edc/tractusx-connector-memory --version 0.6.0-rc2 \ +helm install my-release tractusx-edc/tractusx-connector-memory --version 0.6.0 \ -f /tractusx-connector-memory-test.yaml \ --set vault.secrets="client-secret:$YOUR_CLIENT_SECRET" ``` diff --git a/charts/tractusx-connector/Chart.yaml b/charts/tractusx-connector/Chart.yaml index 83ccea10a..cce1ff152 100644 --- a/charts/tractusx-connector/Chart.yaml +++ b/charts/tractusx-connector/Chart.yaml @@ -41,12 +41,12 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 0.6.0-rc2 +version: 0.6.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "0.6.0-rc2" +appVersion: "0.6.0" home: https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector sources: - https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector diff --git a/charts/tractusx-connector/README.md b/charts/tractusx-connector/README.md index ec42b585d..922e1b816 100644 --- a/charts/tractusx-connector/README.md +++ b/charts/tractusx-connector/README.md @@ -1,6 +1,6 @@ # tractusx-connector -![Version: 0.6.0-rc2](https://img.shields.io/badge/Version-0.6.0--rc2-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.0-rc2](https://img.shields.io/badge/AppVersion-0.6.0--rc2-informational?style=flat-square) +![Version: 0.6.0](https://img.shields.io/badge/Version-0.6.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 0.6.0](https://img.shields.io/badge/AppVersion-0.6.0-informational?style=flat-square) A Helm chart for Tractus-X Eclipse Data Space Connector. The connector deployment consists of two runtime consists of a Control Plane and a Data Plane. Note that _no_ external dependencies such as a PostgreSQL database and HashiCorp Vault are included. @@ -42,7 +42,7 @@ Combined, run this shell command to start the in-memory Tractus-X EDC runtime: ```shell helm repo add tractusx-edc https://eclipse-tractusx.github.io/charts/dev -helm install my-release tractusx-edc/tractusx-connector --version 0.6.0-rc2 \ +helm install my-release tractusx-edc/tractusx-connector --version 0.6.0 \ -f /tractusx-connector-test.yaml ``` diff --git a/gradle.properties b/gradle.properties index a516a3bdc..8eab499dd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=org.eclipse.tractusx.edc -version=0.6.0-SNAPSHOT +version=0.6.0 # configure the build: txScmConnection=scm:git:git@github.com:eclipse-tractusx/tractusx-edc.git txWebsiteUrl=https://github.com/eclipse-tractusx/tractusx-edc.git