diff --git a/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build.gradle.kts b/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build.gradle.kts index b2ae03aa..c251681e 100644 --- a/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build.gradle.kts +++ b/advanced/advanced-01-open-telemetry/open-telemetry-runtime/build.gradle.kts @@ -24,10 +24,11 @@ dependencies { runtimeOnly(libs.edc.bom.controlplane.base) { exclude(group = "org.eclipse.edc", "data-plane-signaling-core") exclude(group = "org.eclipse.edc", "data-plane-signaling-oauth2") + exclude(group = "org.eclipse.edc", "data-plane-signaling-oauth2-token-exchange") } implementation(libs.edc.iam.mock) - implementation(libs.edc.transfer.spi) + implementation(libs.edc.control.plane.spi) implementation(libs.opentelemetry.exporter.otlp) } diff --git a/advanced/advanced-01-open-telemetry/open-telemetry-runtime/src/main/java/org/eclipse/edc/sample/runtime/NoOpDataFlowControllerExtension.java b/advanced/advanced-01-open-telemetry/open-telemetry-runtime/src/main/java/org/eclipse/edc/sample/runtime/NoOpDataFlowControllerExtension.java index f35aaa85..6eb97119 100644 --- a/advanced/advanced-01-open-telemetry/open-telemetry-runtime/src/main/java/org/eclipse/edc/sample/runtime/NoOpDataFlowControllerExtension.java +++ b/advanced/advanced-01-open-telemetry/open-telemetry-runtime/src/main/java/org/eclipse/edc/sample/runtime/NoOpDataFlowControllerExtension.java @@ -81,7 +81,7 @@ public Set transferTypesFor(Asset asset) { } @Override - public Set transferTypesFor(String assetId) { + public Set transferTypesFor(String participantContextId, String assetId) { return Set.of("HttpData-PULL"); } } diff --git a/basic/basic-01-basic-connector/build.gradle.kts b/basic/basic-01-basic-connector/build.gradle.kts index 5842c8c0..36aaa7ee 100644 --- a/basic/basic-01-basic-connector/build.gradle.kts +++ b/basic/basic-01-basic-connector/build.gradle.kts @@ -23,6 +23,9 @@ dependencies { implementation(libs.edc.boot) implementation(libs.edc.runtime.core) implementation(libs.edc.connector.core) + implementation(libs.edc.participant.context.core) + implementation(libs.edc.participant.context.config.core) + implementation(libs.edc.participant.context.connector.core) implementation(libs.edc.http) } diff --git a/basic/basic-02-health-endpoint/build.gradle.kts b/basic/basic-02-health-endpoint/build.gradle.kts index 7e7c3b35..df2a05c7 100644 --- a/basic/basic-02-health-endpoint/build.gradle.kts +++ b/basic/basic-02-health-endpoint/build.gradle.kts @@ -23,6 +23,9 @@ dependencies { implementation(libs.edc.boot) implementation(libs.edc.runtime.core) implementation(libs.edc.connector.core) + implementation(libs.edc.participant.context.core) + implementation(libs.edc.participant.context.config.core) + implementation(libs.edc.participant.context.connector.core) implementation(libs.edc.http) diff --git a/basic/basic-03-configuration/build.gradle.kts b/basic/basic-03-configuration/build.gradle.kts index f85889ba..da2c38a4 100644 --- a/basic/basic-03-configuration/build.gradle.kts +++ b/basic/basic-03-configuration/build.gradle.kts @@ -24,6 +24,9 @@ dependencies { implementation(libs.edc.boot) implementation(libs.edc.runtime.core) implementation(libs.edc.connector.core) + implementation(libs.edc.participant.context.core) + implementation(libs.edc.participant.context.config.core) + implementation(libs.edc.participant.context.connector.core) implementation(libs.edc.http) diff --git a/basic/basic-04-event-consumer/connector-with-event-subscriber/build.gradle.kts b/basic/basic-04-event-consumer/connector-with-event-subscriber/build.gradle.kts index 802024fb..7ab57b73 100644 --- a/basic/basic-04-event-consumer/connector-with-event-subscriber/build.gradle.kts +++ b/basic/basic-04-event-consumer/connector-with-event-subscriber/build.gradle.kts @@ -22,7 +22,7 @@ dependencies { runtimeOnly(libs.edc.bom.controlplane.base) runtimeOnly(libs.edc.iam.mock) - implementation(libs.edc.asset.spi) + implementation(libs.edc.control.plane.spi) } application { diff --git a/federated-catalog/fc-00-basic/fixed-node-resolver/build.gradle.kts b/federated-catalog/fc-00-basic/fixed-node-resolver/build.gradle.kts index 7985a3f1..a7f81c6f 100644 --- a/federated-catalog/fc-00-basic/fixed-node-resolver/build.gradle.kts +++ b/federated-catalog/fc-00-basic/fixed-node-resolver/build.gradle.kts @@ -18,6 +18,6 @@ plugins { } dependencies { - implementation(libs.edc.fc.spi.crawler) + implementation(libs.edc.control.plane.spi) } diff --git a/federated-catalog/fc-00-basic/no-op-data-flow/build.gradle.kts b/federated-catalog/fc-00-basic/no-op-data-flow/build.gradle.kts new file mode 100644 index 00000000..c05b263f --- /dev/null +++ b/federated-catalog/fc-00-basic/no-op-data-flow/build.gradle.kts @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2026 Think-it GmbH + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Think-it GmbH - initial API and implementation + * + */ + +plugins { + `java-library` +} + +dependencies { + implementation(libs.edc.control.plane.spi) +} diff --git a/federated-catalog/fc-00-basic/no-op-data-flow/src/main/java/org/eclipse/edc/sample/extension/fc/NoOpDataFlowControllerExtension.java b/federated-catalog/fc-00-basic/no-op-data-flow/src/main/java/org/eclipse/edc/sample/extension/fc/NoOpDataFlowControllerExtension.java new file mode 100644 index 00000000..a9799969 --- /dev/null +++ b/federated-catalog/fc-00-basic/no-op-data-flow/src/main/java/org/eclipse/edc/sample/extension/fc/NoOpDataFlowControllerExtension.java @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2026 Think-it GmbH + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0 + * + * SPDX-License-Identifier: Apache-2.0 + * + * Contributors: + * Think-it GmbH - initial API and implementation + * + */ + +package org.eclipse.edc.sample.extension.fc; + +import org.eclipse.edc.connector.controlplane.asset.spi.domain.Asset; +import org.eclipse.edc.connector.controlplane.transfer.spi.flow.DataFlowController; +import org.eclipse.edc.connector.controlplane.transfer.spi.types.DataFlowResponse; +import org.eclipse.edc.connector.controlplane.transfer.spi.types.TransferProcess; +import org.eclipse.edc.policy.model.Policy; +import org.eclipse.edc.runtime.metamodel.annotation.Provider; +import org.eclipse.edc.spi.response.StatusResult; +import org.eclipse.edc.spi.system.ServiceExtension; +import org.jetbrains.annotations.NotNull; + +import java.util.Set; + +/** + * Registers a no-op {@link DataFlowController} so that assets are advertised with a transfer type and therefore + * show up as datasets in the catalog. This keeps the federated catalog samples self-contained, without wiring a + * real data plane. + */ +public class NoOpDataFlowControllerExtension implements ServiceExtension { + + @Provider + public DataFlowController dataFlowController() { + return new NoOpDataFlowController(); + } + + private static class NoOpDataFlowController implements DataFlowController { + + @Override + public boolean canHandle(TransferProcess transferProcess) { + return true; + } + + @Override + public StatusResult prepare(TransferProcess transferProcess, Policy policy) { + return StatusResult.success(DataFlowResponse.Builder.newInstance().build()); + } + + @Override + public @NotNull StatusResult start(TransferProcess transferProcess, Policy policy) { + return StatusResult.success(DataFlowResponse.Builder.newInstance().build()); + } + + @Override + public StatusResult suspend(TransferProcess transferProcess) { + return StatusResult.success(); + } + + @Override + public StatusResult resume(TransferProcess transferProcess) { + return StatusResult.success(DataFlowResponse.Builder.newInstance().build()); + } + + @Override + public StatusResult terminate(TransferProcess transferProcess) { + return StatusResult.success(); + } + + @Override + public StatusResult started(TransferProcess transferProcess) { + return StatusResult.success(); + } + + @Override + public StatusResult completed(TransferProcess transferProcess) { + return StatusResult.success(); + } + + @Override + public Set transferTypesFor(Asset asset) { + return Set.of("HttpData-PULL"); + } + + @Override + public Set transferTypesFor(String participantContextId, String assetId) { + return Set.of("HttpData-PULL"); + } + } + +} diff --git a/federated-catalog/fc-00-basic/no-op-data-flow/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension b/federated-catalog/fc-00-basic/no-op-data-flow/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension new file mode 100644 index 00000000..028b6f3b --- /dev/null +++ b/federated-catalog/fc-00-basic/no-op-data-flow/src/main/resources/META-INF/services/org.eclipse.edc.spi.system.ServiceExtension @@ -0,0 +1,15 @@ +# +# Copyright (c) 2026 Think-it GmbH +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0 +# +# SPDX-License-Identifier: Apache-2.0 +# +# Contributors: +# Think-it GmbH - initial API and implementation +# +# + +org.eclipse.edc.sample.extension.fc.NoOpDataFlowControllerExtension diff --git a/federated-catalog/fc-00-basic/participant-connector/build.gradle.kts b/federated-catalog/fc-00-basic/participant-connector/build.gradle.kts index 7f458ce1..828bf828 100644 --- a/federated-catalog/fc-00-basic/participant-connector/build.gradle.kts +++ b/federated-catalog/fc-00-basic/participant-connector/build.gradle.kts @@ -19,8 +19,13 @@ plugins { } dependencies { - runtimeOnly(libs.edc.bom.controlplane.base) + runtimeOnly(libs.edc.bom.controlplane.base) { + exclude(group = "org.eclipse.edc", "data-plane-signaling-core") + exclude(group = "org.eclipse.edc", "data-plane-signaling-oauth2") + exclude(group = "org.eclipse.edc", "data-plane-signaling-oauth2-token-exchange") + } runtimeOnly(libs.edc.iam.mock) + runtimeOnly(project(":federated-catalog:fc-00-basic:no-op-data-flow")) } application { diff --git a/federated-catalog/fc-01-embedded/fc-connector/build.gradle.kts b/federated-catalog/fc-01-embedded/fc-connector/build.gradle.kts index 6c3bf318..0e1706f3 100644 --- a/federated-catalog/fc-01-embedded/fc-connector/build.gradle.kts +++ b/federated-catalog/fc-01-embedded/fc-connector/build.gradle.kts @@ -21,6 +21,7 @@ plugins { dependencies { implementation(project(":federated-catalog:fc-00-basic:federated-catalog-base")) implementation(project(":federated-catalog:fc-00-basic:fixed-node-resolver")) + implementation(project(":federated-catalog:fc-00-basic:no-op-data-flow")) runtimeOnly(libs.edc.bom.controlplane.base) runtimeOnly(libs.edc.iam.mock) diff --git a/federated-catalog/fc-02-standalone/standalone-fc/build.gradle.kts b/federated-catalog/fc-02-standalone/standalone-fc/build.gradle.kts index 27260184..a6973d4d 100644 --- a/federated-catalog/fc-02-standalone/standalone-fc/build.gradle.kts +++ b/federated-catalog/fc-02-standalone/standalone-fc/build.gradle.kts @@ -23,6 +23,7 @@ dependencies { runtimeOnly(project(":federated-catalog:fc-00-basic:fixed-node-resolver")) implementation(libs.edc.iam.mock) + runtimeOnly(libs.edc.dsp.catalog.transform.v2025) } diff --git a/federated-catalog/fc-03-static-node-directory/embedded-fc-with-node-resolver/build.gradle.kts b/federated-catalog/fc-03-static-node-directory/embedded-fc-with-node-resolver/build.gradle.kts index 2ae5cacf..5ca9f91a 100644 --- a/federated-catalog/fc-03-static-node-directory/embedded-fc-with-node-resolver/build.gradle.kts +++ b/federated-catalog/fc-03-static-node-directory/embedded-fc-with-node-resolver/build.gradle.kts @@ -21,16 +21,19 @@ plugins { dependencies { runtimeOnly(project(":federated-catalog:fc-00-basic:federated-catalog-base")) runtimeOnly(project(":federated-catalog:fc-03-static-node-directory:target-node-resolver")) + runtimeOnly(project(":federated-catalog:fc-00-basic:no-op-data-flow")) implementation(libs.edc.runtime.core) implementation(libs.edc.connector.core) + implementation(libs.edc.participant.context.core) + implementation(libs.edc.participant.context.config.core) + implementation(libs.edc.participant.context.connector.core) implementation(libs.edc.control.plane.core) implementation(libs.edc.configuration.filesystem) implementation(libs.edc.management.api) implementation(libs.edc.dsp) implementation(libs.edc.iam.mock) implementation(libs.edc.http) - implementation(libs.edc.edr.store.core) } diff --git a/federated-catalog/fc-03-static-node-directory/standalone-fc-with-node-resolver/build.gradle.kts b/federated-catalog/fc-03-static-node-directory/standalone-fc-with-node-resolver/build.gradle.kts index 9a1bb4fb..7b8d740a 100644 --- a/federated-catalog/fc-03-static-node-directory/standalone-fc-with-node-resolver/build.gradle.kts +++ b/federated-catalog/fc-03-static-node-directory/standalone-fc-with-node-resolver/build.gradle.kts @@ -21,9 +21,13 @@ plugins { dependencies { runtimeOnly(project(":federated-catalog:fc-00-basic:federated-catalog-base")) runtimeOnly(project(":federated-catalog:fc-03-static-node-directory:target-node-resolver")) + runtimeOnly(project(":federated-catalog:fc-00-basic:no-op-data-flow")) implementation(libs.edc.runtime.core) implementation(libs.edc.connector.core) + implementation(libs.edc.participant.context.core) + implementation(libs.edc.participant.context.config.core) + implementation(libs.edc.participant.context.connector.core) runtimeOnly(libs.edc.boot) runtimeOnly(libs.edc.control.plane.core) implementation(libs.edc.configuration.filesystem) diff --git a/federated-catalog/fc-03-static-node-directory/target-node-resolver/build.gradle.kts b/federated-catalog/fc-03-static-node-directory/target-node-resolver/build.gradle.kts index 766f3d27..0776e04f 100644 --- a/federated-catalog/fc-03-static-node-directory/target-node-resolver/build.gradle.kts +++ b/federated-catalog/fc-03-static-node-directory/target-node-resolver/build.gradle.kts @@ -18,5 +18,5 @@ plugins { } dependencies { - implementation(libs.edc.fc.spi.crawler) + implementation(libs.edc.control.plane.spi) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ee025624..4b6cf42b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ format.version = "1.1" [versions] awaitility = "4.2.2" -edc = "0.18.1" +edc = "1.0.0-RC4" okhttp-mockwebserver = "5.5.0" restAssured = "6.0.1" rsApi = "4.0.0" @@ -11,28 +11,26 @@ testcontainers = "1.21.4" [libraries] edc-boot = { module = "org.eclipse.edc:boot", version.ref = "edc" } -edc-asset-spi = { module = "org.eclipse.edc:asset-spi", version.ref = "edc" } +edc-core-spi = { module = "org.eclipse.edc:core-spi", version.ref = "edc" } edc-bom-controlplane-base = { module = "org.eclipse.edc:controlplane-base-bom", version.ref = "edc" } edc-configuration-filesystem = { module = "org.eclipse.edc:configuration-filesystem", version.ref = "edc" } edc-connector-core = { module = "org.eclipse.edc:connector-core", version.ref = "edc" } edc-control-plane-core = { module = "org.eclipse.edc:control-plane-core", version.ref = "edc" } edc-control-plane-spi = { module = "org.eclipse.edc:control-plane-spi", version.ref = "edc" } -edc-data-plane-spi = { module = "org.eclipse.edc:data-plane-spi", version.ref = "edc" } edc-dsp = { module = "org.eclipse.edc:dsp", version.ref = "edc" } -edc-edr-store-core = { module = "org.eclipse.edc:edr-store-core", version.ref = "edc" } +edc-dsp-catalog-transform-v2025 = { module = "org.eclipse.edc:dsp-catalog-transform-2025", version.ref = "edc" } edc-federatedcatalog-base-bom = { module = "org.eclipse.edc:federatedcatalog-base-bom", version.ref = "edc" } -edc-fc-spi-crawler = { module = "org.eclipse.edc:crawler-spi", version.ref = "edc" } edc-http = { module = "org.eclipse.edc:http", version.ref = "edc" } edc-iam-mock = { module = "org.eclipse.edc:iam-mock", version.ref = "edc" } -edc-json-ld-lib = { module = "org.eclipse.edc:json-ld-lib", version.ref = "edc" } -edc-json-ld-spi = { module = "org.eclipse.edc:json-ld-spi", version.ref = "edc" } +edc-json-ld = { module = "org.eclipse.edc:json-ld", version.ref = "edc" } edc-junit = { module = "org.eclipse.edc:junit", version.ref = "edc" } edc-management-api = { module = "org.eclipse.edc:management-api", version.ref = "edc" } edc-management-api-test-fixtures = { module = "org.eclipse.edc:management-api-test-fixtures", version.ref = "edc" } -edc-participant-context-config-spi = { module = "org.eclipse.edc:participant-context-config-spi", version.ref = "edc" } +edc-participant-context-config-core = { module = "org.eclipse.edc:participant-context-config-core", version.ref = "edc" } +edc-participant-context-connector-core = { module = "org.eclipse.edc:participant-context-connector-core", version.ref = "edc" } +edc-participant-context-core = { module = "org.eclipse.edc:participant-context-core", version.ref = "edc" } edc-runtime-core = { module = "org.eclipse.edc:runtime-core", version.ref = "edc" } edc-token-core = { module = "org.eclipse.edc:token-core", version.ref = "edc" } -edc-transfer-spi = { module = "org.eclipse.edc:transfer-spi", version.ref = "edc" } awaitility = { module = "org.awaitility:awaitility", version.ref = "awaitility" } jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "rsApi" } diff --git a/policy/policy-01-policy-enforcement/policy-functions/build.gradle.kts b/policy/policy-01-policy-enforcement/policy-functions/build.gradle.kts index 1436d237..5a8462a1 100644 --- a/policy/policy-01-policy-enforcement/policy-functions/build.gradle.kts +++ b/policy/policy-01-policy-enforcement/policy-functions/build.gradle.kts @@ -4,9 +4,8 @@ plugins { } dependencies { - api(libs.edc.data.plane.spi) - api(libs.edc.json.ld.spi) - api(libs.edc.participant.context.config.spi) + api(libs.edc.core.spi) + api(libs.edc.control.plane.spi) implementation(libs.edc.control.plane.core) diff --git a/policy/policy-01-policy-enforcement/policy-functions/src/main/java/org/eclipse/edc/sample/extension/policy/IamClaimsExtension.java b/policy/policy-01-policy-enforcement/policy-functions/src/main/java/org/eclipse/edc/sample/extension/policy/IamClaimsExtension.java index 2db77e35..4b996d3a 100644 --- a/policy/policy-01-policy-enforcement/policy-functions/src/main/java/org/eclipse/edc/sample/extension/policy/IamClaimsExtension.java +++ b/policy/policy-01-policy-enforcement/policy-functions/src/main/java/org/eclipse/edc/sample/extension/policy/IamClaimsExtension.java @@ -14,10 +14,10 @@ package org.eclipse.edc.sample.extension.policy; +import org.eclipse.edc.controlplane.iam.AudienceResolver; import org.eclipse.edc.participantcontext.spi.config.ParticipantContextConfig; import org.eclipse.edc.runtime.metamodel.annotation.Inject; import org.eclipse.edc.runtime.metamodel.annotation.Provider; -import org.eclipse.edc.spi.iam.AudienceResolver; import org.eclipse.edc.spi.iam.ClaimToken; import org.eclipse.edc.spi.iam.IdentityService; import org.eclipse.edc.spi.iam.TokenParameters; diff --git a/settings.gradle.kts b/settings.gradle.kts index fdeac611..ae8b21e9 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -44,6 +44,7 @@ include(":policy:policy-01-policy-enforcement:policy-functions") include(":federated-catalog:fc-00-basic:federated-catalog-base") include(":federated-catalog:fc-00-basic:fixed-node-resolver") include(":federated-catalog:fc-00-basic:participant-connector") +include(":federated-catalog:fc-00-basic:no-op-data-flow") include(":federated-catalog:fc-01-embedded:fc-connector") include(":federated-catalog:fc-02-standalone:standalone-fc") include(":federated-catalog:fc-03-static-node-directory:target-node-resolver") diff --git a/system-tests/build.gradle.kts b/system-tests/build.gradle.kts index adbdd833..649ef308 100644 --- a/system-tests/build.gradle.kts +++ b/system-tests/build.gradle.kts @@ -20,8 +20,8 @@ plugins { dependencies { testImplementation(libs.edc.junit) - testImplementation(libs.edc.json.ld.lib) - testImplementation(libs.edc.json.ld.spi) + testImplementation(libs.edc.json.ld) + testImplementation(libs.edc.core.spi) testImplementation(libs.edc.control.plane.spi) testImplementation(testFixtures(libs.edc.management.api.test.fixtures)) testImplementation(libs.awaitility) diff --git a/system-tests/src/test/java/org/eclipse/edc/samples/common/FederatedCatalogCommon.java b/system-tests/src/test/java/org/eclipse/edc/samples/common/FederatedCatalogCommon.java index be90ee11..0255614b 100644 --- a/system-tests/src/test/java/org/eclipse/edc/samples/common/FederatedCatalogCommon.java +++ b/system-tests/src/test/java/org/eclipse/edc/samples/common/FederatedCatalogCommon.java @@ -58,7 +58,7 @@ public class FederatedCatalogCommon { public static final String STANDALONE_FC_CATALOG_API_ENDPOINT = "http://localhost:39193/api/management/v4/catalogs/request"; public static final String EMPTY_QUERY_FILE_PATH = "federated-catalog/fc-01-embedded/resources/empty-query.json"; public static final String TYPE = "[0].@type"; - public static final String DATASET_ASSET_ID = "[0].'dcat:dataset'.@id"; + public static final String DATASET_ASSET_ID = "[0].dataset[0].@id"; public static RuntimeExtension getParticipantConnector() { return PrerequisitesCommon.getProvider(PARTICIPANT_CONNECTOR_MODULE_PATH, PARTICIPANT_CONNECTOR_CONFIG_PROPERTIES_FILE_PATH); @@ -103,7 +103,7 @@ public static JsonPath postAndAssertType(String url, String requestBody) { .log().ifValidationFails() .statusCode(HttpStatus.SC_OK) .body(TYPE, not(emptyString())) - .body(TYPE, is("dcat:Catalog")) + .body(TYPE, is("Catalog")) .extract() .jsonPath(); }