From 42860e627aac502562ee7e8072296ae6232568f5 Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Tue, 2 Jun 2026 11:10:29 +0200 Subject: [PATCH 1/6] chore: separate modules --- build.gradle.kts | 35 ++------------- core/build.gradle.kts | 37 +++++++++++++++ .../java/org/eclipse/dataplane/Dataplane.java | 0 .../eclipse/dataplane/domain/DataAddress.java | 0 .../org/eclipse/dataplane/domain/Result.java | 0 .../domain/controlplane/ControlPlane.java | 0 .../dataplane/domain/dataflow/DataFlow.java | 0 .../dataflow/DataFlowPrepareMessage.java | 0 .../dataflow/DataFlowResumeMessage.java | 0 .../domain/dataflow/DataFlowStartMessage.java | 0 .../DataFlowStartedNotificationMessage.java | 0 .../dataflow/DataFlowStatusMessage.java | 0 .../DataFlowStatusResponseMessage.java | 0 .../dataflow/DataFlowSuspendMessage.java | 0 .../dataflow/DataFlowTerminateMessage.java | 0 .../domain/registration/Authorization.java | 0 .../registration/AuthorizationProfile.java | 0 .../ControlPlaneRegistrationMessage.java | 0 .../DataPlaneRegistrationMessage.java | 0 .../Oauth2ClientCredentialsAuthorization.java | 0 .../eclipse/dataplane/logic/OnCompleted.java | 0 .../eclipse/dataplane/logic/OnPrepare.java | 0 .../org/eclipse/dataplane/logic/OnResume.java | 0 .../org/eclipse/dataplane/logic/OnStart.java | 0 .../eclipse/dataplane/logic/OnStarted.java | 0 .../eclipse/dataplane/logic/OnSuspend.java | 0 .../eclipse/dataplane/logic/OnTerminate.java | 0 .../DataPlaneRegistrationApiController.java | 0 .../port/DataPlaneSignalingApiController.java | 0 .../dataplane/port/ExceptionMapper.java | 0 .../exception/AuthorizationNotSupported.java | 0 .../exception/ControlPlaneNotRegistered.java | 0 .../DataFlowNotifyControlPlaneFailed.java | 0 .../exception/DataplaneNotRegistered.java | 0 .../IllegalAttributeTypeException.java | 0 .../port/exception/PersistenceException.java | 0 .../exception/ResourceNotFoundException.java | 0 .../port/store/ControlPlaneStore.java | 0 .../dataplane/port/store/DataFlowStore.java | 0 .../port/store/InMemoryControlPlaneStore.java | 0 .../port/store/InMemoryDataFlowStore.java | 0 .../eclipse/dataplane/port/store/Stores.java | 0 .../port/store/sql/AbstractSqlStore.java | 0 .../store/sql/PostgresControlPlaneStore.java | 0 .../port/store/sql/PostgresDataFlowStore.java | 0 .../resources/sql/control_plane_schema.sql | 0 .../main/resources/sql/data_flow_schema.sql | 0 .../store/ControlPlaneStoreTestBase.java | 0 .../store/DataFlowStoreTestBase.java | 0 .../store/InMemoryControlPlaneStoreTest.java | 0 .../store/InMemoryDataFlowStoreTest.java | 0 .../sql/PostgresControlPlaneStoreTest.java | 0 .../store/sql/PostgresDataFlowStoreTest.java | 0 gradle/libs.versions.toml | 45 +++++++++++++++++++ settings.gradle.kts | 11 +++++ tests/build.gradle.kts | 39 ++++++++++++++++ .../org/eclipse/dataplane/ControlPlane.java | 0 .../eclipse/dataplane/DataplaneClient.java | 0 .../org/eclipse/dataplane/DataplaneTest.java | 0 .../org/eclipse/dataplane/HttpServer.java | 0 .../org/eclipse/dataplane/MessageFactory.java | 0 .../api/ControlPlaneRegistrationApiTest.java | 0 .../authorization/TestAuthorization.java | 0 .../scenario/AuthorizationOauth2Test.java | 0 .../dataplane/scenario/AuthorizationTest.java | 0 .../dataplane/scenario/ConsumerPullTest.java | 0 .../dataplane/scenario/ProviderPushTest.java | 0 .../dataplane/scenario/StreamingPullTest.java | 0 .../dataplane/scenario/StreamingPushTest.java | 0 web-jersey/build.gradle.kts | 23 ++++++++++ 70 files changed, 159 insertions(+), 31 deletions(-) create mode 100644 core/build.gradle.kts rename {src => core/src}/main/java/org/eclipse/dataplane/Dataplane.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/DataAddress.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/Result.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/registration/Authorization.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnCompleted.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnPrepare.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnResume.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnStart.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnStarted.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnSuspend.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/logic/OnTerminate.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/ExceptionMapper.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/Stores.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java (100%) rename {src => core/src}/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java (100%) rename {src => core/src}/main/resources/sql/control_plane_schema.sql (100%) rename {src => core/src}/main/resources/sql/data_flow_schema.sql (100%) rename {src => core/src}/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java (100%) rename {src => core/src}/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java (100%) rename {src => core/src}/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java (100%) rename {src => core/src}/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java (100%) rename {src => core/src}/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java (100%) rename {src => core/src}/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java (100%) create mode 100644 gradle/libs.versions.toml create mode 100644 tests/build.gradle.kts rename {src => tests/src}/test/java/org/eclipse/dataplane/ControlPlane.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/DataplaneClient.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/DataplaneTest.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/HttpServer.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/MessageFactory.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java (100%) rename {src => tests/src}/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java (100%) create mode 100644 web-jersey/build.gradle.kts diff --git a/build.gradle.kts b/build.gradle.kts index a26929b..71155ab 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -10,37 +10,10 @@ plugins { group = "org.eclipse.dataplane-core" version = "0.0.11-SNAPSHOT" -repositories { - mavenCentral() -} - -dependencies { - implementation("com.fasterxml.jackson.core:jackson-databind:2.21.3") - implementation("com.nimbusds:nimbus-jose-jwt:10.9") - implementation("jakarta.ws.rs:jakarta.ws.rs-api:4.0.0") - - testImplementation(platform("org.junit:junit-bom:6.1.0")) - testImplementation("org.junit.jupiter:junit-jupiter") - testRuntimeOnly("org.junit.platform:junit-platform-launcher") - testImplementation("io.rest-assured:rest-assured:6.0.0") - testImplementation("org.assertj:assertj-core:3.27.7") - testImplementation("org.awaitility:awaitility:4.3.0") - testImplementation("org.eclipse.jetty.ee10:jetty-ee10-servlet:12.1.9") - testImplementation("org.eclipse.jetty:jetty-server:12.1.9") - val jerseyVersion = "4.0.2" - testImplementation("org.glassfish.jersey.containers:jersey-container-servlet:${jerseyVersion}") - testImplementation("org.glassfish.jersey.inject:jersey-hk2:${jerseyVersion}") - testImplementation("org.glassfish.jersey.media:jersey-media-json-jackson:${jerseyVersion}") - testImplementation("org.mockito:mockito-core:5.23.0") - testImplementation("org.slf4j:slf4j-simple:2.0.18") - testImplementation("org.wiremock:wiremock-jetty12:3.13.2") - testImplementation("org.testcontainers:testcontainers-junit-jupiter:2.0.5") - testImplementation("org.testcontainers:testcontainers-postgresql:2.0.5") - testImplementation("org.postgresql:postgresql:42.7.11") -} - -tasks.test { - useJUnitPlatform() +subprojects { + tasks.withType().configureEach { + useJUnitPlatform() + } } signing { diff --git a/core/build.gradle.kts b/core/build.gradle.kts new file mode 100644 index 0000000..6cf2ee2 --- /dev/null +++ b/core/build.gradle.kts @@ -0,0 +1,37 @@ +/* + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. + * + * This program and the accompanying materials are 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: + * Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. - initial API and implementation + * + */ + +plugins { + `java-library` +} + +dependencies { + implementation(libs.jackson.databind) + implementation(libs.nimbus.jwt) + implementation(libs.jakarta.rsApi) + + testImplementation(platform(libs.junit.bom)) + testImplementation(libs.junit.jupiter) + testRuntimeOnly(libs.junit.launcher) + testImplementation(libs.restAssured) + testImplementation(libs.assertJ) + testImplementation(libs.awaitility) + + testImplementation(libs.mockito.core) + testImplementation(libs.slf4j.simple) + + testImplementation(libs.testcontainers.junit.jupiter) + testImplementation(libs.testcontainers.postgresql) + testImplementation(libs.postgresql) +} diff --git a/src/main/java/org/eclipse/dataplane/Dataplane.java b/core/src/main/java/org/eclipse/dataplane/Dataplane.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/Dataplane.java rename to core/src/main/java/org/eclipse/dataplane/Dataplane.java diff --git a/src/main/java/org/eclipse/dataplane/domain/DataAddress.java b/core/src/main/java/org/eclipse/dataplane/domain/DataAddress.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/DataAddress.java rename to core/src/main/java/org/eclipse/dataplane/domain/DataAddress.java diff --git a/src/main/java/org/eclipse/dataplane/domain/Result.java b/core/src/main/java/org/eclipse/dataplane/domain/Result.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/Result.java rename to core/src/main/java/org/eclipse/dataplane/domain/Result.java diff --git a/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java b/core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java rename to core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java rename to core/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java diff --git a/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java rename to core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java diff --git a/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java rename to core/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java diff --git a/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java rename to core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java b/core/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnCompleted.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java b/core/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnPrepare.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnResume.java b/core/src/main/java/org/eclipse/dataplane/logic/OnResume.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnResume.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnResume.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnStart.java b/core/src/main/java/org/eclipse/dataplane/logic/OnStart.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnStart.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnStart.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnStarted.java b/core/src/main/java/org/eclipse/dataplane/logic/OnStarted.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnStarted.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnStarted.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java b/core/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnSuspend.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java diff --git a/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java b/core/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/logic/OnTerminate.java rename to core/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java diff --git a/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java b/core/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java rename to core/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java diff --git a/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java b/core/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java rename to core/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java diff --git a/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java b/core/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java rename to core/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java b/core/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java b/core/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java b/core/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java b/core/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java b/core/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java b/core/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java diff --git a/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java b/core/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java rename to core/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/Stores.java b/core/src/main/java/org/eclipse/dataplane/port/store/Stores.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/Stores.java rename to core/src/main/java/org/eclipse/dataplane/port/store/Stores.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java diff --git a/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java b/core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java similarity index 100% rename from src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java rename to core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java diff --git a/src/main/resources/sql/control_plane_schema.sql b/core/src/main/resources/sql/control_plane_schema.sql similarity index 100% rename from src/main/resources/sql/control_plane_schema.sql rename to core/src/main/resources/sql/control_plane_schema.sql diff --git a/src/main/resources/sql/data_flow_schema.sql b/core/src/main/resources/sql/data_flow_schema.sql similarity index 100% rename from src/main/resources/sql/data_flow_schema.sql rename to core/src/main/resources/sql/data_flow_schema.sql diff --git a/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java b/core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java rename to core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java diff --git a/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java b/core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java rename to core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java diff --git a/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java b/core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java rename to core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java diff --git a/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java b/core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java rename to core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java diff --git a/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java b/core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java rename to core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java diff --git a/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java b/core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java rename to core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 0000000..4ecf6cd --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,45 @@ +[metadata] +format.version = "1.1" + +[versions] +assertJ = "3.27.7" +awaitility = "4.3.0" +jackson = "2.21.3" +jakartaWsRs = "4.0.0" +jersey = "4.0.2" +jetty = "12.1.9" +junit = "6.1.0" +mockito = "5.23.0" +nimbusJoseJwt = "10.9" +postgresql = "42.7.11" +restAssured = "6.0.0" +slf4j = "2.0.18" +testcontainers = "2.0.5" +wiremock = "3.13.2" + +[libraries] +jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" } +nimbus-jwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbusJoseJwt" } +jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "jakartaWsRs" } +jersey-servlet = { module = "org.glassfish.jersey.containers:jersey-container-servlet", version.ref = "jersey" } +jersey-hk2 = { module = "org.glassfish.jersey.inject:jersey-hk2", version.ref = "jersey" } +jersey-jackson = { module = "org.glassfish.jersey.media:jersey-media-json-jackson", version.ref = "jersey" } + +slf4j-simple = { module = "org.slf4j:slf4j-simple", version.ref = "slf4j" } + +junit-bom = { module = "org.junit:junit-bom", version.ref = "junit" } +junit-jupiter = { module = "org.junit.jupiter:junit-jupiter", version.ref = "junit" } +junit-launcher = { module = "org.junit.platform:junit-platform-launcher", version.ref = "junit" } + +restAssured = { module = "io.rest-assured:rest-assured", version.ref = "restAssured" } +assertJ = { module = "org.assertj:assertj-core", version.ref = "assertJ" } +awaitility = { module = "org.awaitility:awaitility", version.ref = "awaitility" } +mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockito" } + +testcontainers-junit-jupiter = { module = "org.testcontainers:testcontainers-junit-jupiter", version.ref = "testcontainers" } +testcontainers-postgresql = { module = "org.testcontainers:testcontainers-postgresql", version.ref = "testcontainers" } +postgresql = { module = "org.postgresql:postgresql", version.ref = "postgresql" } + +jetty-ee10-servlet = { module = "org.eclipse.jetty.ee10:jetty-ee10-servlet", version.ref = "jetty" } +jetty-server = { module = "org.eclipse.jetty:jetty-server", version.ref = "jetty" } +wiremock-jetty12 = { module = "org.wiremock:wiremock-jetty12", version.ref = "wiremock" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 603f502..6523c4a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1 +1,12 @@ rootProject.name = "dataplane-sdk" + +dependencyResolutionManagement { + repositories { + mavenCentral() + } +} + +include(":core") +include(":web-jersey") + +include(":tests") diff --git a/tests/build.gradle.kts b/tests/build.gradle.kts new file mode 100644 index 0000000..a3493cf --- /dev/null +++ b/tests/build.gradle.kts @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. + * + * This program and the accompanying materials are 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: + * Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. - initial API and implementation + * + */ + +plugins { + `java-library` +} + +dependencies { + testImplementation(project(":core")) + testImplementation(project(":web-jersey")) + + testImplementation(libs.nimbus.jwt) + + testImplementation(platform(libs.junit.bom)) + testImplementation(libs.junit.jupiter) + testRuntimeOnly(libs.junit.launcher) + testImplementation(libs.restAssured) + testImplementation(libs.assertJ) + testImplementation(libs.awaitility) + + testImplementation(libs.jakarta.rsApi) + testImplementation(libs.jersey.servlet) + testImplementation(libs.jersey.hk2) + testImplementation(libs.jersey.jackson) + testImplementation(libs.jetty.ee10.servlet) + testImplementation(libs.jetty.server) + testImplementation(libs.wiremock.jetty12) +} diff --git a/src/test/java/org/eclipse/dataplane/ControlPlane.java b/tests/src/test/java/org/eclipse/dataplane/ControlPlane.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/ControlPlane.java rename to tests/src/test/java/org/eclipse/dataplane/ControlPlane.java diff --git a/src/test/java/org/eclipse/dataplane/DataplaneClient.java b/tests/src/test/java/org/eclipse/dataplane/DataplaneClient.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/DataplaneClient.java rename to tests/src/test/java/org/eclipse/dataplane/DataplaneClient.java diff --git a/src/test/java/org/eclipse/dataplane/DataplaneTest.java b/tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/DataplaneTest.java rename to tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java diff --git a/src/test/java/org/eclipse/dataplane/HttpServer.java b/tests/src/test/java/org/eclipse/dataplane/HttpServer.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/HttpServer.java rename to tests/src/test/java/org/eclipse/dataplane/HttpServer.java diff --git a/src/test/java/org/eclipse/dataplane/MessageFactory.java b/tests/src/test/java/org/eclipse/dataplane/MessageFactory.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/MessageFactory.java rename to tests/src/test/java/org/eclipse/dataplane/MessageFactory.java diff --git a/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java b/tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java rename to tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java diff --git a/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java b/tests/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java rename to tests/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java diff --git a/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java b/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java rename to tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java diff --git a/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java rename to tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java diff --git a/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java rename to tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java diff --git a/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java rename to tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java diff --git a/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java rename to tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java diff --git a/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java similarity index 100% rename from src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java rename to tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java diff --git a/web-jersey/build.gradle.kts b/web-jersey/build.gradle.kts new file mode 100644 index 0000000..fe94bc7 --- /dev/null +++ b/web-jersey/build.gradle.kts @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. + * + * This program and the accompanying materials are 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: + * Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. - initial API and implementation + * + */ + +plugins { + `java-library` +} + +dependencies { + implementation(libs.jersey.servlet) + implementation(libs.jersey.hk2) + implementation(libs.jersey.jackson) +} From b5416e8302ab3ad980df1002f7f354e0d4e86836 Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Wed, 3 Jun 2026 15:54:03 +0200 Subject: [PATCH 2/6] refactor: move controllers and tests --- core/build.gradle.kts | 1 - .../java/org/eclipse/dataplane/Dataplane.java | 47 ++++++++++----- .../Oauth2ClientCredentialsAuthorization.java | 6 +- .../port/exception/UnauthorizedException.java | 23 ++++++++ gradle/libs.versions.toml | 4 +- settings.gradle.kts | 2 +- tests/build.gradle.kts | 2 +- .../org/eclipse/dataplane/DataplaneTest.java | 58 +++++++++++++++---- .../api/ControlPlaneRegistrationApiTest.java | 3 +- .../scenario/AuthorizationOauth2Test.java | 3 +- .../dataplane/scenario/AuthorizationTest.java | 3 +- .../dataplane/scenario/ConsumerPullTest.java | 5 +- .../dataplane/scenario/ProviderPushTest.java | 5 +- .../dataplane/scenario/StreamingPullTest.java | 5 +- .../dataplane/scenario/StreamingPushTest.java | 5 +- .../build.gradle.kts | 6 +- .../DataPlaneRegistrationApiController.java | 0 .../port/DataPlaneSignalingApiController.java | 20 ++----- .../dataplane/port/ExceptionMapper.java | 6 ++ 19 files changed, 142 insertions(+), 62 deletions(-) create mode 100644 core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java rename {web-jersey => web-jakarta-ee}/build.gradle.kts (81%) rename {core => web-jakarta-ee}/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java (100%) rename {core => web-jakarta-ee}/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java (84%) rename {core => web-jakarta-ee}/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java (83%) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 6cf2ee2..85cd1cd 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -19,7 +19,6 @@ plugins { dependencies { implementation(libs.jackson.databind) implementation(libs.nimbus.jwt) - implementation(libs.jakarta.rsApi) testImplementation(platform(libs.junit.bom)) testImplementation(libs.junit.jupiter) diff --git a/core/src/main/java/org/eclipse/dataplane/Dataplane.java b/core/src/main/java/org/eclipse/dataplane/Dataplane.java index 94a3185..b516dbf 100644 --- a/core/src/main/java/org/eclipse/dataplane/Dataplane.java +++ b/core/src/main/java/org/eclipse/dataplane/Dataplane.java @@ -40,13 +40,12 @@ import org.eclipse.dataplane.logic.OnStarted; import org.eclipse.dataplane.logic.OnSuspend; import org.eclipse.dataplane.logic.OnTerminate; -import org.eclipse.dataplane.port.DataPlaneRegistrationApiController; -import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.eclipse.dataplane.port.exception.AuthorizationNotSupported; import org.eclipse.dataplane.port.exception.ControlPlaneNotRegistered; import org.eclipse.dataplane.port.exception.DataFlowNotifyControlPlaneFailed; import org.eclipse.dataplane.port.exception.DataplaneNotRegistered; import org.eclipse.dataplane.port.exception.ResourceNotFoundException; +import org.eclipse.dataplane.port.exception.UnauthorizedException; import org.eclipse.dataplane.port.store.ControlPlaneStore; import org.eclipse.dataplane.port.store.DataFlowStore; import org.eclipse.dataplane.port.store.InMemoryControlPlaneStore; @@ -64,11 +63,12 @@ import java.util.UUID; import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; -import static jakarta.ws.rs.core.HttpHeaders.AUTHORIZATION; import static java.util.Collections.emptyMap; public class Dataplane { + private static final String AUTHORIZATION_HEADER = "Authorization"; + private final ObjectMapper objectMapper = new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false); private DataFlowStore dataFlowStore = new InMemoryDataFlowStore(objectMapper); private ControlPlaneStore controlPlaneStore = new InMemoryControlPlaneStore(objectMapper); @@ -92,12 +92,8 @@ public static Builder newInstance() { return new Builder(); } - public DataPlaneSignalingApiController controller() { - return new DataPlaneSignalingApiController(this, authorizations); - } - - public DataPlaneRegistrationApiController registrationController() { - return new DataPlaneRegistrationApiController(this); + public Map authorizations() { + return authorizations; } public Result getById(String dataFlowId) { @@ -120,7 +116,13 @@ private Result checkControlPlane(String controlplaneId) { return Result.failure(new ControlPlaneNotRegistered(controlplaneId)); } - public Result prepare(String controlplaneId, DataFlowPrepareMessage message) { + public Result prepare(String authorization, DataFlowPrepareMessage message) { + var controlPlaneIdResult = extractControlPlaneId(authorization); + if (controlPlaneIdResult.failed()) { + return Result.failure(controlPlaneIdResult.getException()); + } + var controlPlaneId = controlPlaneIdResult.getContent(); + var initialDataFlow = DataFlow.newInstance() .id(message.processId()) .state(DataFlow.State.INITIATING) @@ -133,11 +135,11 @@ public Result prepare(String controlplaneId, DataFlowPrep .participantId(message.participantId()) .counterPartyId(message.counterPartyId()) .dataspaceContext(message.dataspaceContext()) - .controlplaneId(controlplaneId) + .controlplaneId(controlPlaneId) .type(DataFlow.Type.CONSUMER) .build(); - return checkControlPlane(controlplaneId) + return checkControlPlane(controlPlaneId) .compose(v -> onPrepare.action(initialDataFlow)) .compose(dataFlow -> { if (dataFlow.isInitiating()) { @@ -156,7 +158,13 @@ public Result prepare(String controlplaneId, DataFlowPrep } - public Result start(String controlplaneId, DataFlowStartMessage message) { + public Result start(String authorization, DataFlowStartMessage message) { + var controlPlaneIdResult = extractControlPlaneId(authorization); + if (controlPlaneIdResult.failed()) { + return Result.failure(controlPlaneIdResult.getException()); + } + var controlPlaneId = controlPlaneIdResult.getContent(); + var initialDataFlow = DataFlow.newInstance() .id(message.processId()) .state(DataFlow.State.INITIATING) @@ -168,11 +176,11 @@ public Result start(String controlplaneId, DataFlowStartM .participantId(message.participantId()) .counterPartyId(message.counterPartyId()) .dataspaceContext(message.dataspaceContext()) - .controlplaneId(controlplaneId) + .controlplaneId(controlPlaneId) .type(DataFlow.Type.PROVIDER) .build(); - return checkControlPlane(controlplaneId) + return checkControlPlane(controlPlaneId) .compose(v -> onStart.action(initialDataFlow)) .compose(dataFlow -> { if (dataFlow.isInitiating()) { @@ -372,7 +380,7 @@ private Result notifyControlPlane(String action, DataFlow dataFlow, Object } return Result.failure(new ResourceNotFoundException("ControlPlane has no authorization")); }) - .onSuccess(authorizationHeader -> requestBuilder.header(AUTHORIZATION, authorizationHeader)); + .onSuccess(authorizationHeader -> requestBuilder.header(AUTHORIZATION_HEADER, authorizationHeader)); return httpClient.send(requestBuilder.build(), HttpResponse.BodyHandlers.discarding()); }) @@ -394,6 +402,13 @@ private Result toJson(Object message) { } } + private Result extractControlPlaneId(String authorizationHeader) { + return authorizations.values().stream() + .map(authorization -> authorization.extractCallerId(authorizationHeader)) + .filter(Result::succeeded).findFirst() + .orElseGet(() -> Result.failure(new UnauthorizedException("Authorization method not recognized"))); + } + public ControlPlaneStore controlPlaneStore() { return controlPlaneStore; } diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java index cade64b..6ea891c 100644 --- a/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java +++ b/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java @@ -27,10 +27,10 @@ import java.util.Map; import java.util.stream.Collectors; -import static jakarta.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED; - public class Oauth2ClientCredentialsAuthorization implements Authorization { + private static final String MEDIA_TYPE_APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded"; + private final HttpClient httpClient = HttpClient.newHttpClient(); private final ObjectMapper objectMapper = new ObjectMapper(); @@ -57,7 +57,7 @@ public Result authorizationHeader(AuthorizationProfile profile) { var request = HttpRequest.newBuilder(URI.create(tokenEndpoint)) .POST(HttpRequest.BodyPublishers.ofString(form)) - .header("Content-Type", APPLICATION_FORM_URLENCODED) + .header("Content-Type", MEDIA_TYPE_APPLICATION_FORM_URLENCODED) .build(); try { diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java b/core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java new file mode 100644 index 0000000..bd2af1e --- /dev/null +++ b/core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2026 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. + * + * This program and the accompanying materials are 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: + * Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. - initial API and implementation + * + */ + +package org.eclipse.dataplane.port.exception; + +public class UnauthorizedException extends RuntimeException { + + public UnauthorizedException(String message) { + super(message); + } + +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 4ecf6cd..fa2c3d6 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ format.version = "1.1" assertJ = "3.27.7" awaitility = "4.3.0" jackson = "2.21.3" -jakartaWsRs = "4.0.0" +jakarta = "4.0.0" jersey = "4.0.2" jetty = "12.1.9" junit = "6.1.0" @@ -20,7 +20,7 @@ wiremock = "3.13.2" [libraries] jackson-databind = { module = "com.fasterxml.jackson.core:jackson-databind", version.ref = "jackson" } nimbus-jwt = { module = "com.nimbusds:nimbus-jose-jwt", version.ref = "nimbusJoseJwt" } -jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "jakartaWsRs" } +jakarta-rsApi = { module = "jakarta.ws.rs:jakarta.ws.rs-api", version.ref = "jakarta" } jersey-servlet = { module = "org.glassfish.jersey.containers:jersey-container-servlet", version.ref = "jersey" } jersey-hk2 = { module = "org.glassfish.jersey.inject:jersey-hk2", version.ref = "jersey" } jersey-jackson = { module = "org.glassfish.jersey.media:jersey-media-json-jackson", version.ref = "jersey" } diff --git a/settings.gradle.kts b/settings.gradle.kts index 6523c4a..5cc034c 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,6 +7,6 @@ dependencyResolutionManagement { } include(":core") -include(":web-jersey") +include(":web-jakarta-ee") include(":tests") diff --git a/tests/build.gradle.kts b/tests/build.gradle.kts index a3493cf..98755ba 100644 --- a/tests/build.gradle.kts +++ b/tests/build.gradle.kts @@ -18,7 +18,7 @@ plugins { dependencies { testImplementation(project(":core")) - testImplementation(project(":web-jersey")) + testImplementation(project(":web-jakarta-ee")) testImplementation(libs.nimbus.jwt) diff --git a/tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java b/tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java index 8a288e0..99c71c0 100644 --- a/tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java @@ -18,6 +18,8 @@ import com.github.tomakehurst.wiremock.WireMockServer; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.dataflow.DataFlowPrepareMessage; +import org.eclipse.dataplane.domain.registration.Authorization; +import org.eclipse.dataplane.domain.registration.AuthorizationProfile; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; import org.eclipse.dataplane.port.exception.DataFlowNotifyControlPlaneFailed; import org.eclipse.dataplane.port.exception.DataplaneNotRegistered; @@ -64,7 +66,9 @@ class NotifyCompleted { @Test void shouldFail_whenDataFlowDoesNotExist() { - var dataplane = Dataplane.newInstance().build(); + var dataplane = Dataplane.newInstance() + .registerAuthorization(authorization()) + .build(); var result = dataplane.notifyCompleted("dataFlowId"); @@ -74,9 +78,12 @@ void shouldFail_whenDataFlowDoesNotExist() { @Test void shouldReturnFailedFuture_whenControlPlaneIsNotAvailable() { - var dataplane = Dataplane.newInstance().onPrepare(Result::success).build(); + var dataplane = Dataplane.newInstance() + .registerAuthorization(authorization()) + .onPrepare(Result::success) + .build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("controlplaneId", createPrepareMessage()); + dataplane.prepare("auth", createPrepareMessage()); controlPlane.stop(); var result = dataplane.notifyCompleted("dataFlowId"); @@ -89,9 +96,12 @@ void shouldReturnFailedFuture_whenControlPlaneIsNotAvailable() { void shouldReturnFailedFuture_whenControlPlaneRespondWithError() { controlPlane.stubFor(post(anyUrl()).willReturn(aResponse().withStatus(500))); - var dataplane = Dataplane.newInstance().onPrepare(Result::success).build(); + var dataplane = Dataplane.newInstance() + .registerAuthorization(authorization()) + .onPrepare(Result::success) + .build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("controlplaneId", createPrepareMessage()); + dataplane.prepare("auth", createPrepareMessage()); var result = dataplane.notifyCompleted("dataFlowId"); @@ -103,9 +113,12 @@ void shouldReturnFailedFuture_whenControlPlaneRespondWithError() { @Test void shouldTransitionToCompleted_whenControlPlaneRespondCorrectly() { controlPlane.stubFor(post(anyUrl()).willReturn(aResponse().withStatus(200))); - var dataplane = Dataplane.newInstance().onPrepare(Result::success).build(); + var dataplane = Dataplane.newInstance() + .registerAuthorization(authorization()) + .onPrepare(Result::success) + .build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("controlplaneId", createPrepareMessage()); + dataplane.prepare("auth", createPrepareMessage()); var result = dataplane.notifyCompleted("dataFlowId"); @@ -118,7 +131,9 @@ void shouldTransitionToCompleted_whenControlPlaneRespondCorrectly() { class NotifyErrored { @Test void shouldFail_whenDataFlowDoesNotExist() { - var dataplane = Dataplane.newInstance().build(); + var dataplane = Dataplane.newInstance() + .registerAuthorization(authorization()) + .build(); var result = dataplane.notifyErrored("dataFlowId", new RuntimeException("some-error")); @@ -129,9 +144,13 @@ void shouldFail_whenDataFlowDoesNotExist() { @Test void shouldSendDataFlowStatusMessage_whenDataFlowIsErrored() { controlPlane.stubFor(post(anyUrl()).willReturn(aResponse().withStatus(200))); - var dataplane = Dataplane.newInstance().id("dataplane-id").onPrepare(Result::success).build(); + var dataplane = Dataplane.newInstance() + .id("dataplane-id") + .registerAuthorization(authorization()) + .onPrepare(Result::success) + .build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("controlplaneId", createPrepareMessage()); + dataplane.prepare("auth", createPrepareMessage()); var result = dataplane.notifyErrored("dataFlowId", new RuntimeException("some-error")); @@ -196,4 +215,23 @@ void shouldFail_whenStatusIsNot200() { private DataFlowPrepareMessage createPrepareMessage() { return MessageFactory.createPrepareMessage("dataFlowId", URI.create(controlPlane.baseUrl()), "Something-PUSH"); } + + private Authorization authorization() { + return new Authorization() { + @Override + public String type() { + return "test"; + } + + @Override + public Result authorizationHeader(AuthorizationProfile profile) { + return Result.success("Bearer 1234"); + } + + @Override + public Result extractCallerId(String authorizationHeader) { + return Result.success("controlplaneId"); + } + }; + } } diff --git a/tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java b/tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java index 0c0086a..b9617c6 100644 --- a/tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java @@ -20,6 +20,7 @@ import org.eclipse.dataplane.authorization.TestAuthorization; import org.eclipse.dataplane.domain.registration.AuthorizationProfile; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; +import org.eclipse.dataplane.port.DataPlaneRegistrationApiController; import org.eclipse.dataplane.port.exception.ResourceNotFoundException; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -45,7 +46,7 @@ class ControlPlaneRegistrationApiTest { void setUp() { httpServer.start(); - httpServer.deploy("/runtime/data-plane", sdk.registrationController()); + httpServer.deploy("/runtime/data-plane", new DataPlaneRegistrationApiController(sdk)); } @AfterEach diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java b/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java index 6920c0c..2c3857a 100644 --- a/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java +++ b/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java @@ -35,6 +35,7 @@ import org.eclipse.dataplane.domain.registration.AuthorizationProfile; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; import org.eclipse.dataplane.domain.registration.Oauth2ClientCredentialsAuthorization; +import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -76,7 +77,7 @@ void setUp() { controlPlane.initialize(httpServer, "/data-plane", "/data-plane"); - httpServer.deploy("/data-plane", dataPlane.controller()); + httpServer.deploy("/data-plane", new DataPlaneSignalingApiController(dataPlane)); httpServer.deploy("/oauth2", new Oauth2TokenController(clientId, clientSecret)); } diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java index fa2df60..8a1e60b 100644 --- a/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java @@ -21,6 +21,7 @@ import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.dataflow.DataFlowStatusMessage; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; +import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.eclipse.dataplane.port.exception.DataFlowNotifyControlPlaneFailed; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -54,7 +55,7 @@ void setUp() { controlPlane.initialize(httpServer, "/data-plane", "/data-plane"); - httpServer.deploy("/data-plane", dataPlane.controller()); + httpServer.deploy("/data-plane", new DataPlaneSignalingApiController(dataPlane)); } @AfterEach diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java index ee7a929..92f9972 100644 --- a/tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java @@ -25,6 +25,7 @@ import org.eclipse.dataplane.domain.dataflow.DataFlowStatusMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowStatusResponseMessage; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; +import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -138,7 +139,7 @@ private class ConsumerDataPlane { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } private Result onStarted(DataFlow dataFlow) { @@ -170,7 +171,7 @@ private class ProviderDataPlane { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } public void completeStartup(String dataFlowId) { diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java index 27c4629..744b6f4 100644 --- a/tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java @@ -24,6 +24,7 @@ import org.eclipse.dataplane.domain.dataflow.DataFlowStatusMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowStatusResponseMessage; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; +import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.jspecify.annotations.NonNull; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; @@ -184,7 +185,7 @@ private Result onStart(DataFlow dataFlow) { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } } @@ -246,7 +247,7 @@ private Result onCompleted(DataFlow dataFlow) { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } } } diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java index 6926c8b..6498834 100644 --- a/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java @@ -28,6 +28,7 @@ import org.eclipse.dataplane.domain.dataflow.DataFlowSuspendMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowTerminateMessage; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; +import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -175,7 +176,7 @@ private static class ConsumerDataPlane { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } private Result onStarted(DataFlow dataFlow) { @@ -234,7 +235,7 @@ private static class ProviderDataPlane { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } private Result onStart(DataFlow dataFlow) { diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java b/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java index 8a0b97a..b48f016 100644 --- a/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java +++ b/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java @@ -26,6 +26,7 @@ import org.eclipse.dataplane.domain.dataflow.DataFlowStatusMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowSuspendMessage; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; +import org.eclipse.dataplane.port.DataPlaneSignalingApiController; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -180,7 +181,7 @@ private Result stopFlow(DataFlow dataFlow) { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } } @@ -230,7 +231,7 @@ private Result onCompleted(DataFlow dataFlow) { } public Object controller() { - return sdk.controller(); + return new DataPlaneSignalingApiController(sdk); } public void assertDataIsFlowing(String consumerProcessId) { diff --git a/web-jersey/build.gradle.kts b/web-jakarta-ee/build.gradle.kts similarity index 81% rename from web-jersey/build.gradle.kts rename to web-jakarta-ee/build.gradle.kts index fe94bc7..0fad938 100644 --- a/web-jersey/build.gradle.kts +++ b/web-jakarta-ee/build.gradle.kts @@ -17,7 +17,7 @@ plugins { } dependencies { - implementation(libs.jersey.servlet) - implementation(libs.jersey.hk2) - implementation(libs.jersey.jackson) + implementation(project(":core")) + + implementation(libs.jakarta.rsApi) } diff --git a/core/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java rename to web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java similarity index 84% rename from core/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java rename to web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java index 950f497..a1cbd75 100644 --- a/core/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java +++ b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java @@ -35,9 +35,6 @@ import org.eclipse.dataplane.domain.dataflow.DataFlowStatusResponseMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowSuspendMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowTerminateMessage; -import org.eclipse.dataplane.domain.registration.Authorization; - -import java.util.Map; import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON; import static jakarta.ws.rs.core.MediaType.WILDCARD; @@ -48,17 +45,15 @@ public class DataPlaneSignalingApiController { private final Dataplane dataplane; - private final Map authorizations; - public DataPlaneSignalingApiController(Dataplane dataplane, Map authorizations) { + public DataPlaneSignalingApiController(Dataplane dataplane) { this.dataplane = dataplane; - this.authorizations = authorizations; } @POST @Path("/prepare") public Response prepare(DataFlowPrepareMessage message, @Context ContainerRequestContext requestContext) { - var response = extractControlplaneId(requestContext) + var response = extractAuthHeader(requestContext) .compose(controlplaneId -> dataplane.prepare(controlplaneId, message)) .orElseThrow(ExceptionMapper.MAP_TO_WSRS); @@ -71,7 +66,7 @@ public Response prepare(DataFlowPrepareMessage message, @Context ContainerReques @POST @Path("/start") public Response start(DataFlowStartMessage message, @Context ContainerRequestContext requestContext) { - var response = extractControlplaneId(requestContext) + var response = extractAuthHeader(requestContext) .compose(controlplaneId -> dataplane.start(controlplaneId, message)) .orElseThrow(ExceptionMapper.MAP_TO_WSRS); @@ -124,15 +119,12 @@ public DataFlowStatusResponseMessage status(@PathParam("flowId") String flowId) return dataplane.status(flowId).orElseThrow(ExceptionMapper.MAP_TO_WSRS); } - private Result extractControlplaneId(ContainerRequestContext requestContext) { + private Result extractAuthHeader(ContainerRequestContext requestContext) { var authorizationHeader = requestContext.getHeaderString("Authorization"); if (authorizationHeader == null) { return Result.failure(new NotAuthorizedException("Authorization header missing")); } - return authorizations.values().stream() - .map(authorization -> authorization.extractCallerId(authorizationHeader)) - .filter(Result::succeeded).findFirst() - .orElseGet(() -> Result.failure(new NotAuthorizedException("Authorization method not recognized"))); - } + return Result.success(authorizationHeader); + } } diff --git a/core/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java similarity index 83% rename from core/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java rename to web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java index 0e73427..07256bc 100644 --- a/core/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java +++ b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java @@ -9,6 +9,7 @@ * * Contributors: * Think-it GmbH - initial API and implementation + * Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. - move Jakarta to separate module * */ @@ -21,6 +22,7 @@ import org.eclipse.dataplane.port.exception.AuthorizationNotSupported; import org.eclipse.dataplane.port.exception.ControlPlaneNotRegistered; import org.eclipse.dataplane.port.exception.ResourceNotFoundException; +import org.eclipse.dataplane.port.exception.UnauthorizedException; import java.util.function.Function; @@ -43,6 +45,10 @@ public interface ExceptionMapper { return new BadRequestException(exception); } + if (exception instanceof UnauthorizedException unauthorized) { + return new NotAuthorizedException(unauthorized); + } + return new WebApplicationException("unexpected internal server error"); }; From 6fa0713a1faa4956ac9b8042bf53f34914252c20 Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Mon, 8 Jun 2026 09:49:28 +0200 Subject: [PATCH 3/6] chore: re-add constants from Jakarta --- core/build.gradle.kts | 2 ++ core/src/main/java/org/eclipse/dataplane/Dataplane.java | 5 ++--- .../registration/Oauth2ClientCredentialsAuthorization.java | 6 +++--- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 85cd1cd..d27ac03 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -20,6 +20,8 @@ dependencies { implementation(libs.jackson.databind) implementation(libs.nimbus.jwt) + compileOnly(libs.jakarta.rsApi) + testImplementation(platform(libs.junit.bom)) testImplementation(libs.junit.jupiter) testRuntimeOnly(libs.junit.launcher) diff --git a/core/src/main/java/org/eclipse/dataplane/Dataplane.java b/core/src/main/java/org/eclipse/dataplane/Dataplane.java index b516dbf..50d6843 100644 --- a/core/src/main/java/org/eclipse/dataplane/Dataplane.java +++ b/core/src/main/java/org/eclipse/dataplane/Dataplane.java @@ -63,12 +63,11 @@ import java.util.UUID; import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES; +import static jakarta.ws.rs.core.HttpHeaders.AUTHORIZATION; import static java.util.Collections.emptyMap; public class Dataplane { - private static final String AUTHORIZATION_HEADER = "Authorization"; - private final ObjectMapper objectMapper = new ObjectMapper().configure(FAIL_ON_UNKNOWN_PROPERTIES, false); private DataFlowStore dataFlowStore = new InMemoryDataFlowStore(objectMapper); private ControlPlaneStore controlPlaneStore = new InMemoryControlPlaneStore(objectMapper); @@ -380,7 +379,7 @@ private Result notifyControlPlane(String action, DataFlow dataFlow, Object } return Result.failure(new ResourceNotFoundException("ControlPlane has no authorization")); }) - .onSuccess(authorizationHeader -> requestBuilder.header(AUTHORIZATION_HEADER, authorizationHeader)); + .onSuccess(authorizationHeader -> requestBuilder.header(AUTHORIZATION, authorizationHeader)); return httpClient.send(requestBuilder.build(), HttpResponse.BodyHandlers.discarding()); }) diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java b/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java index 6ea891c..cade64b 100644 --- a/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java +++ b/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java @@ -27,9 +27,9 @@ import java.util.Map; import java.util.stream.Collectors; -public class Oauth2ClientCredentialsAuthorization implements Authorization { +import static jakarta.ws.rs.core.MediaType.APPLICATION_FORM_URLENCODED; - private static final String MEDIA_TYPE_APPLICATION_FORM_URLENCODED = "application/x-www-form-urlencoded"; +public class Oauth2ClientCredentialsAuthorization implements Authorization { private final HttpClient httpClient = HttpClient.newHttpClient(); private final ObjectMapper objectMapper = new ObjectMapper(); @@ -57,7 +57,7 @@ public Result authorizationHeader(AuthorizationProfile profile) { var request = HttpRequest.newBuilder(URI.create(tokenEndpoint)) .POST(HttpRequest.BodyPublishers.ofString(form)) - .header("Content-Type", MEDIA_TYPE_APPLICATION_FORM_URLENCODED) + .header("Content-Type", APPLICATION_FORM_URLENCODED) .build(); try { From 0ad90597c666fd206496f5eb1d6b66fc3ee38c5e Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Mon, 8 Jun 2026 11:30:27 +0200 Subject: [PATCH 4/6] chore: move config to subprojects --- build.gradle.kts | 54 ++++++++++--------- {tests => e2e-tests}/build.gradle.kts | 0 .../org/eclipse/dataplane/ControlPlane.java | 0 .../eclipse/dataplane/DataplaneClient.java | 0 .../org/eclipse/dataplane/DataplaneTest.java | 0 .../org/eclipse/dataplane/HttpServer.java | 0 .../org/eclipse/dataplane/MessageFactory.java | 0 .../api/ControlPlaneRegistrationApiTest.java | 0 .../authorization/TestAuthorization.java | 0 .../scenario/AuthorizationOauth2Test.java | 0 .../dataplane/scenario/AuthorizationTest.java | 0 .../dataplane/scenario/ConsumerPullTest.java | 0 .../dataplane/scenario/ProviderPushTest.java | 0 .../dataplane/scenario/StreamingPullTest.java | 0 .../dataplane/scenario/StreamingPushTest.java | 0 settings.gradle.kts | 2 +- 16 files changed, 30 insertions(+), 26 deletions(-) rename {tests => e2e-tests}/build.gradle.kts (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/ControlPlane.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/DataplaneClient.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/DataplaneTest.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/HttpServer.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/MessageFactory.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java (100%) rename {tests => e2e-tests}/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 71155ab..ad72c9c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,40 +11,44 @@ group = "org.eclipse.dataplane-core" version = "0.0.11-SNAPSHOT" subprojects { + apply(plugin = "signing") + apply(plugin = "maven-publish") + apply(plugin = "com.vanniktech.maven.publish") + tasks.withType().configureEach { useJUnitPlatform() } -} -signing { - useGpgCmd() - sign(publishing.publications) -} + signing { + useGpgCmd() + sign(publishing.publications) + } -mavenPublishing { - publishToMavenCentral(true) + mavenPublishing { + publishToMavenCentral(true) - signAllPublications() + signAllPublications() - pom { - name.set(project.name) - description.set("Dataplane Signaling SDK library") - url.set("https://github.com/eclipse-dataplane-core/dataplane-sdk-java") - licenses { - license { - name.set("The Apache License, Version 2.0") - url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + pom { + name.set(project.name) + description.set("Dataplane Signaling SDK library") + url.set("https://github.com/eclipse-dataplane-core/dataplane-sdk-java") + licenses { + license { + name.set("The Apache License, Version 2.0") + url.set("http://www.apache.org/licenses/LICENSE-2.0.txt") + } } - } - developers { - developer { - name = "Dataplane Core Dev" - email = "dataplane-core-dev@eclipse.org" + developers { + developer { + name = "Dataplane Core Dev" + email = "dataplane-core-dev@eclipse.org" + } + } + scm { + url.set("https://github.com/eclipse-dataplane-core/dataplane-sdk-java") + connection.set("scm:git:git@github.com:eclipse-dataplane-core/dataplane-sdk-java.git") } - } - scm { - url.set("https://github.com/eclipse-dataplane-core/dataplane-sdk-java") - connection.set("scm:git:git@github.com:eclipse-dataplane-core/dataplane-sdk-java.git") } } } diff --git a/tests/build.gradle.kts b/e2e-tests/build.gradle.kts similarity index 100% rename from tests/build.gradle.kts rename to e2e-tests/build.gradle.kts diff --git a/tests/src/test/java/org/eclipse/dataplane/ControlPlane.java b/e2e-tests/src/test/java/org/eclipse/dataplane/ControlPlane.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/ControlPlane.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/ControlPlane.java diff --git a/tests/src/test/java/org/eclipse/dataplane/DataplaneClient.java b/e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneClient.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/DataplaneClient.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneClient.java diff --git a/tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java diff --git a/tests/src/test/java/org/eclipse/dataplane/HttpServer.java b/e2e-tests/src/test/java/org/eclipse/dataplane/HttpServer.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/HttpServer.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/HttpServer.java diff --git a/tests/src/test/java/org/eclipse/dataplane/MessageFactory.java b/e2e-tests/src/test/java/org/eclipse/dataplane/MessageFactory.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/MessageFactory.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/MessageFactory.java diff --git a/tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/api/ControlPlaneRegistrationApiTest.java diff --git a/tests/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java b/e2e-tests/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/authorization/TestAuthorization.java diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java b/e2e-tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationOauth2Test.java diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/scenario/AuthorizationTest.java diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/scenario/ConsumerPullTest.java diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/scenario/ProviderPushTest.java diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPullTest.java diff --git a/tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java similarity index 100% rename from tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java rename to e2e-tests/src/test/java/org/eclipse/dataplane/scenario/StreamingPushTest.java diff --git a/settings.gradle.kts b/settings.gradle.kts index 5cc034c..da9a46e 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -9,4 +9,4 @@ dependencyResolutionManagement { include(":core") include(":web-jakarta-ee") -include(":tests") +include(":e2e-tests") From e5b08a861760c50ebfc438cb986d26351eddb645 Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Mon, 8 Jun 2026 14:24:34 +0200 Subject: [PATCH 5/6] refactor: move auth to dataplane --- .../java/org/eclipse/dataplane/Dataplane.java | 42 +++++--------- .../org/eclipse/dataplane/DataplaneTest.java | 58 ++++--------------- .../port/DataPlaneSignalingApiController.java | 11 ++-- 3 files changed, 29 insertions(+), 82 deletions(-) diff --git a/core/src/main/java/org/eclipse/dataplane/Dataplane.java b/core/src/main/java/org/eclipse/dataplane/Dataplane.java index 50d6843..10c01e2 100644 --- a/core/src/main/java/org/eclipse/dataplane/Dataplane.java +++ b/core/src/main/java/org/eclipse/dataplane/Dataplane.java @@ -91,10 +91,6 @@ public static Builder newInstance() { return new Builder(); } - public Map authorizations() { - return authorizations; - } - public Result getById(String dataFlowId) { return dataFlowStore.findById(dataFlowId); } @@ -115,13 +111,7 @@ private Result checkControlPlane(String controlplaneId) { return Result.failure(new ControlPlaneNotRegistered(controlplaneId)); } - public Result prepare(String authorization, DataFlowPrepareMessage message) { - var controlPlaneIdResult = extractControlPlaneId(authorization); - if (controlPlaneIdResult.failed()) { - return Result.failure(controlPlaneIdResult.getException()); - } - var controlPlaneId = controlPlaneIdResult.getContent(); - + public Result prepare(String controlplaneId, DataFlowPrepareMessage message) { var initialDataFlow = DataFlow.newInstance() .id(message.processId()) .state(DataFlow.State.INITIATING) @@ -134,11 +124,11 @@ public Result prepare(String authorization, DataFlowPrepa .participantId(message.participantId()) .counterPartyId(message.counterPartyId()) .dataspaceContext(message.dataspaceContext()) - .controlplaneId(controlPlaneId) + .controlplaneId(controlplaneId) .type(DataFlow.Type.CONSUMER) .build(); - return checkControlPlane(controlPlaneId) + return checkControlPlane(controlplaneId) .compose(v -> onPrepare.action(initialDataFlow)) .compose(dataFlow -> { if (dataFlow.isInitiating()) { @@ -157,13 +147,7 @@ public Result prepare(String authorization, DataFlowPrepa } - public Result start(String authorization, DataFlowStartMessage message) { - var controlPlaneIdResult = extractControlPlaneId(authorization); - if (controlPlaneIdResult.failed()) { - return Result.failure(controlPlaneIdResult.getException()); - } - var controlPlaneId = controlPlaneIdResult.getContent(); - + public Result start(String controlplaneId, DataFlowStartMessage message) { var initialDataFlow = DataFlow.newInstance() .id(message.processId()) .state(DataFlow.State.INITIATING) @@ -175,11 +159,11 @@ public Result start(String authorization, DataFlowStartMe .participantId(message.participantId()) .counterPartyId(message.counterPartyId()) .dataspaceContext(message.dataspaceContext()) - .controlplaneId(controlPlaneId) + .controlplaneId(controlplaneId) .type(DataFlow.Type.PROVIDER) .build(); - return checkControlPlane(controlPlaneId) + return checkControlPlane(controlplaneId) .compose(v -> onStart.action(initialDataFlow)) .compose(dataFlow -> { if (dataFlow.isInitiating()) { @@ -330,6 +314,13 @@ public Result completed(String flowId) { }); } + public Result extractControlplaneId(String authorizationHeader) { + return authorizations.values().stream() + .map(authorization -> authorization.extractCallerId(authorizationHeader)) + .filter(Result::succeeded).findFirst() + .orElseGet(() -> Result.failure(new UnauthorizedException("Authorization method not recognized"))); + } + public Result registerOn(String controlPlaneEndpoint) { var message = new DataPlaneRegistrationMessage(id, endpoint, transferTypes, labels); @@ -401,13 +392,6 @@ private Result toJson(Object message) { } } - private Result extractControlPlaneId(String authorizationHeader) { - return authorizations.values().stream() - .map(authorization -> authorization.extractCallerId(authorizationHeader)) - .filter(Result::succeeded).findFirst() - .orElseGet(() -> Result.failure(new UnauthorizedException("Authorization method not recognized"))); - } - public ControlPlaneStore controlPlaneStore() { return controlPlaneStore; } diff --git a/e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java b/e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java index 99c71c0..8a288e0 100644 --- a/e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java +++ b/e2e-tests/src/test/java/org/eclipse/dataplane/DataplaneTest.java @@ -18,8 +18,6 @@ import com.github.tomakehurst.wiremock.WireMockServer; import org.eclipse.dataplane.domain.Result; import org.eclipse.dataplane.domain.dataflow.DataFlowPrepareMessage; -import org.eclipse.dataplane.domain.registration.Authorization; -import org.eclipse.dataplane.domain.registration.AuthorizationProfile; import org.eclipse.dataplane.domain.registration.ControlPlaneRegistrationMessage; import org.eclipse.dataplane.port.exception.DataFlowNotifyControlPlaneFailed; import org.eclipse.dataplane.port.exception.DataplaneNotRegistered; @@ -66,9 +64,7 @@ class NotifyCompleted { @Test void shouldFail_whenDataFlowDoesNotExist() { - var dataplane = Dataplane.newInstance() - .registerAuthorization(authorization()) - .build(); + var dataplane = Dataplane.newInstance().build(); var result = dataplane.notifyCompleted("dataFlowId"); @@ -78,12 +74,9 @@ void shouldFail_whenDataFlowDoesNotExist() { @Test void shouldReturnFailedFuture_whenControlPlaneIsNotAvailable() { - var dataplane = Dataplane.newInstance() - .registerAuthorization(authorization()) - .onPrepare(Result::success) - .build(); + var dataplane = Dataplane.newInstance().onPrepare(Result::success).build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("auth", createPrepareMessage()); + dataplane.prepare("controlplaneId", createPrepareMessage()); controlPlane.stop(); var result = dataplane.notifyCompleted("dataFlowId"); @@ -96,12 +89,9 @@ void shouldReturnFailedFuture_whenControlPlaneIsNotAvailable() { void shouldReturnFailedFuture_whenControlPlaneRespondWithError() { controlPlane.stubFor(post(anyUrl()).willReturn(aResponse().withStatus(500))); - var dataplane = Dataplane.newInstance() - .registerAuthorization(authorization()) - .onPrepare(Result::success) - .build(); + var dataplane = Dataplane.newInstance().onPrepare(Result::success).build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("auth", createPrepareMessage()); + dataplane.prepare("controlplaneId", createPrepareMessage()); var result = dataplane.notifyCompleted("dataFlowId"); @@ -113,12 +103,9 @@ void shouldReturnFailedFuture_whenControlPlaneRespondWithError() { @Test void shouldTransitionToCompleted_whenControlPlaneRespondCorrectly() { controlPlane.stubFor(post(anyUrl()).willReturn(aResponse().withStatus(200))); - var dataplane = Dataplane.newInstance() - .registerAuthorization(authorization()) - .onPrepare(Result::success) - .build(); + var dataplane = Dataplane.newInstance().onPrepare(Result::success).build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("auth", createPrepareMessage()); + dataplane.prepare("controlplaneId", createPrepareMessage()); var result = dataplane.notifyCompleted("dataFlowId"); @@ -131,9 +118,7 @@ void shouldTransitionToCompleted_whenControlPlaneRespondCorrectly() { class NotifyErrored { @Test void shouldFail_whenDataFlowDoesNotExist() { - var dataplane = Dataplane.newInstance() - .registerAuthorization(authorization()) - .build(); + var dataplane = Dataplane.newInstance().build(); var result = dataplane.notifyErrored("dataFlowId", new RuntimeException("some-error")); @@ -144,13 +129,9 @@ void shouldFail_whenDataFlowDoesNotExist() { @Test void shouldSendDataFlowStatusMessage_whenDataFlowIsErrored() { controlPlane.stubFor(post(anyUrl()).willReturn(aResponse().withStatus(200))); - var dataplane = Dataplane.newInstance() - .id("dataplane-id") - .registerAuthorization(authorization()) - .onPrepare(Result::success) - .build(); + var dataplane = Dataplane.newInstance().id("dataplane-id").onPrepare(Result::success).build(); dataplane.registerControlPlane(new ControlPlaneRegistrationMessage("controlplaneId", URI.create("http://localhost/any"))); - dataplane.prepare("auth", createPrepareMessage()); + dataplane.prepare("controlplaneId", createPrepareMessage()); var result = dataplane.notifyErrored("dataFlowId", new RuntimeException("some-error")); @@ -215,23 +196,4 @@ void shouldFail_whenStatusIsNot200() { private DataFlowPrepareMessage createPrepareMessage() { return MessageFactory.createPrepareMessage("dataFlowId", URI.create(controlPlane.baseUrl()), "Something-PUSH"); } - - private Authorization authorization() { - return new Authorization() { - @Override - public String type() { - return "test"; - } - - @Override - public Result authorizationHeader(AuthorizationProfile profile) { - return Result.success("Bearer 1234"); - } - - @Override - public Result extractCallerId(String authorizationHeader) { - return Result.success("controlplaneId"); - } - }; - } } diff --git a/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java index a1cbd75..cb38413 100644 --- a/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java +++ b/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java @@ -36,6 +36,7 @@ import org.eclipse.dataplane.domain.dataflow.DataFlowSuspendMessage; import org.eclipse.dataplane.domain.dataflow.DataFlowTerminateMessage; +import static jakarta.ws.rs.core.HttpHeaders.AUTHORIZATION; import static jakarta.ws.rs.core.MediaType.APPLICATION_JSON; import static jakarta.ws.rs.core.MediaType.WILDCARD; @@ -53,7 +54,7 @@ public DataPlaneSignalingApiController(Dataplane dataplane) { @POST @Path("/prepare") public Response prepare(DataFlowPrepareMessage message, @Context ContainerRequestContext requestContext) { - var response = extractAuthHeader(requestContext) + var response = extractControlplaneId(requestContext) .compose(controlplaneId -> dataplane.prepare(controlplaneId, message)) .orElseThrow(ExceptionMapper.MAP_TO_WSRS); @@ -66,7 +67,7 @@ public Response prepare(DataFlowPrepareMessage message, @Context ContainerReques @POST @Path("/start") public Response start(DataFlowStartMessage message, @Context ContainerRequestContext requestContext) { - var response = extractAuthHeader(requestContext) + var response = extractControlplaneId(requestContext) .compose(controlplaneId -> dataplane.start(controlplaneId, message)) .orElseThrow(ExceptionMapper.MAP_TO_WSRS); @@ -119,12 +120,12 @@ public DataFlowStatusResponseMessage status(@PathParam("flowId") String flowId) return dataplane.status(flowId).orElseThrow(ExceptionMapper.MAP_TO_WSRS); } - private Result extractAuthHeader(ContainerRequestContext requestContext) { - var authorizationHeader = requestContext.getHeaderString("Authorization"); + private Result extractControlplaneId(ContainerRequestContext requestContext) { + var authorizationHeader = requestContext.getHeaderString(AUTHORIZATION); if (authorizationHeader == null) { return Result.failure(new NotAuthorizedException("Authorization header missing")); } - return Result.success(authorizationHeader); + return dataplane.extractControlplaneId(authorizationHeader); } } From 50b9ff7da40656b22fc11949d962e92f681558d5 Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Tue, 9 Jun 2026 11:03:17 +0200 Subject: [PATCH 6/6] chore: PR remarks --- {core => dataplane-sdk-core}/build.gradle.kts | 0 .../main/java/org/eclipse/dataplane/Dataplane.java | 0 .../org/eclipse/dataplane/domain/DataAddress.java | 0 .../java/org/eclipse/dataplane/domain/Result.java | 0 .../dataplane/domain/controlplane/ControlPlane.java | 0 .../eclipse/dataplane/domain/dataflow/DataFlow.java | 0 .../domain/dataflow/DataFlowPrepareMessage.java | 0 .../domain/dataflow/DataFlowResumeMessage.java | 0 .../domain/dataflow/DataFlowStartMessage.java | 0 .../dataflow/DataFlowStartedNotificationMessage.java | 0 .../domain/dataflow/DataFlowStatusMessage.java | 0 .../dataflow/DataFlowStatusResponseMessage.java | 0 .../domain/dataflow/DataFlowSuspendMessage.java | 0 .../domain/dataflow/DataFlowTerminateMessage.java | 0 .../dataplane/domain/registration/Authorization.java | 0 .../domain/registration/AuthorizationProfile.java | 0 .../ControlPlaneRegistrationMessage.java | 0 .../registration/DataPlaneRegistrationMessage.java | 0 .../Oauth2ClientCredentialsAuthorization.java | 0 .../org/eclipse/dataplane/logic/OnCompleted.java | 0 .../java/org/eclipse/dataplane/logic/OnPrepare.java | 0 .../java/org/eclipse/dataplane/logic/OnResume.java | 0 .../java/org/eclipse/dataplane/logic/OnStart.java | 0 .../java/org/eclipse/dataplane/logic/OnStarted.java | 0 .../java/org/eclipse/dataplane/logic/OnSuspend.java | 0 .../org/eclipse/dataplane/logic/OnTerminate.java | 0 .../port/exception/AuthorizationNotSupported.java | 0 .../port/exception/ControlPlaneNotRegistered.java | 0 .../exception/DataFlowNotifyControlPlaneFailed.java | 0 .../port/exception/DataplaneNotRegistered.java | 0 .../exception/IllegalAttributeTypeException.java | 0 .../port/exception/PersistenceException.java | 0 .../port/exception/ResourceNotFoundException.java | 0 .../port/exception/UnauthorizedException.java | 0 .../dataplane/port/store/ControlPlaneStore.java | 0 .../eclipse/dataplane/port/store/DataFlowStore.java | 0 .../port/store/InMemoryControlPlaneStore.java | 0 .../dataplane/port/store/InMemoryDataFlowStore.java | 0 .../org/eclipse/dataplane/port/store/Stores.java | 0 .../dataplane/port/store/sql/AbstractSqlStore.java | 0 .../port/store/sql/PostgresControlPlaneStore.java | 0 .../port/store/sql/PostgresDataFlowStore.java | 0 .../src/main/resources/sql/control_plane_schema.sql | 0 .../src/main/resources/sql/data_flow_schema.sql | 0 .../dataplane/store/ControlPlaneStoreTestBase.java | 0 .../dataplane/store/DataFlowStoreTestBase.java | 0 .../store/InMemoryControlPlaneStoreTest.java | 0 .../dataplane/store/InMemoryDataFlowStoreTest.java | 0 .../store/sql/PostgresControlPlaneStoreTest.java | 0 .../store/sql/PostgresDataFlowStoreTest.java | 0 .../build.gradle.kts | 2 +- .../port/DataPlaneRegistrationApiController.java | 0 .../port/DataPlaneSignalingApiController.java | 0 .../org/eclipse/dataplane/port/ExceptionMapper.java | 0 e2e-tests/build.gradle.kts | 12 ++++++++++-- settings.gradle.kts | 4 ++-- 56 files changed, 13 insertions(+), 5 deletions(-) rename {core => dataplane-sdk-core}/build.gradle.kts (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/Dataplane.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/DataAddress.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/Result.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnResume.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnStart.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnStarted.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/Stores.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java (100%) rename {core => dataplane-sdk-core}/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java (100%) rename {core => dataplane-sdk-core}/src/main/resources/sql/control_plane_schema.sql (100%) rename {core => dataplane-sdk-core}/src/main/resources/sql/data_flow_schema.sql (100%) rename {core => dataplane-sdk-core}/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java (100%) rename {core => dataplane-sdk-core}/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java (100%) rename {core => dataplane-sdk-core}/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java (100%) rename {core => dataplane-sdk-core}/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java (100%) rename {core => dataplane-sdk-core}/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java (100%) rename {core => dataplane-sdk-core}/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java (100%) rename {web-jakarta-ee => dataplane-sdk-jakarta-ee}/build.gradle.kts (91%) rename {web-jakarta-ee => dataplane-sdk-jakarta-ee}/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java (100%) rename {web-jakarta-ee => dataplane-sdk-jakarta-ee}/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java (100%) rename {web-jakarta-ee => dataplane-sdk-jakarta-ee}/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java (100%) diff --git a/core/build.gradle.kts b/dataplane-sdk-core/build.gradle.kts similarity index 100% rename from core/build.gradle.kts rename to dataplane-sdk-core/build.gradle.kts diff --git a/core/src/main/java/org/eclipse/dataplane/Dataplane.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/Dataplane.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/Dataplane.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/Dataplane.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/DataAddress.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/DataAddress.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/DataAddress.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/DataAddress.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/Result.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/Result.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/Result.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/Result.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/controlplane/ControlPlane.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlow.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowPrepareMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowResumeMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStartedNotificationMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowStatusResponseMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowSuspendMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/dataflow/DataFlowTerminateMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Authorization.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/AuthorizationProfile.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/ControlPlaneRegistrationMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/DataPlaneRegistrationMessage.java diff --git a/core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/domain/registration/Oauth2ClientCredentialsAuthorization.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnCompleted.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnPrepare.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnResume.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnResume.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnResume.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnResume.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnStart.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnStart.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnStart.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnStart.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnStarted.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnStarted.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnStarted.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnStarted.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnSuspend.java diff --git a/core/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/logic/OnTerminate.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/AuthorizationNotSupported.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/ControlPlaneNotRegistered.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/DataFlowNotifyControlPlaneFailed.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/DataplaneNotRegistered.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/IllegalAttributeTypeException.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/PersistenceException.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/ResourceNotFoundException.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/exception/UnauthorizedException.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/ControlPlaneStore.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/DataFlowStore.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/InMemoryControlPlaneStore.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/InMemoryDataFlowStore.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/Stores.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/Stores.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/Stores.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/Stores.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java diff --git a/core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java b/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java similarity index 100% rename from core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java rename to dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java diff --git a/core/src/main/resources/sql/control_plane_schema.sql b/dataplane-sdk-core/src/main/resources/sql/control_plane_schema.sql similarity index 100% rename from core/src/main/resources/sql/control_plane_schema.sql rename to dataplane-sdk-core/src/main/resources/sql/control_plane_schema.sql diff --git a/core/src/main/resources/sql/data_flow_schema.sql b/dataplane-sdk-core/src/main/resources/sql/data_flow_schema.sql similarity index 100% rename from core/src/main/resources/sql/data_flow_schema.sql rename to dataplane-sdk-core/src/main/resources/sql/data_flow_schema.sql diff --git a/core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java similarity index 100% rename from core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java rename to dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java diff --git a/core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java similarity index 100% rename from core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java rename to dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java diff --git a/core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java similarity index 100% rename from core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java rename to dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryControlPlaneStoreTest.java diff --git a/core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java similarity index 100% rename from core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java rename to dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/InMemoryDataFlowStoreTest.java diff --git a/core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java similarity index 100% rename from core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java rename to dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java diff --git a/core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java b/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java similarity index 100% rename from core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java rename to dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java diff --git a/web-jakarta-ee/build.gradle.kts b/dataplane-sdk-jakarta-ee/build.gradle.kts similarity index 91% rename from web-jakarta-ee/build.gradle.kts rename to dataplane-sdk-jakarta-ee/build.gradle.kts index 0fad938..f3443fb 100644 --- a/web-jakarta-ee/build.gradle.kts +++ b/dataplane-sdk-jakarta-ee/build.gradle.kts @@ -17,7 +17,7 @@ plugins { } dependencies { - implementation(project(":core")) + implementation(project(":dataplane-sdk-core")) implementation(libs.jakarta.rsApi) } diff --git a/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java b/dataplane-sdk-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java similarity index 100% rename from web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java rename to dataplane-sdk-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneRegistrationApiController.java diff --git a/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java b/dataplane-sdk-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java similarity index 100% rename from web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java rename to dataplane-sdk-jakarta-ee/src/main/java/org/eclipse/dataplane/port/DataPlaneSignalingApiController.java diff --git a/web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java b/dataplane-sdk-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java similarity index 100% rename from web-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java rename to dataplane-sdk-jakarta-ee/src/main/java/org/eclipse/dataplane/port/ExceptionMapper.java diff --git a/e2e-tests/build.gradle.kts b/e2e-tests/build.gradle.kts index 98755ba..daf2e50 100644 --- a/e2e-tests/build.gradle.kts +++ b/e2e-tests/build.gradle.kts @@ -17,8 +17,8 @@ plugins { } dependencies { - testImplementation(project(":core")) - testImplementation(project(":web-jakarta-ee")) + testImplementation(project(":dataplane-sdk-core")) + testImplementation(project(":dataplane-sdk-jakarta-ee")) testImplementation(libs.nimbus.jwt) @@ -37,3 +37,11 @@ dependencies { testImplementation(libs.jetty.server) testImplementation(libs.wiremock.jetty12) } + +tasks.withType().configureEach { + enabled = false +} + +tasks.withType().configureEach { + enabled = false +} diff --git a/settings.gradle.kts b/settings.gradle.kts index da9a46e..aa049c5 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,7 +6,7 @@ dependencyResolutionManagement { } } -include(":core") -include(":web-jakarta-ee") +include(":dataplane-sdk-core") +include(":dataplane-sdk-jakarta-ee") include(":e2e-tests")