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 22a377c32a093d3f916ad06ab961e10d85f1cf86 Author: Andrus Adamchik <[email protected]> AuthorDate: Sat May 16 15:23:29 2026 -0400 removing unused test mappings --- .../datasource/BasePoolingDataSourceIT.java | 2 +- ...PoolingDataSource_FailingValidationQueryIT.java | 15 +- .../cayenne/runtime/CayenneRuntimeBuilderIT.java | 4 +- .../org/apache/cayenne/unit/CayenneTestsEnv.java | 27 ++-- .../unit/{runtime => }/ConnectionProperties.java | 2 +- .../org/apache/cayenne/unit/DbSchemaManager.java | 9 +- ...r.java => TestDataSourceDescriptorFactory.java} | 173 +++++++++++---------- .../{runtime => }/UnitDataSourceDescriptor.java | 2 +- .../unit/runtime/RuntimeCaseDbAdapterProvider.java | 51 ------ .../cayenne/unit/runtime/RuntimeCaseModule.java | 32 ---- 10 files changed, 120 insertions(+), 197 deletions(-) diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java index f777c467f..aac158659 100644 --- a/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/datasource/BasePoolingDataSourceIT.java @@ -40,7 +40,7 @@ public class BasePoolingDataSourceIT { @BeforeEach public void before() throws SQLException { - DataSourceDescriptor dataSourceInfo = env.dataSourceDescriptor(); + DataSourceDescriptor dataSourceInfo = CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor(); AdhocObjectFactory objectFactory = env.adhocObjectFactory(); Driver driver = objectFactory.newInstance(Driver.class, dataSourceInfo.getJdbcDriver()); diff --git a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java index 0642961c6..2e3023636 100644 --- a/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/datasource/PoolingDataSource_FailingValidationQueryIT.java @@ -18,14 +18,14 @@ ****************************************************************/ package org.apache.cayenne.datasource; -import java.sql.Driver; - import org.apache.cayenne.CayenneRuntimeException; -import org.apache.cayenne.unit.runtime.CayenneProjects; import org.apache.cayenne.unit.CayenneTestsEnv; +import org.apache.cayenne.unit.runtime.CayenneProjects; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; +import java.sql.Driver; + import static org.junit.jupiter.api.Assertions.assertThrows; public class PoolingDataSource_FailingValidationQueryIT { @@ -45,9 +45,12 @@ public class PoolingDataSource_FailingValidationQueryIT { @Test public void constructor() { assertThrows(CayenneRuntimeException.class, () -> { - Driver driver = env.adhocObjectFactory().newInstance(Driver.class, env.dataSourceDescriptor().getJdbcDriver()); - DriverDataSource nonPooling = new DriverDataSource(driver, env.dataSourceDescriptor().getDataSourceUrl(), - env.dataSourceDescriptor().getUserName(), env.dataSourceDescriptor().getPassword()); + Driver driver = env.adhocObjectFactory().newInstance(Driver.class, CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getJdbcDriver()); + DriverDataSource nonPooling = new DriverDataSource( + driver, + CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getDataSourceUrl(), + CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getUserName(), + CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor().getPassword()); PoolingDataSourceParameters poolParameters = createParameters(); UnmanagedPoolingDataSource ds = new UnmanagedPoolingDataSource(nonPooling, poolParameters); diff --git a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java index 1eefe1d6b..6babb7960 100644 --- a/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/runtime/CayenneRuntimeBuilderIT.java @@ -59,8 +59,8 @@ public class CayenneRuntimeBuilderIT { @BeforeEach public void setUp() throws Exception { - this.dsi = env.dataSourceDescriptor(); - this.dataSource = env.runtime().getDataSource("testmap"); + this.dsi = CayenneTestsEnv.COMMON_SCHEMA.dataSourceDescriptor(); + this.dataSource = CayenneTestsEnv.COMMON_SCHEMA.dataSource(); env.table("ARTIST", "ARTIST_ID", "ARTIST_NAME") .insert(33001, "AA1") 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 a20cac8f3..ab0588479 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java @@ -34,7 +34,6 @@ 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; import org.apache.cayenne.di.Injector; import org.apache.cayenne.di.Module; import org.apache.cayenne.log.JdbcEventLogger; @@ -46,7 +45,6 @@ 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.FlavoredDbHelper; -import org.apache.cayenne.unit.runtime.RuntimeCaseModule; import org.apache.cayenne.unit.util.SQLTemplateCustomizer; import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; @@ -64,25 +62,22 @@ import java.util.stream.Collectors; */ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { - private static final Injector INJECTOR; - // shared stack parts... use these directly from the tests + // TODO: we should support multiple physically-isolated schemas for cleaner tests public static final DbSchemaManager COMMON_SCHEMA; static { - INJECTOR = DIBootstrap.createInjector(new RuntimeCaseModule()); - - 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()) + DataSourceDescriptor dsDescriptor = TestDataSourceDescriptorFactory.create(); + DataSource ds = DataSourceBuilder + .url(dsDescriptor.getDataSourceUrl()) + .driver(dsDescriptor.getJdbcDriver()) + .userName(dsDescriptor.getUserName()) + .password(dsDescriptor.getPassword()) + .pool(dsDescriptor.getMinConnections(), dsDescriptor.getMaxConnections()) .build(); // "cayenne-ALL.xml" is a special synthetic project file that includes all test DataMaps - COMMON_SCHEMA = new DbSchemaManager("cayenne-ALL.xml", dataSource); + COMMON_SCHEMA = new DbSchemaManager("cayenne-ALL.xml", dsDescriptor, ds); COMMON_SCHEMA.rebuildSchema(); } @@ -263,10 +258,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { return dbCleaner; } - public DataSourceDescriptor dataSourceDescriptor() { - return INJECTOR.getInstance(DataSourceDescriptor.class); - } - public SQLTemplateCustomizer sqlTemplateCustomizer() { return SQLTemplateCustomizer.of(dataNode().getAdapter()); } diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java b/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java similarity index 98% rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java rename to cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java index 76daf4faa..60426e15a 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/ConnectionProperties.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/ConnectionProperties.java @@ -17,7 +17,7 @@ * under the License. ****************************************************************/ -package org.apache.cayenne.unit.runtime; +package org.apache.cayenne.unit; import java.util.ArrayList; import java.util.HashMap; diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java index 592573fb6..5df4846ab 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/DbSchemaManager.java @@ -21,6 +21,7 @@ package org.apache.cayenne.unit; import org.apache.cayenne.access.DataDomain; import org.apache.cayenne.access.DataNode; +import org.apache.cayenne.configuration.DataSourceDescriptor; import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.map.DbAttribute; @@ -61,13 +62,15 @@ public class DbSchemaManager { private static final Set<String> EXTRA_EXCLUDED_FOR_NO_LOB = Set.of("CLOB_DETAIL"); private static final Set<String> EXTRA_EXCLUDED_FOR_NO_NATIVE_JSON = Set.of("JSON_OTHER"); + private final DataSourceDescriptor dataSourceDescriptor; private final DataSource dataSource; private final TestDbAdapter testDbAdapter; private final DataDomain domain; private final List<DataMap> dataMapsInSchemaSetupOrder; - public DbSchemaManager(String project, DataSource dataSource) { + public DbSchemaManager(String project, DataSourceDescriptor dataSourceDescriptor, DataSource dataSource) { + this.dataSourceDescriptor = dataSourceDescriptor; this.dataSource = dataSource; this.domain = CayenneRuntime.builder() .addConfig(project) @@ -96,6 +99,10 @@ public class DbSchemaManager { return dataSource; } + public DataSourceDescriptor dataSourceDescriptor() { + return dataSourceDescriptor; + } + /** * 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. diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java similarity index 51% rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java rename to cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java index d5365be08..f885a035a 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDataSourceDescriptorProvider.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/TestDataSourceDescriptorFactory.java @@ -16,15 +16,19 @@ * specific language governing permissions and limitations * under the License. ****************************************************************/ -package org.apache.cayenne.unit.runtime; +package org.apache.cayenne.unit; import org.apache.cayenne.ConfigurationException; import org.apache.cayenne.dba.derby.DerbyAdapter; import org.apache.cayenne.dba.h2.H2Adapter; import org.apache.cayenne.dba.hsqldb.HSQLDBAdapter; import org.apache.cayenne.dba.sqlite.SQLiteAdapter; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.di.Provider; +import org.apache.cayenne.unit.testcontainers.Db2ContainerProvider; +import org.apache.cayenne.unit.testcontainers.MariaDbContainerProvider; +import org.apache.cayenne.unit.testcontainers.MysqlContainerProvider; +import org.apache.cayenne.unit.testcontainers.OracleContainerProvider; +import org.apache.cayenne.unit.testcontainers.PostgresContainerProvider; +import org.apache.cayenne.unit.testcontainers.SqlServerContainerProvider; import org.apache.cayenne.unit.testcontainers.TestContainerProvider; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -37,9 +41,9 @@ import java.util.HashMap; import java.util.Map; import java.util.Properties; -public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDataSourceDescriptor> { +public class TestDataSourceDescriptorFactory { - private static final Logger logger = LoggerFactory.getLogger(RuntimeCaseDataSourceDescriptorProvider.class); + private static final Logger LOGGER = LoggerFactory.getLogger(TestDataSourceDescriptorFactory.class); private static final String PROPERTIES_FILE = "connection.properties"; private static final String CONNECTION_NAME_KEY = "cayenneTestConnection"; @@ -50,86 +54,32 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat private static final String URL_KEY_MAVEN = "cayenneJdbcUrl"; private static final String DRIVER_KEY_MAVEN = "cayenneJdbcDriver"; - private Map<String, UnitDataSourceDescriptor> inMemoryDataSources; - private ConnectionProperties connectionProperties; - private final Map<String, TestContainerProvider> testContainerProviders; + public static UnitDataSourceDescriptor create() { - public RuntimeCaseDataSourceDescriptorProvider(@Inject Map<String, TestContainerProvider> testContainerProviders) - throws IOException { - - this.testContainerProviders = testContainerProviders; Map<String, String> propertiesMap = new HashMap<>(); File file = connectionPropertiesFile(); - if(file.exists()) { + if (file.exists()) { Properties properties = new Properties(); properties.load(new FileReader(file)); properties.forEach((k, v) -> propertiesMap.put(k.toString(), v.toString())); } - this.connectionProperties = new ConnectionProperties(propertiesMap); - logger.info("Loaded " + connectionProperties.size() + " DataSource configurations from properties file"); - - this.inMemoryDataSources = new HashMap<>(); - - // preload default in-memory DataSources. Will use them as defaults if - // nothing is configured in ~/.cayenne/connection.properties - UnitDataSourceDescriptor hsqldb = new UnitDataSourceDescriptor(); - hsqldb.setAdapterClassName(HSQLDBAdapter.class.getName()); - hsqldb.setUserName("sa"); - hsqldb.setPassword(""); - hsqldb.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false"); - hsqldb.setJdbcDriver("org.hsqldb.jdbcDriver"); - hsqldb.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); - hsqldb.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); - inMemoryDataSources.put("hsql", hsqldb); - - UnitDataSourceDescriptor h2 = new UnitDataSourceDescriptor(); - h2.setAdapterClassName(H2Adapter.class.getName()); - h2.setUserName("sa"); - h2.setPassword(""); - h2.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;"); - h2.setJdbcDriver("org.h2.Driver"); - h2.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); - h2.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); - inMemoryDataSources.put("h2", h2); - - UnitDataSourceDescriptor derby = new UnitDataSourceDescriptor(); - derby.setAdapterClassName(DerbyAdapter.class.getName()); - derby.setUserName("sa"); - derby.setPassword(""); - derby.setDataSourceUrl("jdbc:derby:target/testdb;create=true"); - derby.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver"); - derby.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); - derby.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); - inMemoryDataSources.put("derby", derby); - - UnitDataSourceDescriptor sqlite = new UnitDataSourceDescriptor(); - sqlite.setAdapterClassName(SQLiteAdapter.class.getName()); - sqlite.setUserName("sa"); - sqlite.setPassword(""); - sqlite.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text"); - sqlite.setJdbcDriver("org.sqlite.JDBC"); - sqlite.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); - sqlite.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); - inMemoryDataSources.put("sqlite", sqlite); - } - - @Override - public UnitDataSourceDescriptor get() throws ConfigurationException { + ConnectionProperties connectionProperties = new ConnectionProperties(propertiesMap); + LOGGER.info("Loaded " + connectionProperties.size() + " DataSource configurations from properties file"); String connectionKey = property(CONNECTION_NAME_KEY); if (connectionKey == null) { connectionKey = "hsql"; } - logger.info("Connection key: " + connectionKey); + LOGGER.info("Connection key: " + connectionKey); UnitDataSourceDescriptor connectionInfo = connectionProperties.getConnection(connectionKey); // attempt default if invalid key is specified if (connectionInfo == null) { - connectionInfo = inMemoryDataSources.get(connectionKey); + connectionInfo = checkInMemoryDataSource(connectionKey); } if (connectionInfo == null) { @@ -142,11 +92,62 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat throw new ConfigurationException("No connection info for key: " + connectionKey); } - logger.info("loaded connection info: " + connectionInfo); + LOGGER.info("loaded connection info: " + connectionInfo); return connectionInfo; } - private UnitDataSourceDescriptor checkTestContainersDataSource(String connectionKey) { + private static UnitDataSourceDescriptor checkInMemoryDataSource(String connectionKey) { + return switch (connectionKey) { + case "hsql" -> { + UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor(); + descriptor.setAdapterClassName(HSQLDBAdapter.class.getName()); + descriptor.setUserName("sa"); + descriptor.setPassword(""); + descriptor.setDataSourceUrl("jdbc:hsqldb:mem:aname;sql.regular_names=false"); + descriptor.setJdbcDriver("org.hsqldb.jdbcDriver"); + descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); + descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); + yield descriptor; + } + case "h2" -> { + UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor(); + descriptor.setAdapterClassName(H2Adapter.class.getName()); + descriptor.setUserName("sa"); + descriptor.setPassword(""); + descriptor.setDataSourceUrl("jdbc:h2:mem:aname;DB_CLOSE_DELAY=-1;"); + descriptor.setJdbcDriver("org.h2.Driver"); + descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); + descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); + yield descriptor; + } + case "derby" -> { + UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor(); + descriptor.setAdapterClassName(DerbyAdapter.class.getName()); + descriptor.setUserName("sa"); + descriptor.setPassword(""); + descriptor.setDataSourceUrl("jdbc:derby:target/testdb;create=true"); + descriptor.setJdbcDriver("org.apache.derby.jdbc.EmbeddedDriver"); + descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); + descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); + yield descriptor; + } + case "sqlite" -> { + UnitDataSourceDescriptor descriptor = new UnitDataSourceDescriptor(); + descriptor.setAdapterClassName(SQLiteAdapter.class.getName()); + descriptor.setUserName("sa"); + descriptor.setPassword(""); + descriptor.setDataSourceUrl("jdbc:sqlite:file:memdb?mode=memory&cache=shared&date_class=text"); + descriptor.setJdbcDriver("org.sqlite.JDBC"); + descriptor.setMinConnections(ConnectionProperties.MIN_CONNECTIONS); + descriptor.setMaxConnections(ConnectionProperties.MAX_CONNECTIONS); + yield descriptor; + } + default -> null; + }; + } + + private static UnitDataSourceDescriptor checkTestContainersDataSource(String connectionKey) { + // special case for the testcontainers profile if (!connectionKey.endsWith("-tc")) { return null; @@ -154,12 +155,21 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat String db = connectionKey.substring(0, connectionKey.length() - 3); - TestContainerProvider testContainerProvider = testContainerProviders.get(db); - if(testContainerProvider == null) { + TestContainerProvider testContainerProvider = switch (db) { + case "mysql" -> new MysqlContainerProvider(); + case "mariadb" -> new MariaDbContainerProvider(); + case "postgres" -> new PostgresContainerProvider(); + case "sqlserver" -> new SqlServerContainerProvider(); + case "oracle" -> new OracleContainerProvider(); + case "db2" -> new Db2ContainerProvider(); + default -> null; + }; + + if (testContainerProvider == null) { return null; } - String version = property(CONNECTION_DB_VERSION); + String version = System.getProperty(CONNECTION_DB_VERSION); JdbcDatabaseContainer<?> container = testContainerProvider.startContainer(version); UnitDataSourceDescriptor sourceInfo = new UnitDataSourceDescriptor(); @@ -173,23 +183,23 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat return sourceInfo; } - private File connectionPropertiesFile() { + private static File connectionPropertiesFile() { return new File(cayenneUserDir(), PROPERTIES_FILE); } - private File cayenneUserDir() { + private static File cayenneUserDir() { File homeDir = new File(System.getProperty("user.home")); return new File(homeDir, ".cayenne"); } - private UnitDataSourceDescriptor applyOverrides(UnitDataSourceDescriptor connectionInfo) { - String adapter = property(ADAPTER_KEY_MAVEN); - String user = property(USER_NAME_KEY_MAVEN); - String pass = property(PASSWORD_KEY_MAVEN); - String url = property(URL_KEY_MAVEN); - String driver = property(DRIVER_KEY_MAVEN); + private static UnitDataSourceDescriptor applyOverrides(UnitDataSourceDescriptor connectionInfo) { + String adapter = System.getProperty(ADAPTER_KEY_MAVEN); + String user = System.getProperty(USER_NAME_KEY_MAVEN); + String pass = System.getProperty(PASSWORD_KEY_MAVEN); + String url = System.getProperty(URL_KEY_MAVEN); + String driver = System.getProperty(DRIVER_KEY_MAVEN); // no overrides, do nothing - if(adapter == null && user == null && pass == null && url == null && driver == null) { + if (adapter == null && user == null && pass == null && url == null && driver == null) { return connectionInfo; } @@ -227,9 +237,4 @@ public class RuntimeCaseDataSourceDescriptorProvider implements Provider<UnitDat return connectionInfo; } - - private String property(String name) { - String p = System.getProperty(name); - return p == null || p.startsWith("$") ? null : p; - } } diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java b/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java similarity index 97% rename from cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java rename to cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java index 0c898e3b1..9f2e85cb9 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/UnitDataSourceDescriptor.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/UnitDataSourceDescriptor.java @@ -17,7 +17,7 @@ * under the License. ****************************************************************/ -package org.apache.cayenne.unit.runtime; +package org.apache.cayenne.unit; import org.apache.cayenne.configuration.DataSourceDescriptor; diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java deleted file mode 100644 index cb75a872a..000000000 --- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseDbAdapterProvider.java +++ /dev/null @@ -1,51 +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.runtime; - -import org.apache.cayenne.ConfigurationException; -import org.apache.cayenne.configuration.runtime.PkGeneratorFactoryProvider; -import org.apache.cayenne.dba.DbAdapter; -import org.apache.cayenne.dba.JdbcAdapter; -import org.apache.cayenne.dba.PkGenerator; -import org.apache.cayenne.di.AdhocObjectFactory; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.di.Provider; - -public class RuntimeCaseDbAdapterProvider implements Provider<JdbcAdapter> { - private UnitDataSourceDescriptor dataSourceInfo; - private AdhocObjectFactory objectFactory; - private PkGeneratorFactoryProvider pkGeneratorProvider; - - public RuntimeCaseDbAdapterProvider( - @Inject UnitDataSourceDescriptor dataSourceInfo, - @Inject AdhocObjectFactory objectFactory, - @Inject PkGeneratorFactoryProvider pkGeneratorProvider) { - this.dataSourceInfo = dataSourceInfo; - this.objectFactory = objectFactory; - this.pkGeneratorProvider = pkGeneratorProvider; - } - - public JdbcAdapter get() throws ConfigurationException { - JdbcAdapter jdbcAdapter = objectFactory.newInstance(DbAdapter.class, dataSourceInfo.getAdapterClassName()); - PkGenerator pkGenerator = pkGeneratorProvider.get(jdbcAdapter); - jdbcAdapter.setPkGenerator(pkGenerator); - pkGenerator.setAdapter(jdbcAdapter); - return jdbcAdapter; - } -} diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java index 11b8dce4d..35636964d 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/RuntimeCaseModule.java @@ -25,7 +25,6 @@ import org.apache.cayenne.access.types.*; import org.apache.cayenne.configuration.ConfigurationNameMapper; import org.apache.cayenne.configuration.Constants; import org.apache.cayenne.configuration.DataMapLoader; -import org.apache.cayenne.configuration.DataSourceDescriptor; import org.apache.cayenne.configuration.DefaultConfigurationNameMapper; import org.apache.cayenne.configuration.DefaultObjectStoreFactory; import org.apache.cayenne.configuration.DefaultRuntimeProperties; @@ -39,7 +38,6 @@ import org.apache.cayenne.configuration.xml.HandlerFactory; import org.apache.cayenne.configuration.xml.NoopDataChannelMetaData; import org.apache.cayenne.configuration.xml.XMLDataMapLoader; import org.apache.cayenne.configuration.xml.XMLReaderProvider; -import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dba.JdbcPkGenerator; import org.apache.cayenne.dba.PkGenerator; import org.apache.cayenne.dba.db2.DB2Adapter; @@ -65,11 +63,8 @@ import org.apache.cayenne.dba.sybase.SybasePkGenerator; import org.apache.cayenne.di.AdhocObjectFactory; import org.apache.cayenne.di.Binder; import org.apache.cayenne.di.ClassLoaderManager; -import org.apache.cayenne.di.DIRuntimeException; -import org.apache.cayenne.di.Inject; import org.apache.cayenne.di.Key; import org.apache.cayenne.di.Module; -import org.apache.cayenne.di.Provider; import org.apache.cayenne.di.spi.DefaultAdhocObjectFactory; import org.apache.cayenne.di.spi.DefaultClassLoaderManager; import org.apache.cayenne.log.JdbcEventLogger; @@ -78,13 +73,6 @@ import org.apache.cayenne.reflect.generic.DefaultValueComparisonStrategyFactory; import org.apache.cayenne.reflect.generic.ValueComparisonStrategyFactory; import org.apache.cayenne.resource.ClassLoaderResourceLocator; import org.apache.cayenne.resource.ResourceLocator; -import org.apache.cayenne.unit.testcontainers.Db2ContainerProvider; -import org.apache.cayenne.unit.testcontainers.MariaDbContainerProvider; -import org.apache.cayenne.unit.testcontainers.MysqlContainerProvider; -import org.apache.cayenne.unit.testcontainers.OracleContainerProvider; -import org.apache.cayenne.unit.testcontainers.PostgresContainerProvider; -import org.apache.cayenne.unit.testcontainers.SqlServerContainerProvider; -import org.apache.cayenne.unit.testcontainers.TestContainerProvider; import org.xml.sax.XMLReader; import java.util.Calendar; @@ -150,26 +138,6 @@ public class RuntimeCaseModule implements Module { binder.bind(RuntimeProperties.class).to(DefaultRuntimeProperties.class); binder.bind(ObjectMapRetainStrategy.class).to(DefaultObjectMapRetainStrategy.class); - binder.bindMap(TestContainerProvider.class) - .put("mysql", MysqlContainerProvider.class) - .put("mariadb", MariaDbContainerProvider.class) - .put("postgres", PostgresContainerProvider.class) - .put("sqlserver", SqlServerContainerProvider.class) - .put("oracle", OracleContainerProvider.class) - .put("db2", Db2ContainerProvider.class); - - binder.bind(UnitDataSourceDescriptor.class).toProvider(RuntimeCaseDataSourceDescriptorProvider.class); - binder.bind(DataSourceDescriptor.class).toProviderInstance(new Provider<>() { - @Inject - UnitDataSourceDescriptor unitDataSourceDescriptor; - - @Override - public DataSourceDescriptor get() throws DIRuntimeException { - return unitDataSourceDescriptor; - } - }); - binder.bind(DbAdapter.class).toProvider(RuntimeCaseDbAdapterProvider.class); - // this factory is a hack that allows to inject to DbAdapters loaded outside of // server runtime... BatchQueryBuilderFactory is hardcoded and whatever is placed // in the CoreModule is ignored
