From cec0ee207f404866966e7334bde832948a4d3ade Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Fri, 12 Jun 2026 11:21:42 +0200 Subject: [PATCH 1/2] chore: move postgres to separate module --- dataplane-sdk-core/build.gradle.kts | 9 ++---- .../store/ControlPlaneStoreTestBase.java | 0 .../store/DataFlowStoreTestBase.java | 0 dataplane-sdk-postgresql/build.gradle.kts | 32 +++++++++++++++++++ .../store/postgresql}/AbstractSqlStore.java | 2 +- .../PostgresControlPlaneStore.java | 4 +-- .../postgresql}/PostgresDataFlowStore.java | 4 +-- .../PostgresControlPlaneStoreTest.java | 3 +- .../PostgresDataFlowStoreTest.java | 3 +- settings.gradle.kts | 1 + 10 files changed, 43 insertions(+), 15 deletions(-) rename dataplane-sdk-core/src/{test => testFixtures}/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java (100%) rename dataplane-sdk-core/src/{test => testFixtures}/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java (100%) create mode 100644 dataplane-sdk-postgresql/build.gradle.kts rename {dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql => dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql}/AbstractSqlStore.java (98%) rename {dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql => dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql}/PostgresControlPlaneStore.java (96%) rename {dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql => dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql}/PostgresDataFlowStore.java (97%) rename {dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql => dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql}/PostgresControlPlaneStoreTest.java (95%) rename {dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql => dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql}/PostgresDataFlowStoreTest.java (95%) diff --git a/dataplane-sdk-core/build.gradle.kts b/dataplane-sdk-core/build.gradle.kts index d27ac03..33fc3f1 100644 --- a/dataplane-sdk-core/build.gradle.kts +++ b/dataplane-sdk-core/build.gradle.kts @@ -14,6 +14,7 @@ plugins { `java-library` + `java-test-fixtures` } dependencies { @@ -25,14 +26,10 @@ dependencies { 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) + testFixturesImplementation(libs.junit.jupiter) + testFixturesImplementation(libs.assertJ) } diff --git a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java b/dataplane-sdk-core/src/testFixtures/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java similarity index 100% rename from dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java rename to dataplane-sdk-core/src/testFixtures/java/org/eclipse/dataplane/store/ControlPlaneStoreTestBase.java diff --git a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java b/dataplane-sdk-core/src/testFixtures/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java similarity index 100% rename from dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java rename to dataplane-sdk-core/src/testFixtures/java/org/eclipse/dataplane/store/DataFlowStoreTestBase.java diff --git a/dataplane-sdk-postgresql/build.gradle.kts b/dataplane-sdk-postgresql/build.gradle.kts new file mode 100644 index 0000000..1fc6d51 --- /dev/null +++ b/dataplane-sdk-postgresql/build.gradle.kts @@ -0,0 +1,32 @@ +/* + * 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(project(":dataplane-sdk-core")) + + implementation(libs.jackson.databind) + + testImplementation(testFixtures(project(":dataplane-sdk-core"))) + + testImplementation(platform(libs.junit.bom)) + testImplementation(libs.junit.jupiter) + testRuntimeOnly(libs.junit.launcher) + testImplementation(libs.testcontainers.junit.jupiter) + testImplementation(libs.testcontainers.postgresql) + testImplementation(libs.postgresql) +} diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java similarity index 98% rename from dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java rename to dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java index 58c8bbc..2ef662a 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/AbstractSqlStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java @@ -12,7 +12,7 @@ * */ -package org.eclipse.dataplane.port.store.sql; +package org.eclipse.dataplane.store.postgresql; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java similarity index 96% rename from dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java rename to dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java index 026bdec..d686db3 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresControlPlaneStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java @@ -12,7 +12,7 @@ * */ -package org.eclipse.dataplane.port.store.sql; +package org.eclipse.dataplane.store.postgresql; import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.domain.Result; @@ -44,7 +44,7 @@ public Result save(ControlPlane controlPlane) { statement.executeUpdate(); return Result.success(); } catch (Exception e) { - return Result.failure(new PersistenceException(format("Failed to persist ControlPlane with id %s.", controlPlane.getId()), e)); + return Result.failure(new PersistenceException(String.format("Failed to persist ControlPlane with id %s.", controlPlane.getId()), e)); } finally { closeConnection(connection); } diff --git a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java similarity index 97% rename from dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java rename to dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java index f49b81f..bfee981 100644 --- a/dataplane-sdk-core/src/main/java/org/eclipse/dataplane/port/store/sql/PostgresDataFlowStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java @@ -12,7 +12,7 @@ * */ -package org.eclipse.dataplane.port.store.sql; +package org.eclipse.dataplane.store.postgresql; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; @@ -58,7 +58,7 @@ public Result save(DataFlow dataFlow) { statement.executeUpdate(); return Result.success(); } catch (Exception e) { - return Result.failure(new PersistenceException(format("Failed to persist DataFlow with id %s.", dataFlow.getId()), e)); + return Result.failure(new PersistenceException(String.format("Failed to persist DataFlow with id %s.", dataFlow.getId()), e)); } finally { closeConnection(connection); } diff --git a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java similarity index 95% rename from dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java rename to dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java index a7ef3c0..e5c4e0b 100644 --- a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresControlPlaneStoreTest.java +++ b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java @@ -12,11 +12,10 @@ * */ -package org.eclipse.dataplane.store.sql; +package org.eclipse.dataplane.store.postgresql; import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.port.store.ControlPlaneStore; -import org.eclipse.dataplane.port.store.sql.PostgresControlPlaneStore; import org.eclipse.dataplane.store.ControlPlaneStoreTestBase; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; diff --git a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java similarity index 95% rename from dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java rename to dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java index e5c060d..e89adb3 100644 --- a/dataplane-sdk-core/src/test/java/org/eclipse/dataplane/store/sql/PostgresDataFlowStoreTest.java +++ b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java @@ -12,11 +12,10 @@ * */ -package org.eclipse.dataplane.store.sql; +package org.eclipse.dataplane.store.postgresql; import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.dataplane.port.store.DataFlowStore; -import org.eclipse.dataplane.port.store.sql.PostgresDataFlowStore; import org.eclipse.dataplane.store.DataFlowStoreTestBase; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; diff --git a/settings.gradle.kts b/settings.gradle.kts index aa049c5..6f876b4 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -8,5 +8,6 @@ dependencyResolutionManagement { include(":dataplane-sdk-core") include(":dataplane-sdk-jakarta-ee") +include(":dataplane-sdk-postgresql") include(":e2e-tests") From 6485af195bc9d5f3e32723c138887610ef14d4bd Mon Sep 17 00:00:00 2001 From: Ronja Quensel Date: Fri, 12 Jun 2026 14:32:48 +0200 Subject: [PATCH 2/2] refactor: use DataSource instead of DriverManager --- .../store/postgresql/AbstractSqlStore.java | 14 +++++--------- .../postgresql/PostgresControlPlaneStore.java | 7 ++++--- .../store/postgresql/PostgresDataFlowStore.java | 7 ++++--- .../postgresql/PostgresControlPlaneStoreTest.java | 7 ++++++- .../postgresql/PostgresDataFlowStoreTest.java | 7 ++++++- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java index 2ef662a..7d2ad04 100644 --- a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/AbstractSqlStore.java @@ -21,7 +21,7 @@ import org.eclipse.dataplane.port.exception.PersistenceException; import java.sql.Connection; -import java.sql.DriverManager; +import javax.sql.DataSource; /** * Base class for SQL-based store implementations that provides methods for common functionality @@ -31,20 +31,16 @@ public abstract class AbstractSqlStore { protected ObjectMapper objectMapper; - private final String databaseUrl; - private final String databaseUsername; - private final String databasePassword; + private final DataSource dataSource; - public AbstractSqlStore(ObjectMapper objectMapper, String databaseUrl, String databaseUsername, String databasePassword) { + public AbstractSqlStore(ObjectMapper objectMapper, DataSource dataSource) { this.objectMapper = objectMapper; - this.databaseUrl = databaseUrl; - this.databaseUsername = databaseUsername; - this.databasePassword = databasePassword; + this.dataSource = dataSource; } protected Connection getConnection() { try { - return DriverManager.getConnection(databaseUrl, databaseUsername, databasePassword); + return dataSource.getConnection(); } catch (Exception e) { throw new PersistenceException("Failed to connect to database.", e); } diff --git a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java index d686db3..6412343 100644 --- a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStore.java @@ -23,13 +23,14 @@ import org.eclipse.dataplane.port.store.ControlPlaneStore; import java.net.URI; +import javax.sql.DataSource; import static java.lang.String.format; public class PostgresControlPlaneStore extends AbstractSqlStore implements ControlPlaneStore { - public PostgresControlPlaneStore(ObjectMapper objectMapper, String databaseUrl, String databaseUsername, String databasePassword) { - super(objectMapper, databaseUrl, databaseUsername, databasePassword); + public PostgresControlPlaneStore(ObjectMapper objectMapper, DataSource dataSource) { + super(objectMapper, dataSource); } @Override @@ -44,7 +45,7 @@ public Result save(ControlPlane controlPlane) { statement.executeUpdate(); return Result.success(); } catch (Exception e) { - return Result.failure(new PersistenceException(String.format("Failed to persist ControlPlane with id %s.", controlPlane.getId()), e)); + return Result.failure(new PersistenceException(format("Failed to persist ControlPlane with id %s.", controlPlane.getId()), e)); } finally { closeConnection(connection); } diff --git a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java index bfee981..45ed157 100644 --- a/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java +++ b/dataplane-sdk-postgresql/src/main/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStore.java @@ -24,13 +24,14 @@ import org.eclipse.dataplane.port.store.DataFlowStore; import java.net.URI; +import javax.sql.DataSource; import static java.lang.String.format; public class PostgresDataFlowStore extends AbstractSqlStore implements DataFlowStore { - public PostgresDataFlowStore(ObjectMapper objectMapper, String databaseUrl, String databaseUsername, String databasePassword) { - super(objectMapper, databaseUrl, databaseUsername, databasePassword); + public PostgresDataFlowStore(ObjectMapper objectMapper, DataSource dataSource) { + super(objectMapper, dataSource); } @Override @@ -58,7 +59,7 @@ public Result save(DataFlow dataFlow) { statement.executeUpdate(); return Result.success(); } catch (Exception e) { - return Result.failure(new PersistenceException(String.format("Failed to persist DataFlow with id %s.", dataFlow.getId()), e)); + return Result.failure(new PersistenceException(format("Failed to persist DataFlow with id %s.", dataFlow.getId()), e)); } finally { closeConnection(connection); } diff --git a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java index e5c4e0b..c31a226 100644 --- a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java +++ b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresControlPlaneStoreTest.java @@ -20,6 +20,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.postgresql.ds.PGSimpleDataSource; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.postgresql.PostgreSQLContainer; @@ -57,7 +58,11 @@ static void cleanUp() { @BeforeEach void initStore() { - store = new PostgresControlPlaneStore(mapper, postgres.getJdbcUrl(), postgres.getUsername(), postgres.getPassword()); + var dataSource = new PGSimpleDataSource(); + dataSource.setUrl(postgres.getJdbcUrl()); + dataSource.setUser(postgres.getUsername()); + dataSource.setPassword(postgres.getPassword()); + store = new PostgresControlPlaneStore(mapper, dataSource); } @Override diff --git a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java index e89adb3..63a26f9 100644 --- a/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java +++ b/dataplane-sdk-postgresql/src/test/java/org/eclipse/dataplane/store/postgresql/PostgresDataFlowStoreTest.java @@ -20,6 +20,7 @@ import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; +import org.postgresql.ds.PGSimpleDataSource; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; import org.testcontainers.postgresql.PostgreSQLContainer; @@ -57,7 +58,11 @@ static void cleanUp() { @BeforeEach void initStore() { - store = new PostgresDataFlowStore(mapper, postgres.getJdbcUrl(), postgres.getUsername(), postgres.getPassword()); + var dataSource = new PGSimpleDataSource(); + dataSource.setUrl(postgres.getJdbcUrl()); + dataSource.setUser(postgres.getUsername()); + dataSource.setPassword(postgres.getPassword()); + store = new PostgresDataFlowStore(mapper, dataSource); } @Override