diff --git a/DEPENDENCIES b/DEPENDENCIES index 65de9586..4ea1bbb3 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -24,9 +24,9 @@ maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-a maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.16.1, Apache-2.0, approved, #11856 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.15.1, Apache-2.0, approved, #7929 maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.16.1, Apache-2.0, approved, #11852 -maven/mavencentral/com.github.docker-java/docker-java-api/3.3.5, Apache-2.0, approved, #10346 -maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.3.5, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #7946 -maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.5, Apache-2.0, approved, #7942 +maven/mavencentral/com.github.docker-java/docker-java-api/3.3.6, Apache-2.0, approved, #10346 +maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.3.6, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #7946 +maven/mavencentral/com.github.docker-java/docker-java-transport/3.3.6, Apache-2.0, approved, #7942 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 @@ -39,7 +39,7 @@ maven/mavencentral/com.google.guava/guava/33.0.0-jre, Apache-2.0 AND CC0-1.0, ap maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 maven/mavencentral/com.google.protobuf/protobuf-java/3.24.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 -maven/mavencentral/com.puppycrawl.tools/checkstyle/10.14.0, , restricted, clearlydefined +maven/mavencentral/com.puppycrawl.tools/checkstyle/10.14.0, LGPL-2.1-or-later AND (Apache-2.0 AND LGPL-2.1-or-later) AND Apache-2.0, approved, #13562 maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #11156 maven/mavencentral/com.squareup.okhttp3/okhttp/4.9.3, Apache-2.0 AND MPL-2.0, approved, #3225 @@ -300,8 +300,8 @@ maven/mavencentral/org.slf4j/slf4j-api/1.7.30, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.35, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/1.7.36, MIT, approved, CQ13368 maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915 -maven/mavencentral/org.testcontainers/junit-jupiter/1.19.6, MIT, approved, #10344 -maven/mavencentral/org.testcontainers/testcontainers/1.19.6, Apache-2.0 AND MIT, approved, #10347 +maven/mavencentral/org.testcontainers/junit-jupiter/1.19.7, MIT, approved, #10344 +maven/mavencentral/org.testcontainers/testcontainers/1.19.7, Apache-2.0 AND MIT, approved, #10347 maven/mavencentral/org.xmlresolver/xmlresolver/5.2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/org.yaml/snakeyaml/2.0, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #7275 maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #10232 diff --git a/build.gradle.kts b/build.gradle.kts index 79480cc6..47e35c57 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,7 +20,6 @@ plugins { val fccScmConnection: String by project val fccScmUrl: String by project val annotationProcessorVersion: String by project -val metaModelVersion: String by project buildscript { dependencies { @@ -35,14 +34,10 @@ allprojects { // configure which version of the annotation processor to use. defaults to the same version as the plugin configure { processorVersion.set(annotationProcessorVersion) - outputDirectory.set(project.buildDir) + outputDirectory.set(project.layout.buildDirectory.asFile.get()) } configure { - versions { - // override default dependency versions here - metaModel.set(metaModelVersion) - } pom { scmConnection.set(fccScmConnection) scmUrl.set(fccScmUrl) diff --git a/core/federated-catalog-core/build.gradle.kts b/core/federated-catalog-core/build.gradle.kts index 7140445f..25c65c08 100644 --- a/core/federated-catalog-core/build.gradle.kts +++ b/core/federated-catalog-core/build.gradle.kts @@ -26,13 +26,13 @@ dependencies { implementation(libs.edc.util) implementation(libs.edc.core.connector) + implementation(libs.edc.core.transform) implementation(libs.edc.spi.jsonld) implementation(libs.edc.jsonld) // required for integration test testImplementation(libs.edc.dsp.transform.catalog) testImplementation(libs.edc.junit) - testImplementation(libs.edc.core.transform) testImplementation(libs.edc.ext.http) testImplementation(libs.awaitility) } diff --git a/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/cache/FederatedCatalogCacheExtension.java b/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/cache/FederatedCatalogCacheExtension.java index 664df879..2d15c6a2 100644 --- a/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/cache/FederatedCatalogCacheExtension.java +++ b/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/cache/FederatedCatalogCacheExtension.java @@ -24,6 +24,8 @@ import org.eclipse.edc.catalog.transform.JsonObjectToDataServiceTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDatasetTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDistributionTransformer; +import org.eclipse.edc.core.transform.transformer.edc.to.JsonValueToGenericTypeTransformer; +import org.eclipse.edc.core.transform.transformer.odrl.OdrlTransformersFactory; import org.eclipse.edc.crawler.spi.CrawlerActionRegistry; import org.eclipse.edc.crawler.spi.TargetNodeDirectory; import org.eclipse.edc.crawler.spi.TargetNodeFilter; @@ -33,6 +35,7 @@ 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.agent.ParticipantIdMapper; import org.eclipse.edc.spi.message.RemoteMessageDispatcherRegistry; import org.eclipse.edc.spi.monitor.Monitor; import org.eclipse.edc.spi.system.ServiceExtension; @@ -78,6 +81,9 @@ public class FederatedCatalogCacheExtension implements ServiceExtension { @Inject private JsonLd jsonLdService; + @Inject + private ParticipantIdMapper participantIdMapper; + @Inject private Monitor monitor; @Inject @@ -137,6 +143,8 @@ private void registerTransformers() { transformerRegistry.register(new JsonObjectToDatasetTransformer()); transformerRegistry.register(new JsonObjectToDataServiceTransformer()); transformerRegistry.register(new JsonObjectToDistributionTransformer()); + OdrlTransformersFactory.jsonObjectToOdrlTransformers(participantIdMapper).forEach(transformerRegistry::register); + transformerRegistry.register(new JsonValueToGenericTypeTransformer(typeManager.getMapper(JSON_LD))); } /** diff --git a/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/transform/JsonObjectToCatalogTransformer.java b/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/transform/JsonObjectToCatalogTransformer.java index fbd6c177..c95db97b 100644 --- a/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/transform/JsonObjectToCatalogTransformer.java +++ b/core/federated-catalog-core/src/main/java/org/eclipse/edc/catalog/transform/JsonObjectToCatalogTransformer.java @@ -26,7 +26,7 @@ import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATASET_ATTRIBUTE; import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DCAT_DATA_SERVICE_ATTRIBUTE; -import static org.eclipse.edc.protocol.dsp.type.DspCatalogPropertyAndTypeNames.DSPACE_PROPERTY_PARTICIPANT_ID; +import static org.eclipse.edc.jsonld.spi.PropertyAndTypeNames.DSPACE_PROPERTY_PARTICIPANT_ID; /** * Converts from a DCAT catalog as a {@link JsonObject} in JSON-LD expanded form to a {@link Catalog}. diff --git a/core/federated-catalog-core/src/test/java/org/eclipse/edc/catalog/query/BatchedCatalogRequestFetcherTest.java b/core/federated-catalog-core/src/test/java/org/eclipse/edc/catalog/query/BatchedCatalogRequestFetcherTest.java index 708a350f..db604634 100644 --- a/core/federated-catalog-core/src/test/java/org/eclipse/edc/catalog/query/BatchedCatalogRequestFetcherTest.java +++ b/core/federated-catalog-core/src/test/java/org/eclipse/edc/catalog/query/BatchedCatalogRequestFetcherTest.java @@ -29,6 +29,7 @@ import org.eclipse.edc.catalog.transform.JsonObjectToDataServiceTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDatasetTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDistributionTransformer; +import org.eclipse.edc.connector.core.base.agent.NoOpParticipantIdMapper; import org.eclipse.edc.core.transform.TypeTransformerRegistryImpl; import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromPolicyTransformer; import org.eclipse.edc.core.transform.transformer.to.JsonObjectToPolicyTransformer; @@ -147,15 +148,16 @@ private Catalog createCatalog(int howManyOffers) { private void registerTransformers() { var factory = Json.createBuilderFactory(Map.of()); var mapper = JacksonJsonLd.createObjectMapper(); - typeTransformerRegistry.register(new JsonObjectFromCatalogTransformer(factory, mapper)); + var participantIdMapper = new NoOpParticipantIdMapper(); + typeTransformerRegistry.register(new JsonObjectFromCatalogTransformer(factory, mapper, participantIdMapper)); typeTransformerRegistry.register(new JsonObjectFromDatasetTransformer(factory, mapper)); typeTransformerRegistry.register(new JsonObjectFromDataServiceTransformer(factory)); - typeTransformerRegistry.register(new JsonObjectFromPolicyTransformer(factory)); + typeTransformerRegistry.register(new JsonObjectFromPolicyTransformer(factory, participantIdMapper)); typeTransformerRegistry.register(new JsonObjectFromDistributionTransformer(factory)); typeTransformerRegistry.register(new JsonObjectToCatalogTransformer()); typeTransformerRegistry.register(new JsonObjectToDatasetTransformer()); typeTransformerRegistry.register(new JsonObjectToDataServiceTransformer()); - typeTransformerRegistry.register(new JsonObjectToPolicyTransformer()); + typeTransformerRegistry.register(new JsonObjectToPolicyTransformer(participantIdMapper)); typeTransformerRegistry.register(new JsonObjectToDistributionTransformer()); } diff --git a/extensions/api/federated-catalog-api/build.gradle.kts b/extensions/api/federated-catalog-api/build.gradle.kts index 61037c50..a821a122 100644 --- a/extensions/api/federated-catalog-api/build.gradle.kts +++ b/extensions/api/federated-catalog-api/build.gradle.kts @@ -24,6 +24,7 @@ dependencies { api(project(":spi:federated-catalog-spi")) runtimeOnly(libs.edc.core.connector) + implementation(libs.edc.core.transform) implementation(libs.edc.api.management.config) runtimeOnly(libs.edc.spi.jsonld) runtimeOnly(libs.edc.jsonld) diff --git a/extensions/api/federated-catalog-api/src/main/java/org/eclipse/edc/catalog/api/query/FederatedCatalogCacheQueryApiExtension.java b/extensions/api/federated-catalog-api/src/main/java/org/eclipse/edc/catalog/api/query/FederatedCatalogCacheQueryApiExtension.java index a8d06894..8bbd6dd5 100644 --- a/extensions/api/federated-catalog-api/src/main/java/org/eclipse/edc/catalog/api/query/FederatedCatalogCacheQueryApiExtension.java +++ b/extensions/api/federated-catalog-api/src/main/java/org/eclipse/edc/catalog/api/query/FederatedCatalogCacheQueryApiExtension.java @@ -16,6 +16,7 @@ import org.eclipse.edc.catalog.spi.QueryEngine; import org.eclipse.edc.connector.api.management.configuration.ManagementApiConfiguration; +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; @@ -51,7 +52,8 @@ public String name() { @Override public void initialize(ServiceExtensionContext context) { - var catalogController = new FederatedCatalogApiController(queryEngine, transformerRegistry); + var managementApiTransformerRegistry = transformerRegistry.forContext("management-api"); + var catalogController = new FederatedCatalogApiController(queryEngine, managementApiTransformerRegistry); webService.registerResource(config.getContextAlias(), catalogController); // contribute to the liveness probe diff --git a/extensions/api/federated-catalog-api/src/test/java/org/eclipse/edc/catalog/api/query/FederatedCatalogApiControllerTest.java b/extensions/api/federated-catalog-api/src/test/java/org/eclipse/edc/catalog/api/query/FederatedCatalogApiControllerTest.java index da444c89..c98d95fe 100644 --- a/extensions/api/federated-catalog-api/src/test/java/org/eclipse/edc/catalog/api/query/FederatedCatalogApiControllerTest.java +++ b/extensions/api/federated-catalog-api/src/test/java/org/eclipse/edc/catalog/api/query/FederatedCatalogApiControllerTest.java @@ -24,6 +24,7 @@ import org.eclipse.edc.catalog.transform.JsonObjectToDataServiceTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDatasetTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDistributionTransformer; +import org.eclipse.edc.connector.core.base.agent.NoOpParticipantIdMapper; import org.eclipse.edc.jsonld.util.JacksonJsonLd; import org.eclipse.edc.junit.annotations.ApiTest; import org.eclipse.edc.junit.extensions.EdcExtension; @@ -110,11 +111,6 @@ private RequestSpecification baseRequest() { .when(); } - // registers all the necessary transformers to avoid duplicating their behaviour in mocks - private void registerTransformers() { - - } - public static class TransformerRegistrarExtension implements ServiceExtension { @Override @@ -123,7 +119,7 @@ public void initialize(ServiceExtensionContext context) { var factory = Json.createBuilderFactory(Map.of()); var mapper = JacksonJsonLd.createObjectMapper(); typeTransformerRegistry.register(new JsonObjectToCatalogTransformer()); - typeTransformerRegistry.register(new JsonObjectFromCatalogTransformer(factory, mapper)); + typeTransformerRegistry.register(new JsonObjectFromCatalogTransformer(factory, mapper, new NoOpParticipantIdMapper())); typeTransformerRegistry.register(new JsonObjectToDatasetTransformer()); typeTransformerRegistry.register(new JsonObjectToDataServiceTransformer()); typeTransformerRegistry.register(new JsonObjectToDistributionTransformer()); diff --git a/gradle.properties b/gradle.properties index c84950ef..d1f71994 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,6 @@ version=0.5.2-SNAPSHOT # configure the build: annotationProcessorVersion=0.5.2-SNAPSHOT edcGradlePluginsVersion=0.5.2-SNAPSHOT -metaModelVersion=0.5.2-SNAPSHOT # used for publishing artifacts and plugins fccScmConnection=scm:git:git@github.com:eclipse-edc/FederatedCatalog.git diff --git a/system-tests/end2end-test/e2e-junit-runner/src/test/java/org/eclipse/edc/end2end/FederatedCatalogTest.java b/system-tests/end2end-test/e2e-junit-runner/src/test/java/org/eclipse/edc/end2end/FederatedCatalogTest.java index 34aeeffc..0fc28c87 100644 --- a/system-tests/end2end-test/e2e-junit-runner/src/test/java/org/eclipse/edc/end2end/FederatedCatalogTest.java +++ b/system-tests/end2end-test/e2e-junit-runner/src/test/java/org/eclipse/edc/end2end/FederatedCatalogTest.java @@ -24,9 +24,10 @@ import org.eclipse.edc.catalog.transform.JsonObjectToDataServiceTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDatasetTransformer; import org.eclipse.edc.catalog.transform.JsonObjectToDistributionTransformer; +import org.eclipse.edc.connector.core.base.agent.NoOpParticipantIdMapper; import org.eclipse.edc.core.transform.TypeTransformerRegistryImpl; -import org.eclipse.edc.core.transform.transformer.from.JsonObjectFromPolicyTransformer; -import org.eclipse.edc.core.transform.transformer.to.JsonValueToGenericTypeTransformer; +import org.eclipse.edc.core.transform.transformer.edc.to.JsonValueToGenericTypeTransformer; +import org.eclipse.edc.core.transform.transformer.odrl.from.JsonObjectFromPolicyTransformer; import org.eclipse.edc.crawler.spi.TargetNode; import org.eclipse.edc.crawler.spi.TargetNodeDirectory; import org.eclipse.edc.jsonld.TitaniumJsonLd; @@ -56,7 +57,7 @@ import static java.util.Optional.ofNullable; import static org.assertj.core.api.Assertions.assertThat; import static org.awaitility.Awaitility.await; -import static org.eclipse.edc.core.transform.transformer.OdrlTransformersFactory.jsonObjectToOdrlTransformers; +import static org.eclipse.edc.core.transform.transformer.odrl.OdrlTransformersFactory.jsonObjectToOdrlTransformers; import static org.eclipse.edc.end2end.TestFunctions.createContractDef; import static org.eclipse.edc.end2end.TestFunctions.createPolicy; import static org.mockito.Mockito.mock; @@ -122,15 +123,16 @@ void setUp() { //needed for ZonedDateTime mapper.registerModule(new JavaTimeModule()); JsonBuilderFactory factory = Json.createBuilderFactory(Map.of()); - typeTransformerRegistry.register(new JsonObjectFromCatalogTransformer(factory, mapper)); + var participantIdMapper = new NoOpParticipantIdMapper(); + typeTransformerRegistry.register(new JsonObjectFromCatalogTransformer(factory, mapper, participantIdMapper)); typeTransformerRegistry.register(new JsonObjectFromDatasetTransformer(factory, mapper)); typeTransformerRegistry.register(new JsonObjectFromDataServiceTransformer(factory)); - typeTransformerRegistry.register(new JsonObjectFromPolicyTransformer(factory)); + typeTransformerRegistry.register(new JsonObjectFromPolicyTransformer(factory, participantIdMapper)); typeTransformerRegistry.register(new JsonObjectFromDistributionTransformer(factory)); typeTransformerRegistry.register(new JsonObjectToCatalogTransformer()); typeTransformerRegistry.register(new JsonObjectToDatasetTransformer()); typeTransformerRegistry.register(new JsonObjectToDataServiceTransformer()); - jsonObjectToOdrlTransformers().forEach(typeTransformerRegistry::register); + jsonObjectToOdrlTransformers(participantIdMapper).forEach(typeTransformerRegistry::register); typeTransformerRegistry.register(new JsonObjectToDistributionTransformer()); typeTransformerRegistry.register(new JsonValueToGenericTypeTransformer(mapper));