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 81% 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..7d2ad04 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; @@ -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-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..6412343 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; @@ -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 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 96% 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..45ed157 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; @@ -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 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 84% 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..c31a226 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,15 +12,15 @@ * */ -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; 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; @@ -58,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-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 84% 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..63a26f9 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,15 +12,15 @@ * */ -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; 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; @@ -58,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 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")