From 6da1e1ab1e8f4812d80674cf7d47ca4129af239b Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger Date: Thu, 3 Aug 2023 10:33:40 +0200 Subject: [PATCH 1/8] feat: add BPN group API --- .../bpn-validation-core/build.gradle.kts | 37 +++++++++++++++++++ .../BusinessPartnerEvaluationExtension.java | 0 .../DefaultStoreProviderExtension.java | 0 .../InMemoryBusinessPartnerGroupStore.java | 0 .../BusinessPartnerGroupFunction.java | 0 ...rg.eclipse.edc.spi.system.ServiceExtension | 0 ...InMemoryBusinessPartnerGroupStoreTest.java | 0 .../BusinessPartnerGroupFunctionTest.java | 0 .../BusinessPartnerGroupStoreTestBase.java | 0 .../{ => bpn-validation-spi}/build.gradle.kts | 0 .../spi/BusinessPartnerGroupStore.java | 0 ...rg.eclipse.edc.spi.system.ServiceExtension | 21 +++++++++++ .../build.gradle.kts | 4 +- .../docs/schema.sql | 0 ...SqlBusinessPartnerGroupStoreExtension.java | 0 .../sql/BusinessPartnerGroupStatements.java | 0 ...ostgresBusinessPartnerGroupStatements.java | 0 .../sql/SqlBusinessPartnerGroupStore.java | 0 ...rg.eclipse.edc.spi.system.ServiceExtension | 0 .../sql/SqlBusinessPartnerGroupStoreTest.java | 0 .../business-partner-validation/README.md | 5 ++- settings.gradle.kts | 5 ++- 22 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-core}/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-spi}/build.gradle.kts (100%) rename edc-extensions/bpn-validation/{ => bpn-validation-spi}/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java (100%) create mode 100644 edc-extensions/bpn-validation/bpn-validation-spi/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/build.gradle.kts (91%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/docs/schema.sql (100%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java (100%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java (100%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java (100%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java (100%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension (100%) rename edc-extensions/{ => bpn-validation}/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java (100%) diff --git a/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts new file mode 100644 index 000000000..857227492 --- /dev/null +++ b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts @@ -0,0 +1,37 @@ +/* + * 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 + */ + +plugins { + `java-library` + `maven-publish` + `java-test-fixtures` +} + +dependencies { + api(project(":edc-extensions:bpn-validation:bpn-validation-spi")) + implementation(project(":spi:core-spi")) + api(libs.edc.spi.core) + implementation(libs.edc.spi.policy) + implementation(libs.edc.spi.contract) + implementation(libs.edc.spi.policyengine) + + testFixturesImplementation(libs.edc.junit) + testFixturesImplementation(libs.junit.jupiter.api) + testFixturesImplementation(libs.assertj) +} diff --git a/edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java similarity index 100% rename from edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java diff --git a/edc-extensions/bpn-validation/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 similarity index 100% rename from edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/DefaultStoreProviderExtension.java diff --git a/edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java similarity index 100% rename from edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java diff --git a/edc-extensions/bpn-validation/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 similarity index 100% rename from edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunction.java diff --git a/edc-extensions/bpn-validation/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 similarity index 100% rename from edc-extensions/bpn-validation/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension rename to edc-extensions/bpn-validation/bpn-validation-core/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension diff --git a/edc-extensions/bpn-validation/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java similarity index 100% rename from edc-extensions/bpn-validation/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java diff --git a/edc-extensions/bpn-validation/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 similarity index 100% rename from edc-extensions/bpn-validation/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java diff --git a/edc-extensions/bpn-validation/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java b/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java similarity index 100% rename from edc-extensions/bpn-validation/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java diff --git a/edc-extensions/bpn-validation/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts similarity index 100% rename from edc-extensions/bpn-validation/build.gradle.kts rename to edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts diff --git a/edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java similarity index 100% rename from edc-extensions/bpn-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java rename to edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java 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 new file mode 100644 index 000000000..d16eb96eb --- /dev/null +++ b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -0,0 +1,21 @@ +# +# 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.BusinessPartnerEvaluationExtension +org.eclipse.tractusx.edc.validation.businesspartner.defaults.DefaultStoreProviderExtension diff --git a/edc-extensions/business-partner-store-sql/build.gradle.kts b/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts similarity index 91% rename from edc-extensions/business-partner-store-sql/build.gradle.kts rename to edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts index ffa1bd242..277e66c57 100644 --- a/edc-extensions/business-partner-store-sql/build.gradle.kts +++ b/edc-extensions/bpn-validation/business-partner-store-sql/build.gradle.kts @@ -23,7 +23,7 @@ plugins { } dependencies { - implementation(project(":edc-extensions:bpn-validation")) + implementation(project(":edc-extensions:bpn-validation:bpn-validation-spi")) implementation(libs.edc.spi.core) implementation(libs.edc.spi.transaction.datasource) @@ -34,5 +34,5 @@ dependencies { testImplementation(libs.edc.transaction.local) testImplementation(testFixtures(libs.edc.core.sql)) testImplementation(testFixtures(libs.edc.junit)) - testImplementation(testFixtures(project(":edc-extensions:bpn-validation"))) + testImplementation(testFixtures(project(":edc-extensions:bpn-validation:bpn-validation-core"))) } diff --git a/edc-extensions/business-partner-store-sql/docs/schema.sql b/edc-extensions/bpn-validation/business-partner-store-sql/docs/schema.sql similarity index 100% rename from edc-extensions/business-partner-store-sql/docs/schema.sql rename to edc-extensions/bpn-validation/business-partner-store-sql/docs/schema.sql diff --git a/edc-extensions/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 similarity index 100% rename from edc-extensions/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/SqlBusinessPartnerGroupStoreExtension.java diff --git a/edc-extensions/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 similarity index 100% rename from edc-extensions/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/BusinessPartnerGroupStatements.java diff --git a/edc-extensions/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 similarity index 100% rename from edc-extensions/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/PostgresBusinessPartnerGroupStatements.java diff --git a/edc-extensions/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java similarity index 100% rename from edc-extensions/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java diff --git a/edc-extensions/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 similarity index 100% rename from edc-extensions/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension rename to edc-extensions/bpn-validation/business-partner-store-sql/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension diff --git a/edc-extensions/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java similarity index 100% rename from edc-extensions/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java diff --git a/edc-extensions/business-partner-validation/README.md b/edc-extensions/business-partner-validation/README.md index 339417771..103d8d69b 100644 --- a/edc-extensions/business-partner-validation/README.md +++ b/edc-extensions/business-partner-validation/README.md @@ -1,4 +1,7 @@ -# Business Partner Validation Extension +# Business Partner Validation Extension + +> this extension is deprecated and should not be used anymore +> Please use the `bpn-validation` module instead! Using the Business Partner Validation Extension it's possible to add configurable validation against BPNs in the `ContractDefinition.AccessPolicy`. Using a BPN in `ContractDefinition.ContractPolicy` is possible, too, but once the contract is complete there is no policy enforcement in place from the EDC. diff --git a/settings.gradle.kts b/settings.gradle.kts index 92dffb46c..291dd368d 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -34,7 +34,10 @@ include(":core:json-ld-core") include(":edc-extensions:business-partner-validation") include(":edc-extensions:bpn-validation") -include(":edc-extensions:business-partner-store-sql") +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") From 7ebcf3332cda698b92761cf07bc15066bcf0d36d Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger Date: Thu, 3 Aug 2023 10:34:47 +0200 Subject: [PATCH 2/8] renamed store --- .../BusinessPartnerEvaluationExtension.java | 4 ++-- .../defaults/DefaultStoreProviderExtension.java | 6 +++--- ...pStore.java => InMemoryBusinessPartnerStore.java} | 4 ++-- .../functions/BusinessPartnerGroupFunction.java | 8 ++++---- ...st.java => InMemoryBusinessPartnerStoreTest.java} | 12 ++++++------ .../functions/BusinessPartnerGroupFunctionTest.java | 4 ++-- ...stBase.java => BusinessPartnerStoreTestBase.java} | 6 +++--- ...tnerGroupStore.java => BusinessPartnerStore.java} | 2 +- .../store/SqlBusinessPartnerGroupStoreExtension.java | 8 ++++---- .../store/sql/BusinessPartnerGroupStatements.java | 2 +- .../sql/PostgresBusinessPartnerGroupStatements.java | 2 +- ...rGroupStore.java => SqlBusinessPartnerStore.java} | 8 ++++---- ...oreTest.java => SqlBusinessPartnerStoreTest.java} | 12 ++++++------ 13 files changed, 39 insertions(+), 39 deletions(-) rename edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/{InMemoryBusinessPartnerGroupStore.java => InMemoryBusinessPartnerStore.java} (95%) rename edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/{InMemoryBusinessPartnerGroupStoreTest.java => InMemoryBusinessPartnerStoreTest.java} (68%) rename edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/{BusinessPartnerGroupStoreTestBase.java => BusinessPartnerStoreTestBase.java} (94%) rename edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/{BusinessPartnerGroupStore.java => BusinessPartnerStore.java} (95%) rename edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/{SqlBusinessPartnerGroupStore.java => SqlBusinessPartnerStore.java} (92%) rename edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/{SqlBusinessPartnerGroupStoreTest.java => SqlBusinessPartnerStoreTest.java} (78%) diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java index e60d5e04f..0960f6128 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java @@ -22,7 +22,7 @@ import org.eclipse.edc.spi.system.ServiceExtension; import org.eclipse.edc.spi.system.ServiceExtensionContext; import org.eclipse.tractusx.edc.validation.businesspartner.functions.BusinessPartnerGroupFunction; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import static org.eclipse.edc.connector.contract.spi.offer.ContractDefinitionResolver.CATALOGING_SCOPE; import static org.eclipse.edc.connector.contract.spi.validation.ContractValidationService.NEGOTIATION_SCOPE; @@ -58,7 +58,7 @@ public class BusinessPartnerEvaluationExtension implements ServiceExtension { @Inject private PolicyEngine policyEngine; @Inject - private BusinessPartnerGroupStore store; + private BusinessPartnerStore store; @Override public void initialize(ServiceExtensionContext context) { 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 91861ad3d..1ec6fe3e3 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 @@ -17,13 +17,13 @@ import org.eclipse.edc.runtime.metamodel.annotation.Extension; import org.eclipse.edc.runtime.metamodel.annotation.Provider; import org.eclipse.edc.spi.system.ServiceExtension; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; @Extension("Provides a default BusinessPartnerGroupStore") public class DefaultStoreProviderExtension implements ServiceExtension { @Provider(isDefault = true) - public BusinessPartnerGroupStore createInMemStore() { - return new InMemoryBusinessPartnerGroupStore(); + public BusinessPartnerStore createInMemStore() { + return new InMemoryBusinessPartnerStore(); } } diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java similarity index 95% rename from edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java index 556bff402..13b54b6dd 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerGroupStore.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/defaults/InMemoryBusinessPartnerStore.java @@ -15,13 +15,13 @@ package org.eclipse.tractusx.edc.validation.businesspartner.defaults; import org.eclipse.edc.spi.result.StoreResult; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import java.util.HashMap; import java.util.List; import java.util.Map; -public class InMemoryBusinessPartnerGroupStore implements BusinessPartnerGroupStore { +public class InMemoryBusinessPartnerStore implements BusinessPartnerStore { private final Map> cache = new HashMap<>(); @Override 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 012ec1371..429a5dfee 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 @@ -19,7 +19,7 @@ import org.eclipse.edc.policy.model.Operator; import org.eclipse.edc.policy.model.Permission; import org.eclipse.edc.spi.agent.ParticipantAgent; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import java.util.Collection; import java.util.HashMap; @@ -67,16 +67,16 @@ *
  • {@link Operator#IS_NONE_OF}: must not be in any of the specified groups
  • * * - * @see BusinessPartnerGroupStore + * @see BusinessPartnerStore */ public class BusinessPartnerGroupFunction implements AtomicConstraintFunction { public static final String REFERRING_CONNECTOR_CLAIM = "referringConnector"; public static final String BUSINESS_PARTNER_CONSTRAINT_KEY = TX_NAMESPACE + "BusinessPartnerGroup"; private static final List ALLOWED_OPERATORS = List.of(EQ, NEQ, IN, IS_ALL_OF, IS_ANY_OF, IS_NONE_OF); private static final Map> OPERATOR_EVALUATOR_MAP = new HashMap<>(); - private final BusinessPartnerGroupStore store; + private final BusinessPartnerStore store; - public BusinessPartnerGroupFunction(BusinessPartnerGroupStore store) { + public BusinessPartnerGroupFunction(BusinessPartnerStore store) { this.store = store; OPERATOR_EVALUATOR_MAP.put(EQ, this::evaluateEquals); OPERATOR_EVALUATOR_MAP.put(NEQ, this::evaluateNotEquals); diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java similarity index 68% rename from edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java index 508172285..3de2a4914 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerGroupStoreTest.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/InMemoryBusinessPartnerStoreTest.java @@ -14,17 +14,17 @@ package org.eclipse.tractusx.edc.validation.businesspartner; -import org.eclipse.tractusx.edc.validation.businesspartner.defaults.InMemoryBusinessPartnerGroupStore; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; -import org.eclipse.tractusx.edc.validation.businesspartner.store.BusinessPartnerGroupStoreTestBase; +import org.eclipse.tractusx.edc.validation.businesspartner.defaults.InMemoryBusinessPartnerStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; +import org.eclipse.tractusx.edc.validation.businesspartner.store.BusinessPartnerStoreTestBase; -class InMemoryBusinessPartnerGroupStoreTest extends BusinessPartnerGroupStoreTestBase { +class InMemoryBusinessPartnerStoreTest extends BusinessPartnerStoreTestBase { - private final InMemoryBusinessPartnerGroupStore store = new InMemoryBusinessPartnerGroupStore(); + private final InMemoryBusinessPartnerStore store = new InMemoryBusinessPartnerStore(); @Override - protected BusinessPartnerGroupStore getStore() { + 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/functions/BusinessPartnerGroupFunctionTest.java b/edc-extensions/bpn-validation/bpn-validation-core/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/functions/BusinessPartnerGroupFunctionTest.java index e317ec1b2..c2379c592 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 @@ -21,7 +21,7 @@ import org.eclipse.edc.policy.model.Permission; import org.eclipse.edc.spi.agent.ParticipantAgent; import org.eclipse.edc.spi.result.StoreResult; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -64,7 +64,7 @@ class BusinessPartnerGroupFunctionTest { private static final String TEST_BPN = "BPN000TEST"; private final PolicyContext context = mock(); private BusinessPartnerGroupFunction function; - private BusinessPartnerGroupStore store; + private BusinessPartnerStore store; @BeforeEach void setUp() { diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java b/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java similarity index 94% rename from edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java rename to edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java index edf186397..08ee267ff77 100644 --- a/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerGroupStoreTestBase.java +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/testFixtures/java/org/eclipse/tractusx/edc/validation/businesspartner/store/BusinessPartnerStoreTestBase.java @@ -14,14 +14,14 @@ package org.eclipse.tractusx.edc.validation.businesspartner.store; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import org.junit.jupiter.api.Test; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -public abstract class BusinessPartnerGroupStoreTestBase { +public abstract class BusinessPartnerStoreTestBase { @Test void resolveForBpn() { @@ -79,5 +79,5 @@ void update_notExists() { assertThat(getStore().update("test-bpn", List.of("foo", "bar")).succeeded()).isFalse(); } - protected abstract BusinessPartnerGroupStore getStore(); + protected abstract BusinessPartnerStore getStore(); } diff --git a/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java similarity index 95% rename from edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java rename to edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java index c95dee513..f7f7e8119 100644 --- a/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerGroupStore.java +++ b/edc-extensions/bpn-validation/bpn-validation-spi/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/spi/BusinessPartnerStore.java @@ -18,7 +18,7 @@ import java.util.List; -public interface BusinessPartnerGroupStore { +public interface BusinessPartnerStore { String NOT_FOUND_TEMPLATE = "BPN %s was not found"; String ALREADY_EXISTS_TEMPLATE = "BPN %s already exists in database"; 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 578e1a408..8ece8e681 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 @@ -24,10 +24,10 @@ import org.eclipse.edc.sql.QueryExecutor; import org.eclipse.edc.transaction.datasource.spi.DataSourceRegistry; import org.eclipse.edc.transaction.spi.TransactionContext; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import org.eclipse.tractusx.edc.validation.businesspartner.store.sql.BusinessPartnerGroupStatements; import org.eclipse.tractusx.edc.validation.businesspartner.store.sql.PostgresBusinessPartnerGroupStatements; -import org.eclipse.tractusx.edc.validation.businesspartner.store.sql.SqlBusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.store.sql.SqlBusinessPartnerStore; @Extension("Registers an SQL implementation for the BusinessPartnerGroupStore") public class SqlBusinessPartnerGroupStoreExtension implements ServiceExtension { @@ -47,9 +47,9 @@ public class SqlBusinessPartnerGroupStoreExtension implements ServiceExtension { private BusinessPartnerGroupStatements statements; @Provider - public BusinessPartnerGroupStore sqlStore(ServiceExtensionContext context) { + public BusinessPartnerStore sqlStore(ServiceExtensionContext context) { var dataSourceName = context.getConfig().getString(DATASOURCE_SETTING_NAME, DEFAULT_DATASOURCE_NAME); - return new SqlBusinessPartnerGroupStore(dataSourceRegistry, dataSourceName, transactionContext, typeManager.getMapper(), queryExecutor, getStatements()); + return new SqlBusinessPartnerStore(dataSourceRegistry, dataSourceName, transactionContext, typeManager.getMapper(), queryExecutor, getStatements()); } private BusinessPartnerGroupStatements getStatements() { 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 08171a887..64663b9e4 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 @@ -15,7 +15,7 @@ package org.eclipse.tractusx.edc.validation.businesspartner.store.sql; /** - * Statement templates and SQL table+column names required for the {@link SqlBusinessPartnerGroupStore} + * Statement templates and SQL table+column names required for the {@link SqlBusinessPartnerStore} */ public interface BusinessPartnerGroupStatements { 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 37ba72377..51ca75c25 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 @@ -20,7 +20,7 @@ import static java.lang.String.format; /** - * Postgres-specific statement templates for the {@link SqlBusinessPartnerGroupStore} + * Postgres-specific statement templates for the {@link SqlBusinessPartnerStore} */ public class PostgresBusinessPartnerGroupStatements implements BusinessPartnerGroupStatements { @Override diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java similarity index 92% rename from edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java index 0a9a5e235..ba872e4b0 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStore.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStore.java @@ -22,7 +22,7 @@ import org.eclipse.edc.sql.store.AbstractSqlStore; import org.eclipse.edc.transaction.datasource.spi.DataSourceRegistry; import org.eclipse.edc.transaction.spi.TransactionContext; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; import java.sql.Connection; import java.sql.ResultSet; @@ -30,13 +30,13 @@ import java.util.List; import java.util.Objects; -public class SqlBusinessPartnerGroupStore extends AbstractSqlStore implements BusinessPartnerGroupStore { +public class SqlBusinessPartnerStore extends AbstractSqlStore implements BusinessPartnerStore { private static final TypeReference> LIST_OF_STRING = new TypeReference<>() { }; private final BusinessPartnerGroupStatements statements; - public SqlBusinessPartnerGroupStore(DataSourceRegistry dataSourceRegistry, String dataSourceName, TransactionContext transactionContext, - ObjectMapper objectMapper, QueryExecutor queryExecutor, BusinessPartnerGroupStatements statements) { + public SqlBusinessPartnerStore(DataSourceRegistry dataSourceRegistry, String dataSourceName, TransactionContext transactionContext, + ObjectMapper objectMapper, QueryExecutor queryExecutor, BusinessPartnerGroupStatements statements) { super(dataSourceRegistry, dataSourceName, transactionContext, objectMapper, queryExecutor); this.statements = statements; } diff --git a/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java b/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java similarity index 78% rename from edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java rename to edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java index 647bd3b6e..2ab1a79da 100644 --- a/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerGroupStoreTest.java +++ b/edc-extensions/bpn-validation/business-partner-store-sql/src/test/java/org/eclipse/tractusx/edc/validation/businesspartner/store/sql/SqlBusinessPartnerStoreTest.java @@ -17,8 +17,8 @@ import org.eclipse.edc.spi.types.TypeManager; import org.eclipse.edc.sql.QueryExecutor; import org.eclipse.edc.sql.testfixtures.PostgresqlStoreSetupExtension; -import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerGroupStore; -import org.eclipse.tractusx.edc.validation.businesspartner.store.BusinessPartnerGroupStoreTestBase; +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore; +import org.eclipse.tractusx.edc.validation.businesspartner.store.BusinessPartnerStoreTestBase; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.extension.ExtendWith; @@ -28,14 +28,14 @@ import java.nio.file.Paths; @ExtendWith(PostgresqlStoreSetupExtension.class) -class SqlBusinessPartnerGroupStoreTest extends BusinessPartnerGroupStoreTestBase { +class SqlBusinessPartnerStoreTest extends BusinessPartnerStoreTestBase { private final TypeManager typeManager = new TypeManager(); private final BusinessPartnerGroupStatements statements = new PostgresBusinessPartnerGroupStatements(); - private SqlBusinessPartnerGroupStore store; + private SqlBusinessPartnerStore store; @BeforeEach void setUp(PostgresqlStoreSetupExtension extension, QueryExecutor queryExecutor) throws IOException { - store = new SqlBusinessPartnerGroupStore(extension.getDataSourceRegistry(), extension.getDatasourceName(), extension.getTransactionContext(), typeManager.getMapper(), queryExecutor, statements); + store = new SqlBusinessPartnerStore(extension.getDataSourceRegistry(), extension.getDatasourceName(), extension.getTransactionContext(), typeManager.getMapper(), queryExecutor, statements); var schema = Files.readString(Paths.get("./docs/schema.sql")); extension.runQuery(schema); } @@ -46,7 +46,7 @@ void tearDown(PostgresqlStoreSetupExtension extension) { extension.runQuery("DROP TABLE " + statements.getTable() + " CASCADE"); } - protected BusinessPartnerGroupStore getStore() { + protected BusinessPartnerStore getStore() { return store; } } \ No newline at end of file From de38e132a3c1a98b3e59cc11817c38d09415d859 Mon Sep 17 00:00:00 2001 From: Paul Latzelsperger Date: Thu, 3 Aug 2023 10:40:05 +0200 Subject: [PATCH 3/8] javadoc --- .../BusinessPartnerGroupFunction.java | 2 +- .../bpn-validation/build.gradle.kts | 30 +++++++++++++++++++ .../BusinessPartnerValidationExtension.java | 2 +- 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 edc-extensions/bpn-validation/build.gradle.kts 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 429a5dfee..26106ec38 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 @@ -56,7 +56,7 @@ *

    * Upon evaluation, the {@link BusinessPartnerGroupFunction} will take the {@link ParticipantAgent}s BPN, use it to resolve the groups that the BPN is part of, and check, whether `"gold_partner"` and * `"platin_partner"` are amongst those groups. - *

    + *

    * The following operators are supported: *

      *
    • {@link Operator#EQ}: must be exactly in - and only in - that particular group or set of groups
    • diff --git a/edc-extensions/bpn-validation/build.gradle.kts b/edc-extensions/bpn-validation/build.gradle.kts new file mode 100644 index 000000000..c7cede6da --- /dev/null +++ b/edc-extensions/bpn-validation/build.gradle.kts @@ -0,0 +1,30 @@ +/* + * 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 + */ + +plugins { + `java-library` + `maven-publish` + `java-test-fixtures` +} + +dependencies { + api(project(":edc-extensions:bpn-validation:bpn-validation-spi")) + api(project(":edc-extensions:bpn-validation:bpn-validation-api")) + api(project(":edc-extensions:bpn-validation:bpn-validation-core")) +} diff --git a/edc-extensions/business-partner-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java b/edc-extensions/business-partner-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java index b9dcf4672..5cd2557dc 100644 --- a/edc-extensions/business-partner-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java +++ b/edc-extensions/business-partner-validation/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerValidationExtension.java @@ -48,7 +48,7 @@ public class BusinessPartnerValidationExtension implements ServiceExtension { /** * The key for business partner numbers constraints. Must be used as left operand when declaring constraints. - *

      Example: + *

      Example: * *

            * {
      
      From 595b830c196c4bbc394a655a88fbe709920d19c3 Mon Sep 17 00:00:00 2001
      From: Paul Latzelsperger 
      Date: Thu, 3 Aug 2023 10:42:22 +0200
      Subject: [PATCH 4/8] cleanup
      
      ---
       .../bpn-validation/bpn-validation-spi/build.gradle.kts       | 5 -----
       .../validation/businesspartner/spi/BusinessPartnerStore.java | 2 ++
       edc-extensions/bpn-validation/build.gradle.kts               | 1 -
       3 files changed, 2 insertions(+), 6 deletions(-)
      
      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 988b109f1..6d5b6059a 100644
      --- a/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts
      +++ b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts
      @@ -20,7 +20,6 @@
       plugins {
           `java-library`
           `maven-publish`
      -    `java-test-fixtures`
       }
       
       dependencies {
      @@ -29,8 +28,4 @@ dependencies {
           implementation(libs.edc.spi.policy)
           implementation(libs.edc.spi.contract)
           implementation(libs.edc.spi.policyengine)
      -
      -    testFixturesImplementation(libs.edc.junit)
      -    testFixturesImplementation(libs.junit.jupiter.api)
      -    testFixturesImplementation(libs.assertj)
       }
      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 f7f7e8119..473371a4c 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
      @@ -14,10 +14,12 @@
       
       package org.eclipse.tractusx.edc.validation.businesspartner.spi;
       
      +import org.eclipse.edc.runtime.metamodel.annotation.ExtensionPoint;
       import org.eclipse.edc.spi.result.StoreResult;
       
       import java.util.List;
       
      +@ExtensionPoint
       public interface BusinessPartnerStore {
           String NOT_FOUND_TEMPLATE = "BPN %s was not found";
           String ALREADY_EXISTS_TEMPLATE = "BPN %s already exists in database";
      diff --git a/edc-extensions/bpn-validation/build.gradle.kts b/edc-extensions/bpn-validation/build.gradle.kts
      index c7cede6da..b866b837b 100644
      --- a/edc-extensions/bpn-validation/build.gradle.kts
      +++ b/edc-extensions/bpn-validation/build.gradle.kts
      @@ -20,7 +20,6 @@
       plugins {
           `java-library`
           `maven-publish`
      -    `java-test-fixtures`
       }
       
       dependencies {
      
      From f9c50ca9991f3633ac5ef3fd8c9d05c3ef1c5146 Mon Sep 17 00:00:00 2001
      From: Paul Latzelsperger 
      Date: Thu, 3 Aug 2023 12:57:49 +0200
      Subject: [PATCH 5/8] add api and controller
      
      ---
       .../bpn-validation-api/build.gradle.kts       |  31 ++++
       .../edc/api/bpn/BusinessPartnerGroupApi.java  |  81 ++++++++
       .../BusinessPartnerGroupApiController.java    | 105 +++++++++++
       .../bpn/BusinessPartnerGroupApiExtension.java |  37 ++++
       ...BusinessPartnerGroupApiControllerTest.java | 174 ++++++++++++++++++
       .../bpn-validation-core/build.gradle.kts      |   1 +
       .../BusinessPartnerEvaluationExtension.java   |   6 +
       .../bpn-validation-spi/build.gradle.kts       |   1 +
       8 files changed, 436 insertions(+)
       create mode 100644 edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts
       create mode 100644 edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApi.java
       create mode 100644 edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiController.java
       create mode 100644 edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java
       create mode 100644 edc-extensions/bpn-validation/bpn-validation-api/src/test/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiControllerTest.java
      
      diff --git a/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts b/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts
      new file mode 100644
      index 000000000..d26e14408
      --- /dev/null
      +++ b/edc-extensions/bpn-validation/bpn-validation-api/build.gradle.kts
      @@ -0,0 +1,31 @@
      +/*
      + *  Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG)
      + *
      + *  This program and the accompanying materials are 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`
      +    id("io.swagger.core.v3.swagger-gradle-plugin")
      +}
      +
      +dependencies {
      +    implementation(project(":edc-extensions:bpn-validation:bpn-validation-spi"))
      +    implementation(project(":spi:core-spi"))
      +    implementation(libs.edc.api.management)
      +    implementation(libs.edc.spi.aggregateservices)
      +    implementation(libs.jakarta.rsApi)
      +
      +    testImplementation(testFixtures(libs.edc.core.jersey))
      +    testImplementation(libs.restAssured)
      +    testImplementation(libs.edc.junit)
      +}
      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
      new file mode 100644
      index 000000000..bce4b32bd
      --- /dev/null
      +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApi.java
      @@ -0,0 +1,81 @@
      +package org.eclipse.tractusx.edc.api.bpn;
      +
      +import io.swagger.v3.oas.annotations.OpenAPIDefinition;
      +import io.swagger.v3.oas.annotations.Operation;
      +import io.swagger.v3.oas.annotations.Parameter;
      +import io.swagger.v3.oas.annotations.info.Info;
      +import io.swagger.v3.oas.annotations.media.ArraySchema;
      +import io.swagger.v3.oas.annotations.media.Content;
      +import io.swagger.v3.oas.annotations.media.Schema;
      +import io.swagger.v3.oas.annotations.parameters.RequestBody;
      +import io.swagger.v3.oas.annotations.responses.ApiResponse;
      +import io.swagger.v3.oas.annotations.tags.Tag;
      +import jakarta.json.JsonObject;
      +import org.eclipse.edc.web.spi.ApiErrorDetail;
      +
      +import java.util.Set;
      +
      +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID;
      +
      +@OpenAPIDefinition(info = @Info(description = "With this API clients can create, read, update and delete BusinessPartnerNumber groups. It allows the assigning of BPNs to groups.", title = "Business Partner Group API"))
      +@Tag(name = "BusinessPartnerGroup")
      +public interface BusinessPartnerGroupApi {
      +
      +
      +    @Operation(description = "Resolves all groups for a particular BPN",
      +            responses = {
      +                    @ApiResponse(responseCode = "200", description = "An object containing an array with the assigned groups"),
      +                    @ApiResponse(responseCode = "404", description = "No entry for the given BPN was found"),
      +                    @ApiResponse(responseCode = "400", description = "Request body was malformed",
      +                            content = @Content(array = @ArraySchema(schema = @Schema(implementation = ApiErrorDetail.class))))
      +            })
      +    JsonObject resolve(@Parameter(name = "bpn", description = "The business partner number") String bpn);
      +
      +    @Operation(description = "Deletes the entry for a particular BPN",
      +            responses = {
      +                    @ApiResponse(responseCode = "204", description = "The object was successfully deleted"),
      +                    @ApiResponse(responseCode = "404", description = "No entry for the given BPN was found"),
      +                    @ApiResponse(responseCode = "400", description = "Request body was malformed",
      +                            content = @Content(array = @ArraySchema(schema = @Schema(implementation = ApiErrorDetail.class))))
      +            })
      +    void deleteEntry(@Parameter(name = "bpn", description = "The business partner number") String bpn);
      +
      +    @Operation(description = "Updates the entry for a particular BPN",
      +            requestBody = @RequestBody(content = @Content(schema = @Schema(implementation = ListSchema.class))),
      +
      +            responses = {
      +                    @ApiResponse(responseCode = "204", description = "The object was successfully updated"),
      +                    @ApiResponse(responseCode = "404", description = "No entry for the given BPN was found"),
      +                    @ApiResponse(responseCode = "400", description = "Request body was malformed",
      +                            content = @Content(array = @ArraySchema(schema = @Schema(implementation = ApiErrorDetail.class))))
      +            })
      +    void updateEntry(JsonObject object);
      +
      +    @Operation(description = "Creates an entry for a particular BPN",
      +            requestBody = @RequestBody(content = @Content(schema = @Schema(implementation = ListSchema.class))),
      +
      +            responses = {
      +                    @ApiResponse(responseCode = "204", description = "The object was successfully created"),
      +                    @ApiResponse(responseCode = "409", description = "An entry already exists for that BPN"),
      +                    @ApiResponse(responseCode = "400", description = "Request body was malformed",
      +                            content = @Content(array = @ArraySchema(schema = @Schema(implementation = ApiErrorDetail.class))))
      +            })
      +    void createEntry(JsonObject entry);
      +
      +
      +    @Schema(name = "List", example = ListSchema.EXAMPLE)
      +    record ListSchema(
      +            @Schema(name = ID) String id,
      +            Set groups
      +    ) {
      +        public static final String EXAMPLE = """
      +                {
      +                    "@context": {
      +                        "tx": "https://w3id.org/tractusx/v0.0.1/ns/"
      +                    },
      +                    "@id": "tx:BPN000001234",
      +                    "tx:groups": ["group1", "group2", "group3"]
      +                }
      +                """;
      +    }
      +}
      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
      new file mode 100644
      index 000000000..47fa56dcb
      --- /dev/null
      +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiController.java
      @@ -0,0 +1,105 @@
      +package org.eclipse.tractusx.edc.api.bpn;
      +
      +import io.swagger.v3.oas.annotations.parameters.RequestBody;
      +import jakarta.json.Json;
      +import jakarta.json.JsonObject;
      +import jakarta.json.JsonString;
      +import jakarta.ws.rs.Consumes;
      +import jakarta.ws.rs.DELETE;
      +import jakarta.ws.rs.GET;
      +import jakarta.ws.rs.POST;
      +import jakarta.ws.rs.PUT;
      +import jakarta.ws.rs.Path;
      +import jakarta.ws.rs.PathParam;
      +import jakarta.ws.rs.Produces;
      +import jakarta.ws.rs.core.MediaType;
      +import org.eclipse.edc.web.spi.exception.InvalidRequestException;
      +import org.eclipse.edc.web.spi.exception.ObjectConflictException;
      +import org.eclipse.edc.web.spi.exception.ObjectNotFoundException;
      +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore;
      +import org.jetbrains.annotations.NotNull;
      +
      +import java.util.List;
      +
      +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID;
      +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_NAMESPACE;
      +
      +
      +@Consumes({MediaType.APPLICATION_JSON})
      +@Produces({MediaType.APPLICATION_JSON})
      +@Path("/business-partner-groups")
      +public class BusinessPartnerGroupApiController implements BusinessPartnerGroupApi {
      +
      +    private final BusinessPartnerStore businessPartnerService;
      +
      +
      +    public BusinessPartnerGroupApiController(BusinessPartnerStore businessPartnerService) {
      +        this.businessPartnerService = businessPartnerService;
      +    }
      +
      +    @GET
      +    @Path("/{bpn}")
      +    @Override
      +    public JsonObject resolve(@PathParam("bpn") String bpn) {
      +
      +        // StoreResult does not support the .map() operator, because it does not override newInstance()
      +        var result = businessPartnerService.resolveForBpn(bpn);
      +        if (result.succeeded()) {
      +            return createObject(bpn, result.getContent());
      +        }
      +
      +        throw new ObjectNotFoundException(List.class, result.getFailureDetail());
      +    }
      +
      +    @DELETE
      +    @Path("/{bpn}")
      +    @Override
      +    public void deleteEntry(@PathParam("bpn") String bpn) {
      +        businessPartnerService.delete(bpn)
      +                .orElseThrow(f -> new ObjectNotFoundException(List.class, f.getFailureDetail()));
      +    }
      +
      +    @PUT
      +    @Override
      +    public void updateEntry(@RequestBody JsonObject object) {
      +        var bpn = getBpn(object);
      +        var groups = getGroups(object);
      +        businessPartnerService.update(bpn, groups)
      +                .orElseThrow(f -> new ObjectNotFoundException(List.class, f.getFailureDetail()));
      +    }
      +
      +    @POST
      +    @Override
      +    public void createEntry(@RequestBody JsonObject object) {
      +        var bpn = getBpn(object);
      +        var groups = getGroups(object);
      +        businessPartnerService.save(bpn, groups)
      +                .orElseThrow(f -> new ObjectConflictException(f.getFailureDetail()));
      +    }
      +
      +    private JsonObject createObject(String bpn, List list) {
      +        return Json.createObjectBuilder()
      +                .add(ID, bpn)
      +                .add(TX_NAMESPACE + "groups", Json.createArrayBuilder(list))
      +                .build();
      +    }
      +
      +
      +    private String getBpn(JsonObject object) {
      +        try {
      +            return object.getString(ID);
      +        } catch (Exception ex) {
      +            throw new InvalidRequestException(ex.getMessage());
      +        }
      +    }
      +
      +    @NotNull
      +    private List getGroups(JsonObject object) {
      +        try {
      +            return object.getJsonArray(TX_NAMESPACE + "groups").stream().map(jv -> ((JsonString) jv).getString()).toList();
      +        } catch (Exception ex) {
      +            throw new InvalidRequestException(ex.getMessage());
      +        }
      +    }
      +
      +}
      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
      new file mode 100644
      index 000000000..27d521654
      --- /dev/null
      +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/main/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiExtension.java
      @@ -0,0 +1,37 @@
      +package org.eclipse.tractusx.edc.api.bpn;
      +
      +import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration;
      +import org.eclipse.edc.connector.api.management.configuration.transform.ManagementApiTypeTransformerRegistry;
      +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 org.eclipse.edc.web.spi.WebService;
      +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore;
      +
      +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_NAMESPACE;
      +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_PREFIX;
      +
      +@Extension(value = "Registers the Business Partner Group API")
      +public class BusinessPartnerGroupApiExtension implements ServiceExtension {
      +
      +    @Inject
      +    private WebService webService;
      +    @Inject
      +    private ManagementApiConfiguration apiConfiguration;
      +    @Inject
      +    private ManagementApiTypeTransformerRegistry transformerRegistry;
      +    @Inject
      +    private JsonLd jsonLdService;
      +    @Inject
      +    private BusinessPartnerStore businessPartnerStore;
      +
      +    @Override
      +    public void initialize(ServiceExtensionContext context) {
      +        jsonLdService.registerNamespace(TX_PREFIX, TX_NAMESPACE);
      +
      +        webService.registerResource(apiConfiguration.getContextAlias(), new BusinessPartnerGroupApiController(businessPartnerStore));
      +
      +    }
      +}
      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
      new file mode 100644
      index 000000000..660284d99
      --- /dev/null
      +++ b/edc-extensions/bpn-validation/bpn-validation-api/src/test/java/org/eclipse/tractusx/edc/api/bpn/BusinessPartnerGroupApiControllerTest.java
      @@ -0,0 +1,174 @@
      +package org.eclipse.tractusx.edc.api.bpn;
      +
      +import io.restassured.specification.RequestSpecification;
      +import jakarta.json.Json;
      +import jakarta.json.JsonObject;
      +import org.eclipse.edc.connector.api.management.configuration.transform.ManagementApiTypeTransformerRegistry;
      +import org.eclipse.edc.jsonld.TitaniumJsonLd;
      +import org.eclipse.edc.jsonld.spi.JsonLd;
      +import org.eclipse.edc.spi.result.StoreResult;
      +import org.eclipse.edc.web.jersey.testfixtures.RestControllerTestBase;
      +import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore;
      +import org.junit.jupiter.api.BeforeEach;
      +import org.junit.jupiter.api.Test;
      +
      +import java.util.List;
      +import java.util.Set;
      +
      +import static io.restassured.RestAssured.given;
      +import static io.restassured.http.ContentType.JSON;
      +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.CONTEXT;
      +import static org.eclipse.edc.jsonld.spi.JsonLdKeywords.ID;
      +import static org.eclipse.edc.spi.CoreConstants.EDC_NAMESPACE;
      +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_NAMESPACE;
      +import static org.eclipse.tractusx.edc.edr.spi.CoreConstants.TX_PREFIX;
      +import static org.hamcrest.Matchers.notNullValue;
      +import static org.mockito.ArgumentMatchers.any;
      +import static org.mockito.ArgumentMatchers.anyString;
      +import static org.mockito.Mockito.mock;
      +import static org.mockito.Mockito.when;
      +
      +class BusinessPartnerGroupApiControllerTest extends RestControllerTestBase {
      +
      +    private final JsonLd jsonLdService = new TitaniumJsonLd(mock());
      +    private final BusinessPartnerStore businessPartnerStore = mock();
      +    private final ManagementApiTypeTransformerRegistry transformerRegistry = mock();
      +
      +    @BeforeEach
      +    void setUp() {
      +        jsonLdService.registerNamespace("edc", EDC_NAMESPACE);
      +        jsonLdService.registerNamespace("tx", TX_NAMESPACE);
      +    }
      +
      +    @Test
      +    void resolve() {
      +        when(businessPartnerStore.resolveForBpn(any())).thenReturn(StoreResult.success(List.of("group1", "group2")));
      +        baseRequest()
      +                .get("/test-bpn")
      +                .then()
      +                .statusCode(200)
      +                .body(notNullValue());
      +    }
      +
      +    @Test
      +    void resolve_exists_noGroups() {
      +        when(businessPartnerStore.resolveForBpn(any())).thenReturn(StoreResult.success(List.of()));
      +        baseRequest()
      +                .get("/test-bpn")
      +                .then()
      +                .statusCode(200);
      +    }
      +
      +    @Test
      +    void resolve_notExists_returns404() {
      +        when(businessPartnerStore.resolveForBpn(any())).thenReturn(StoreResult.notFound("test-message"));
      +        baseRequest()
      +                .get("/test-bpn")
      +                .then()
      +                .statusCode(404);
      +    }
      +
      +    @Test
      +    void deleteEntry() {
      +        when(businessPartnerStore.delete(anyString())).thenReturn(StoreResult.success());
      +        baseRequest()
      +                .delete("/test-bpn")
      +                .then()
      +                .statusCode(204);
      +    }
      +
      +    @Test
      +    void deleteEntry_notExists_returns404() {
      +        when(businessPartnerStore.delete(anyString())).thenReturn(StoreResult.notFound("test-message"));
      +        baseRequest()
      +                .delete("/test-bpn")
      +                .then()
      +                .statusCode(404);
      +    }
      +
      +    @Test
      +    void updateEntry() {
      +        when(businessPartnerStore.update(anyString(), any())).thenReturn(StoreResult.success());
      +        baseRequest()
      +                .contentType(JSON)
      +                .body(createJsonObject())
      +                .put()
      +                .then()
      +                .statusCode(204);
      +    }
      +
      +
      +    @Test
      +    void updateEntry_notExists_returns404() {
      +        when(businessPartnerStore.update(anyString(), any())).thenReturn(StoreResult.notFound("test-message"));
      +        baseRequest()
      +                .contentType(JSON)
      +                .body(createJsonObject())
      +                .put()
      +                .then()
      +                .statusCode(404);
      +    }
      +
      +    @Test
      +    void updateEntry_invalidBody_returns400() {
      +        baseRequest()
      +                .contentType(JSON)
      +                .body("{\"invalid-key\": \"invalid-value\"}")
      +                .put()
      +                .then()
      +                .statusCode(400);
      +    }
      +
      +    @Test
      +    void createEntry() {
      +        when(businessPartnerStore.save(anyString(), any())).thenReturn(StoreResult.success());
      +        baseRequest()
      +                .contentType(JSON)
      +                .body(createJsonObject())
      +                .post()
      +                .then()
      +                .statusCode(204);
      +    }
      +
      +    @Test
      +    void createEntry_alreadyExists_returns409() {
      +        when(businessPartnerStore.save(anyString(), any())).thenReturn(StoreResult.alreadyExists("test-message"));
      +        baseRequest()
      +                .contentType(JSON)
      +                .body(createJsonObject())
      +                .post()
      +                .then()
      +                .statusCode(409);
      +    }
      +
      +    @Test
      +    void createEntry_invalidBody_returns400() {
      +        baseRequest()
      +                .contentType(JSON)
      +                .body("{\"invalid-key\": \"invalid-value\"}")
      +                .post()
      +                .then()
      +                .statusCode(400);
      +    }
      +
      +    @Override
      +    protected Object controller() {
      +        return new BusinessPartnerGroupApiController(businessPartnerStore);
      +    }
      +
      +    private RequestSpecification baseRequest() {
      +        return given()
      +                .baseUri("http://localhost:" + port)
      +                .basePath("/business-partner-groups")
      +                .when();
      +    }
      +
      +    private JsonObject createJsonObject() {
      +        return Json.createObjectBuilder()
      +                .add(ID, "test-bpn")
      +                .add(CONTEXT, Json.createObjectBuilder().add(TX_PREFIX, TX_NAMESPACE).build())
      +                .add(TX_NAMESPACE + "groups", Json.createArrayBuilder((Set.of("group1", "group2", "group3"))))
      +                .build();
      +    }
      +
      +}
      \ 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 857227492..5d14017b9 100644
      --- a/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts
      +++ b/edc-extensions/bpn-validation/bpn-validation-core/build.gradle.kts
      @@ -31,6 +31,7 @@ dependencies {
           implementation(libs.edc.spi.contract)
           implementation(libs.edc.spi.policyengine)
       
      +    testImplementation(libs.edc.junit)
           testFixturesImplementation(libs.edc.junit)
           testFixturesImplementation(libs.junit.jupiter.api)
           testFixturesImplementation(libs.assertj)
      diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java
      index 0960f6128..1660598e5 100644
      --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java
      +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java
      @@ -19,6 +19,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.runtime.metamodel.annotation.Provider;
       import org.eclipse.edc.spi.system.ServiceExtension;
       import org.eclipse.edc.spi.system.ServiceExtensionContext;
       import org.eclipse.tractusx.edc.validation.businesspartner.functions.BusinessPartnerGroupFunction;
      @@ -69,6 +70,11 @@ public void initialize(ServiceExtensionContext context) {
               bindToScope(function, CATALOGING_SCOPE);
           }
       
      +    @Provider
      +    public BusinessPartnerService createBusinessPartnerService() {
      +        return new BusinessPartnerServiceImpl(store);
      +    }
      +
           private void bindToScope(BusinessPartnerGroupFunction function, String scope) {
               ruleBindingRegistry.bind(USE, scope);
               ruleBindingRegistry.bind(BusinessPartnerGroupFunction.BUSINESS_PARTNER_CONSTRAINT_KEY, scope);
      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..01584c21c 100644
      --- a/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts
      +++ b/edc-extensions/bpn-validation/bpn-validation-spi/build.gradle.kts
      @@ -25,6 +25,7 @@ plugins {
       dependencies {
           implementation(project(":spi:core-spi"))
           api(libs.edc.spi.core)
      +    api(libs.edc.spi.aggregateservices)
           implementation(libs.edc.spi.policy)
           implementation(libs.edc.spi.contract)
           implementation(libs.edc.spi.policyengine)
      
      From 344e81562b7cb378ce6006896ea0547797abbb3c Mon Sep 17 00:00:00 2001
      From: Paul Latzelsperger 
      Date: Thu, 3 Aug 2023 14:14:35 +0200
      Subject: [PATCH 6/8] update license headers
      
      ---
       .../edc/api/bpn/BusinessPartnerGroupApi.java  | 21 +++++++++++++++++++
       .../BusinessPartnerGroupApiController.java    | 21 +++++++++++++++++++
       .../bpn/BusinessPartnerGroupApiExtension.java | 21 +++++++++++++++++++
       ...BusinessPartnerGroupApiControllerTest.java | 21 +++++++++++++++++++
       .../BusinessPartnerEvaluationExtension.java   |  6 ------
       .../business-partner-validation/README.md     |  2 +-
       6 files changed, 85 insertions(+), 7 deletions(-)
      
      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 bce4b32bd..05038192f 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,3 +1,24 @@
      +/*
      + *
      + *   Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft
      + *
      + *   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.api.bpn;
       
       import io.swagger.v3.oas.annotations.OpenAPIDefinition;
      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 47fa56dcb..93991618f 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,3 +1,24 @@
      +/*
      + *
      + *   Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft
      + *
      + *   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.api.bpn;
       
       import io.swagger.v3.oas.annotations.parameters.RequestBody;
      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 27d521654..899b991fd 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,3 +1,24 @@
      +/*
      + *
      + *   Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft
      + *
      + *   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.api.bpn;
       
       import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration;
      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 660284d99..357e2c093 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,3 +1,24 @@
      +/*
      + *
      + *   Copyright (c) 2023 Bayerische Motoren Werke Aktiengesellschaft
      + *
      + *   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.api.bpn;
       
       import io.restassured.specification.RequestSpecification;
      diff --git a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java
      index 1660598e5..0960f6128 100644
      --- a/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java
      +++ b/edc-extensions/bpn-validation/bpn-validation-core/src/main/java/org/eclipse/tractusx/edc/validation/businesspartner/BusinessPartnerEvaluationExtension.java
      @@ -19,7 +19,6 @@
       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.runtime.metamodel.annotation.Provider;
       import org.eclipse.edc.spi.system.ServiceExtension;
       import org.eclipse.edc.spi.system.ServiceExtensionContext;
       import org.eclipse.tractusx.edc.validation.businesspartner.functions.BusinessPartnerGroupFunction;
      @@ -70,11 +69,6 @@ public void initialize(ServiceExtensionContext context) {
               bindToScope(function, CATALOGING_SCOPE);
           }
       
      -    @Provider
      -    public BusinessPartnerService createBusinessPartnerService() {
      -        return new BusinessPartnerServiceImpl(store);
      -    }
      -
           private void bindToScope(BusinessPartnerGroupFunction function, String scope) {
               ruleBindingRegistry.bind(USE, scope);
               ruleBindingRegistry.bind(BusinessPartnerGroupFunction.BUSINESS_PARTNER_CONSTRAINT_KEY, scope);
      diff --git a/edc-extensions/business-partner-validation/README.md b/edc-extensions/business-partner-validation/README.md
      index 103d8d69b..f339c7914 100644
      --- a/edc-extensions/business-partner-validation/README.md
      +++ b/edc-extensions/business-partner-validation/README.md
      @@ -1,4 +1,4 @@
      -# Business Partner Validation Extension 
      +# Business Partner Validation Extension
       
       > this extension is deprecated and should not be used anymore
       > Please use the `bpn-validation` module instead!
      
      From bafe7706961fa7031b5c2052a035441cc78d628f Mon Sep 17 00:00:00 2001
      From: Paul Latzelsperger 
      Date: Thu, 3 Aug 2023 14:46:31 +0200
      Subject: [PATCH 7/8] add test tag
      
      ---
       .../edc/api/bpn/BusinessPartnerGroupApiControllerTest.java      | 2 ++
       1 file changed, 2 insertions(+)
      
      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 357e2c093..49afdeae3 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
      @@ -27,6 +27,7 @@
       import org.eclipse.edc.connector.api.management.configuration.transform.ManagementApiTypeTransformerRegistry;
       import org.eclipse.edc.jsonld.TitaniumJsonLd;
       import org.eclipse.edc.jsonld.spi.JsonLd;
      +import org.eclipse.edc.junit.annotations.ApiTest;
       import org.eclipse.edc.spi.result.StoreResult;
       import org.eclipse.edc.web.jersey.testfixtures.RestControllerTestBase;
       import org.eclipse.tractusx.edc.validation.businesspartner.spi.BusinessPartnerStore;
      @@ -49,6 +50,7 @@
       import static org.mockito.Mockito.mock;
       import static org.mockito.Mockito.when;
       
      +@ApiTest
       class BusinessPartnerGroupApiControllerTest extends RestControllerTestBase {
       
           private final JsonLd jsonLdService = new TitaniumJsonLd(mock());
      
      From 8da759a7b7ef3b4142f63fde0a310dc4043d1d04 Mon Sep 17 00:00:00 2001
      From: Paul Latzelsperger 
      Date: Fri, 4 Aug 2023 08:33:47 +0200
      Subject: [PATCH 8/8] DEPENDENCIES
      
      ---
       DEPENDENCIES | 6 +++---
       1 file changed, 3 insertions(+), 3 deletions(-)
      
      diff --git a/DEPENDENCIES b/DEPENDENCIES
      index b13bae76b..62aad4a97 100644
      --- a/DEPENDENCIES
      +++ b/DEPENDENCIES
      @@ -52,7 +52,7 @@ maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.0, 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.10.0, , restricted, clearlydefined
      +maven/mavencentral/com.google.crypto.tink/tink/1.10.0, Apache-2.0, approved, #9845
       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.7.1, Apache-2.0, approved, clearlydefined
       maven/mavencentral/com.google.guava/failureaccess/1.0.1, Apache-2.0, approved, CQ22654
      @@ -340,7 +340,7 @@ maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.15, EPL-2.0 OR Apache-2.
       maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.15, EPL-2.0 OR Apache-2.0, approved, rt.jetty
       maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.15, EPL-2.0 OR Apache-2.0, approved, rt.jetty
       maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.15, EPL-2.0 OR Apache-2.0, approved, rt.jetty
      -maven/mavencentral/org.flywaydb/flyway-core/9.21.1, , restricted, clearlydefined
      +maven/mavencentral/org.flywaydb/flyway-core/9.21.1, Apache-2.0, approved, #9846
       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
      @@ -393,7 +393,7 @@ maven/mavencentral/org.junit.platform/junit-platform-engine/1.10.0, EPL-2.0, app
       maven/mavencentral/org.junit.platform/junit-platform-engine/1.9.3, EPL-2.0, approved, #3128
       maven/mavencentral/org.junit.platform/junit-platform-launcher/1.10.0, EPL-2.0, approved, #9704
       maven/mavencentral/org.junit.platform/junit-platform-launcher/1.9.3, EPL-2.0, approved, #3132
      -maven/mavencentral/org.junit/junit-bom/5.10.0, , restricted, clearlydefined
      +maven/mavencentral/org.junit/junit-bom/5.10.0, EPL-2.0, approved, #9844
       maven/mavencentral/org.junit/junit-bom/5.9.2, EPL-2.0, approved, #4711
       maven/mavencentral/org.junit/junit-bom/5.9.3, 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