This is an automated email from the ASF dual-hosted git repository.

asf-gitbox-commits pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git

commit 1bcf43edce654c5fe368bc04792c3fd3600fbe89
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sat May 16 13:56:29 2026 -0400

    Tests cleanup
---
 .../org/apache/cayenne/dbsync/merge/MergeCase.java |  2 +-
 .../dbsync/reverse/dbload/BaseLoaderIT.java        |  2 +-
 .../cayenne/dbsync/reverse/dbload/DbLoaderIT.java  |  2 +-
 .../cayenne/access/DataNodeQueryExceptionsIT.java  |  2 +-
 .../cayenne/access/jdbc/SQLTemplateActionIT.java   | 14 ++--
 .../org/apache/cayenne/dba/JdbcPkGeneratorIT.java  |  9 ++-
 .../org/apache/cayenne/dba/TypesMappingIT.java     |  4 +-
 .../cayenne/dba/sqlserver/SQLServerSnifferIT.java  |  2 +-
 .../org/apache/cayenne/unit/CayenneTestsEnv.java   | 34 +++++-----
 .../cayenne/unit/{runtime => }/DbCleaner.java      |  7 +-
 ...estsSchemaManager.java => DbSchemaManager.java} | 18 ++++--
 .../org/apache/cayenne/unit/TestDataSources.java   | 75 ----------------------
 12 files changed, 55 insertions(+), 116 deletions(-)

diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
index d835e481a..ec5c485ca 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/merge/MergeCase.java
@@ -227,7 +227,7 @@ public abstract class MergeCase {
 
     private void executeSql(String sql) throws Exception {
 
-        try (Connection conn = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection conn = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
 
             try (Statement st = conn.createStatement();) {
                 st.execute(sql);
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
index 12401bbd9..407702fa5 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/BaseLoaderIT.java
@@ -56,7 +56,7 @@ public class BaseLoaderIT {
         accessStackAdapter = env.testDbAdapter();
         store = new DbLoadDataStore();
         assertTrue(store.getDbEntities().isEmpty(), "Store is not empty");
-        this.connection = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();
+        this.connection = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();
     }
 
     @AfterEach
diff --git 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
index f54c4dfef..c64bc3108 100644
--- 
a/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
+++ 
b/cayenne-dbsync/src/test/java/org/apache/cayenne/dbsync/reverse/dbload/DbLoaderIT.java
@@ -138,7 +138,7 @@ public class DbLoaderIT {
     @BeforeEach
     public void before() throws Exception {
         adapter = env.dataNode().getAdapter();
-        this.connection = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();
+        this.connection = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();
     }
 
     private DbLoader createDbLoader() {
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
 
b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
index 7d3a74cf6..b30565146 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/access/DataNodeQueryExceptionsIT.java
@@ -77,7 +77,7 @@ public class DataNodeQueryExceptionsIT {
 
     int activeConnections() {
         try {
-            UnmanagedPoolingDataSource ds = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().unwrap(UnmanagedPoolingDataSource.class);
+            UnmanagedPoolingDataSource ds = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().unwrap(UnmanagedPoolingDataSource.class);
 
             Method poolSize = 
UnmanagedPoolingDataSource.class.getDeclaredMethod("poolSize");
             poolSize.setAccessible(true);
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java 
b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
index 93b2b10ee..3c862a91f 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/access/jdbc/SQLTemplateActionIT.java
@@ -106,7 +106,7 @@ public class SQLTemplateActionIT {
 
         MockOperationObserver observer = new MockOperationObserver();
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             plan.performAction(c, observer);
         }
 
@@ -163,7 +163,7 @@ public class SQLTemplateActionIT {
 
         MockOperationObserver observer = new MockOperationObserver();
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             plan.performAction(c, observer);
         }
 
@@ -193,7 +193,7 @@ public class SQLTemplateActionIT {
 
         MockOperationObserver observer = new MockOperationObserver();
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             plan.performAction(c, observer);
         }
 
@@ -223,7 +223,7 @@ public class SQLTemplateActionIT {
 
         MockOperationObserver observer = new MockOperationObserver();
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             plan.performAction(c, observer);
         }
 
@@ -251,7 +251,7 @@ public class SQLTemplateActionIT {
 
         SQLAction action = node.getAdapter().getAction(template, node);
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);
 
@@ -273,7 +273,7 @@ public class SQLTemplateActionIT {
 
         SQLAction action = node.getAdapter().getAction(template, node);
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);
 
@@ -308,7 +308,7 @@ public class SQLTemplateActionIT {
         assertSame(node, action.dataNode);
         assertSame(template, action.getQuery());
 
-        try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection();) {
+        try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection();) {
             MockOperationObserver observer = new MockOperationObserver();
             action.performAction(c, observer);
 
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java 
b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
index 3630ce8fa..83d0e4e15 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/JdbcPkGeneratorIT.java
@@ -45,7 +45,9 @@ public class JdbcPkGeneratorIT {
     @BeforeEach
     public void setUp() throws Exception {
         node = env.dataNode();
-        CayenneTestsEnv.SCHEMAS.dropPKSupport();
+
+        // TODO: we should have a dedicated DbSchemaManager for such 
destructive operations working off of its own DB
+        CayenneTestsEnv.COMMON_SCHEMA.dropPKSupport();
     }
 
     @AfterEach
@@ -57,8 +59,9 @@ public class JdbcPkGeneratorIT {
 
             
pkGenerator.setPkStartValue(JdbcPkGenerator.DEFAULT_PK_START_VALUE);
 
-            CayenneTestsEnv.SCHEMAS.dropPKSupport();
-            CayenneTestsEnv.SCHEMAS.createPKSupport();
+            // TODO: we should have a dedicated DbSchemaManager for such 
destructive operations working off of its own DB
+            CayenneTestsEnv.COMMON_SCHEMA.dropPKSupport();
+            CayenneTestsEnv.COMMON_SCHEMA.createPKSupport();
         }
     }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java 
b/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
index d097fdb8a..b73c44c79 100644
--- a/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
+++ b/cayenne/src/test/java/org/apache/cayenne/dba/TypesMappingIT.java
@@ -130,7 +130,7 @@ public class TypesMappingIT {
         // check counts
         // since more then 1 database type can map to a single JDBC type
         int len = 0;
-        try (Connection conn = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection()) {
+        try (Connection conn = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection()) {
             DatabaseMetaData md = conn.getMetaData();
             try (ResultSet rs = md.getTypeInfo()) {
                 while (rs.next()) {
@@ -153,7 +153,7 @@ public class TypesMappingIT {
     }
 
     private TypesMapping createTypesMapping() throws Exception {
-        try (Connection conn = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection()) {
+        try (Connection conn = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection()) {
             DatabaseMetaData md = conn.getMetaData();
             return new TypesMapping(md);
         }
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
 
b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
index b58739807..53245ced1 100644
--- 
a/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
+++ 
b/cayenne/src/test/java/org/apache/cayenne/dba/sqlserver/SQLServerSnifferIT.java
@@ -43,7 +43,7 @@ public class SQLServerSnifferIT {
 
                DbAdapter adapter;
 
-               try (Connection c = 
CayenneTestsEnv.DATA_SOURCES.sharedDataSource().getConnection()) {
+               try (Connection c = 
CayenneTestsEnv.COMMON_SCHEMA.dataSource().getConnection()) {
                        adapter = sniffer.createAdapter(c.getMetaData());
                }
 
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
index 610ae6117..a91bae33a 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java
@@ -31,6 +31,7 @@ import org.apache.cayenne.configuration.DataNodeDescriptor;
 import org.apache.cayenne.configuration.DataSourceDescriptor;
 import org.apache.cayenne.configuration.runtime.CoreModule;
 import org.apache.cayenne.configuration.runtime.DbAdapterFactory;
+import org.apache.cayenne.datasource.DataSourceBuilder;
 import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.di.AdhocObjectFactory;
 import org.apache.cayenne.di.DIBootstrap;
@@ -44,7 +45,6 @@ import org.apache.cayenne.runtime.CayenneRuntime;
 import org.apache.cayenne.test.jdbc.DbHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.unit.dba.TestDbAdapter;
-import org.apache.cayenne.unit.runtime.DbCleaner;
 import org.apache.cayenne.unit.runtime.FlavoredDbHelper;
 import org.apache.cayenne.unit.runtime.RuntimeCaseModule;
 import org.apache.cayenne.unit.util.SQLTemplateCustomizer;
@@ -67,19 +67,25 @@ public class CayenneTestsEnv implements BeforeEachCallback, 
AfterEachCallback {
     private static final Injector INJECTOR;
 
     // shared stack parts... use these directly from the tests
-    public static final TestDataSources DATA_SOURCES;
-    public static final AllTestsSchemaManager SCHEMAS;
+    public static final DbSchemaManager COMMON_SCHEMA;
 
     static {
         INJECTOR = DIBootstrap.createInjector(new RuntimeCaseModule());
 
-        DATA_SOURCES = new TestDataSources(
-                INJECTOR.getInstance(DataSourceDescriptor.class),
-                INJECTOR.getInstance(AdhocObjectFactory.class));
-
-        SCHEMAS = new AllTestsSchemaManager(DATA_SOURCES.sharedDataSource());
+        DataSourceDescriptor dataSourceDescriptor = 
INJECTOR.getInstance(DataSourceDescriptor.class);
+        DataSource dataSource = DataSourceBuilder
+                .url(dataSourceDescriptor.getDataSourceUrl())
+                .driver(dataSourceDescriptor.getJdbcDriver())
+                .userName(dataSourceDescriptor.getUserName())
+                .password(dataSourceDescriptor.getPassword())
+                .pool(dataSourceDescriptor.getMinConnections(), 
dataSourceDescriptor.getMaxConnections())
+                .build();
 
-        SCHEMAS.rebuildSchema();
+        // "cayenne-ALL.xml" is a special synthetic project file that includes 
all test DataMaps
+        // TODO: support for multiple schemas, so that DDL operation scope 
(such as dropping PK)
+        //   can be isolated from the wider test environment
+        COMMON_SCHEMA = new DbSchemaManager("cayenne-ALL.xml", dataSource);
+        COMMON_SCHEMA.rebuildSchema();
     }
 
     private final String project;
@@ -121,7 +127,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, 
AfterEachCallback {
     @Override
     public void beforeEach(ExtensionContext ctx) {
         this.runtime = buildRuntime();
-        synthesizeDataNodes(runtime);
+        synthesizeDataNodes(runtime, COMMON_SCHEMA.dataSource());
 
         this.context = (DataContext) runtime.newContext();
 
@@ -130,12 +136,12 @@ public class CayenneTestsEnv implements 
BeforeEachCallback, AfterEachCallback {
         tweakProcedures(runtime, testDbAdapter);
 
         this.dbHelper = new FlavoredDbHelper(
-                DATA_SOURCES.sharedDataSource(),
+                COMMON_SCHEMA.dataSource(),
                 firstAdapter.getQuotingStrategy(),
                 context.getEntityResolver().getDataMaps().iterator().next());
 
         this.dbCleaner = new DbCleaner(
-                SCHEMAS,
+                COMMON_SCHEMA,
                 dbHelper,
                 
context.getEntityResolver().getDataMaps().stream().map(DataMap::getName).collect(Collectors.toSet()));
 
@@ -168,7 +174,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, 
AfterEachCallback {
                 .build();
     }
 
-    private static void synthesizeDataNodes(CayenneRuntime runtime) {
+    private static void synthesizeDataNodes(CayenneRuntime runtime, DataSource 
dataSource) {
 
         DataDomain domain = runtime.getDataDomain();
         Injector runtimeInjector = runtime.getInjector();
@@ -181,8 +187,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, 
AfterEachCallback {
 
         for (DataMap dataMap : domain.getDataMaps()) {
 
-            DataSource dataSource = DATA_SOURCES.dataSource(dataMap.getName());
-
             DataNode node = new TestTelemetryDataNode(dataMap.getName());
 
             node.setJdbcEventLogger(jdbcEventLogger);
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/DbCleaner.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/DbCleaner.java
similarity index 87%
rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/DbCleaner.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/DbCleaner.java
index deb93c12e..7145ce068 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/DbCleaner.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/DbCleaner.java
@@ -17,11 +17,10 @@
  *  under the License.
  ****************************************************************/
 
-package org.apache.cayenne.unit.runtime;
+package org.apache.cayenne.unit;
 
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.test.jdbc.DbHelper;
-import org.apache.cayenne.unit.AllTestsSchemaManager;
 
 import java.sql.SQLException;
 import java.util.Set;
@@ -32,10 +31,10 @@ import java.util.Set;
 public class DbCleaner {
 
     private final DbHelper dbHelper;
-    private final AllTestsSchemaManager parentSchemaManager;
+    private final DbSchemaManager parentSchemaManager;
     private final Set<String> dataMaps;
 
-    public DbCleaner(AllTestsSchemaManager parentSchemaManager, DbHelper 
dbHelper, Set<String> dataMaps) {
+    public DbCleaner(DbSchemaManager parentSchemaManager, DbHelper dbHelper, 
Set<String> dataMaps) {
         this.parentSchemaManager = parentSchemaManager;
         this.dbHelper = dbHelper;
         this.dataMaps = dataMaps;
diff --git 
a/cayenne/src/test/java/org/apache/cayenne/unit/AllTestsSchemaManager.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
similarity index 97%
rename from 
cayenne/src/test/java/org/apache/cayenne/unit/AllTestsSchemaManager.java
rename to cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
index a9dc68c2e..300c6a1ae 100644
--- a/cayenne/src/test/java/org/apache/cayenne/unit/AllTestsSchemaManager.java
+++ b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java
@@ -49,9 +49,12 @@ import java.util.ListIterator;
 import java.util.Map;
 import java.util.Set;
 
-public class AllTestsSchemaManager {
+/**
+ * Maps a full physical DB namespace (schema or database) that can be shared 
between many test DataMaps.
+ */
+public class DbSchemaManager {
 
-    private static final Logger LOGGER = 
LoggerFactory.getLogger(AllTestsSchemaManager.class);
+    private static final Logger LOGGER = 
LoggerFactory.getLogger(DbSchemaManager.class);
 
     // hardcoded dependent entities that should be excluded if LOBs are not 
supported
     private static final Set<String> EXTRA_EXCLUDED_FOR_NO_LOB = 
Set.of("CLOB_DETAIL");
@@ -62,11 +65,11 @@ public class AllTestsSchemaManager {
     private final DataDomain domain;
     private final List<DataMap> dataMapsInSchemaSetupOrder;
 
-    public AllTestsSchemaManager(DataSource dataSource) {
+    public DbSchemaManager(String project, DataSource dataSource) {
 
         this.dataSource = dataSource;
         this.domain = CayenneRuntime.builder()
-                .addConfig("cayenne-ALL.xml")
+                .addConfig(project)
                 .dataSource(dataSource)
                 .build()
                 .getDataDomain();
@@ -88,6 +91,10 @@ public class AllTestsSchemaManager {
         this.dataMapsInSchemaSetupOrder = sortDataMapsInSchemaSetupOrder();
     }
 
+    public DataSource dataSource() {
+        return dataSource;
+    }
+
     /**
      * Rebuilds the test schema, combining all DataMaps that require schema 
support. Schema generation is done like that
      * instead of on-demand per-DataMap  to avoid conflicts when dropping and 
generating PK objects.
@@ -168,6 +175,7 @@ public class AllTestsSchemaManager {
         }
     }
 
+    // TODO: this is only needed for "map-db1" and "map-db2". Looks wasteful
     private List<DataMap> sortDataMapsInSchemaSetupOrder() {
         List<DataMap> maps = new ArrayList<>(domain.getDataMaps());
         Map<DataMap, List<DataMap>> dependencies = new IdentityHashMap<>();
@@ -184,7 +192,7 @@ public class AllTestsSchemaManager {
             sortDataMap(map, dependencies, visited, visiting, sorted);
         }
 
-        return Collections.unmodifiableList(sorted);
+        return sorted;
     }
 
     private List<DataMap> dataMapDependencies(DataMap map, List<DataMap> maps) 
{
diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSources.java 
b/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSources.java
deleted file mode 100644
index 366cfcf06..000000000
--- a/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSources.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*****************************************************************
- *   Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    https://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- ****************************************************************/
-package org.apache.cayenne.unit;
-
-import org.apache.cayenne.configuration.DataSourceDescriptor;
-import org.apache.cayenne.datasource.DataSourceBuilder;
-import org.apache.cayenne.di.AdhocObjectFactory;
-
-import javax.sql.DataSource;
-import java.sql.Driver;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-public class TestDataSources {
-
-       private final DataSource sharedDataSource;
-       private final DataSourceDescriptor dataSourceInfo;
-       private final Map<String, DataSource> dataSources;
-       private final Set<String> mapsWithDedicatedDataSource;
-       private final AdhocObjectFactory objectFactory;
-
-       public TestDataSources(DataSourceDescriptor dataSourceInfo, 
AdhocObjectFactory objectFactory) {
-
-               this.objectFactory = objectFactory;
-               this.dataSourceInfo = dataSourceInfo;
-               this.dataSources = new HashMap<>();
-               this.mapsWithDedicatedDataSource = new 
HashSet<>(Arrays.asList("map-db1", "map-db2"));
-
-               this.sharedDataSource = createDataSource();
-       }
-
-       public DataSource sharedDataSource() {
-               return sharedDataSource;
-       }
-
-       public DataSource dataSource(String dataMapName) {
-               DataSource ds = dataSources.get(dataMapName);
-               if (ds == null) {
-
-                       ds = mapsWithDedicatedDataSource.contains(dataMapName) 
? createDataSource() : sharedDataSource;
-
-                       dataSources.put(dataMapName, ds);
-               }
-
-               return ds;
-       }
-
-       private DataSource createDataSource() {
-               Driver driver = objectFactory.newInstance(Driver.class, 
dataSourceInfo.getJdbcDriver());
-
-               return 
DataSourceBuilder.url(dataSourceInfo.getDataSourceUrl()).driver(driver)
-                               
.userName(dataSourceInfo.getUserName()).password(dataSourceInfo.getPassword())
-                               .pool(dataSourceInfo.getMinConnections(), 
dataSourceInfo.getMaxConnections()).build();
-       }
-
-}

Reply via email to