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 0f7fdb51cab61226f4f4ad138d54ee492ff64c4b Author: Andrus Adamchik <[email protected]> AuthorDate: Fri May 15 18:13:41 2026 -0400 Test cleanup... * using AutoAdapter for tests instead of manually matching the DB --- .../access/DataContextExtendedTypeOperationsIT.java | 16 ++++++++++------ .../org/apache/cayenne/access/DataContextExtrasIT.java | 3 ++- .../translator/batch/DeleteBatchTranslatorIT.java | 3 --- .../translator/batch/InsertBatchTranslatorIT.java | 2 -- .../translator/batch/UpdateBatchTranslatorIT.java | 8 ++------ .../java/org/apache/cayenne/dba/AutoAdapterIT.java | 14 ++++++-------- .../java/org/apache/cayenne/unit/CayenneTestsEnv.java | 18 ++++++++++++------ .../cayenne/unit/runtime/AllTestsSchemaManager.java | 6 +----- 8 files changed, 33 insertions(+), 37 deletions(-) diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java index 0c61738dd..f89ba571d 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtendedTypeOperationsIT.java @@ -18,30 +18,34 @@ ****************************************************************/ package org.apache.cayenne.access; -import java.util.Arrays; - +import org.apache.cayenne.configuration.runtime.CoreModule; import org.apache.cayenne.query.CapsStrategy; import org.apache.cayenne.query.ObjectSelect; import org.apache.cayenne.query.SQLTemplate; import org.apache.cayenne.testdo.extended_type.ExtendedTypeEntity; import org.apache.cayenne.testdo.extended_type.StringET1; -import org.apache.cayenne.unit.runtime.CayenneProjects; +import org.apache.cayenne.testdo.extended_type.StringET1ExtendedType; 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.util.Arrays; + import static org.junit.jupiter.api.Assertions.assertEquals; public class DataContextExtendedTypeOperationsIT { @RegisterExtension - static final CayenneTestsEnv env = CayenneTestsEnv.forProject(CayenneProjects.EXTENDED_TYPE_PROJECT); + static final CayenneTestsEnv env = CayenneTestsEnv + .forProject(CayenneProjects.EXTENDED_TYPE_PROJECT) + .withExtraModules(b -> CoreModule.extend(b).addUserExtendedType(StringET1ExtendedType.class)); @Test public void storeExtendedType() { ExtendedTypeEntity e1 = env.context().newObject(ExtendedTypeEntity.class); e1.setName(new StringET1("X")); - e1.getObjectContext().commitChanges(); + env.context().commitChanges(); SQLTemplate checkQ = new SQLTemplate( ExtendedTypeEntity.class, @@ -62,7 +66,7 @@ public class DataContextExtendedTypeOperationsIT { ExtendedTypeEntity e3 = e1.getObjectContext().newObject(ExtendedTypeEntity.class); e3.setName(new StringET1("Z")); - e1.getObjectContext().commitChanges(); + env.context().commitChanges(); ObjectSelect<ExtendedTypeEntity> query = ObjectSelect.query(ExtendedTypeEntity.class) .where(ExtendedTypeEntity.NAME.in(new StringET1("X"), new StringET1("Y"))); diff --git a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java index 6852efa4e..503fd3fee 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/DataContextExtrasIT.java @@ -25,6 +25,7 @@ import org.apache.cayenne.DataRow; import org.apache.cayenne.ObjectId; import org.apache.cayenne.PersistenceState; import org.apache.cayenne.Persistent; +import org.apache.cayenne.dba.DbAdapter; import org.apache.cayenne.dba.JdbcAdapter; import org.apache.cayenne.dba.JdbcPkGenerator; import org.apache.cayenne.dba.PkGenerator; @@ -263,7 +264,7 @@ public class DataContextExtrasIT { .next() .getAdapter() .getPkGenerator(); - JdbcAdapter adapter = (JdbcAdapter) domain + DbAdapter adapter = domain .getDataNodes() .iterator() .next() diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java index a351f11dd..e31dbcea1 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/DeleteBatchTranslatorIT.java @@ -117,7 +117,6 @@ public class DeleteBatchTranslatorIT { List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID")); DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, Collections.emptySet(), 1); - JdbcAdapter adapter = (JdbcAdapter) this.adapter; DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter); String generatedSql = builder.getSql(); @@ -148,8 +147,6 @@ public class DeleteBatchTranslatorIT { DeleteBatchQuery deleteQuery = new DeleteBatchQuery(entity, idAttributes, nullAttributes, 1); - JdbcAdapter adapter = (JdbcAdapter) this.adapter; - DeleteBatchTranslator builder = new DeleteBatchTranslator(deleteQuery, adapter); String generatedSql = builder.getSql(); diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java index b4471a522..46542bb76 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/InsertBatchTranslatorIT.java @@ -91,8 +91,6 @@ public class InsertBatchTranslatorIT { entity.getDataMap().setQuotingSQLIdentifiers(true); - JdbcAdapter adapter = (JdbcAdapter) this.adapter; - InsertBatchQuery insertQuery = new InsertBatchQuery(entity, 1); InsertBatchTranslator builder = new InsertBatchTranslator(insertQuery, adapter); String generatedSql = builder.getSql(); diff --git a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java index a5a25c8df..37a73e80d 100644 --- a/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/access/translator/batch/UpdateBatchTranslatorIT.java @@ -121,9 +121,7 @@ public class UpdateBatchTranslatorIT { List<DbAttribute> idAttributes = Collections.singletonList(entity.getAttribute("LOCKING_TEST_ID")); List<DbAttribute> updatedAttributes = Collections.singletonList(entity.getAttribute("DESCRIPTION")); - UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, - Collections.emptySet(), 1); - JdbcAdapter adapter = (JdbcAdapter) this.adapter; + UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, Collections.emptySet(), 1); UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter); String generatedSql = builder.getSql(); @@ -153,9 +151,7 @@ public class UpdateBatchTranslatorIT { Collection<String> nullAttributes = Collections.singleton("NAME"); - UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, - nullAttributes, 1); - JdbcAdapter adapter = (JdbcAdapter) this.adapter; + UpdateBatchQuery updateQuery = new UpdateBatchQuery(entity, idAttributes, updatedAttributes, nullAttributes, 1); UpdateBatchTranslator builder = new UpdateBatchTranslator(updateQuery, adapter); String generatedSql = builder.getSql(); diff --git a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java index 920237f4f..5d0c012d8 100644 --- a/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java +++ b/cayenne/src/test/java/org/apache/cayenne/dba/AutoAdapterIT.java @@ -29,10 +29,7 @@ import org.apache.cayenne.unit.CayenneTestsEnv; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.RegisterExtension; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertSame; +import static org.junit.jupiter.api.Assertions.*; public class AutoAdapterIT { @@ -48,16 +45,17 @@ public class AutoAdapterIT { @Test public void createSQLTemplateAction() { - AutoAdapter autoAdapter = new AutoAdapter(() -> env.dataNode().getAdapter(), NoopJdbcEventLogger.getInstance()); - SQLTemplateAction action = (SQLTemplateAction) autoAdapter.getAction(new SQLTemplate(Artist.class, - "select * from artist"), env.dataNode()); + assertInstanceOf(AutoAdapter.class, env.dataNode().getAdapter()); + AutoAdapter autoAdapter = (AutoAdapter) env.dataNode().getAdapter(); + + SQLTemplateAction action = (SQLTemplateAction) autoAdapter + .getAction(new SQLTemplate(Artist.class, "select * from artist"), env.dataNode()); // it is important for SQLTemplateAction to be used with unwrapped adapter, // as the adapter class name is used as a key to the correct SQL template. assertNotNull(action.getAdapter()); assertFalse(action.getAdapter() instanceof AutoAdapter); - assertSame(env.dataNode().getAdapter(), action.getAdapter()); } @Test 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 074793fa0..45210734c 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/CayenneTestsEnv.java @@ -28,8 +28,10 @@ import org.apache.cayenne.access.translator.batch.BatchTranslatorFactory; import org.apache.cayenne.access.translator.select.SelectTranslatorFactory; import org.apache.cayenne.configuration.Constants; import org.apache.cayenne.configuration.DataMapLoader; +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.dba.DbAdapter; import org.apache.cayenne.di.AdhocObjectFactory; import org.apache.cayenne.di.Binder; @@ -53,6 +55,7 @@ import org.junit.jupiter.api.extension.AfterEachCallback; import org.junit.jupiter.api.extension.BeforeEachCallback; import org.junit.jupiter.api.extension.ExtensionContext; +import javax.sql.DataSource; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -183,17 +186,24 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { BatchTranslatorFactory batchTranslatorFactory = runtimeInjector.getInstance(BatchTranslatorFactory.class); SelectTranslatorFactory selectTranslatorFactory = runtimeInjector.getInstance(SelectTranslatorFactory.class); SQLTemplateProcessor sqlTemplateProcessor = runtimeInjector.getInstance(SQLTemplateProcessor.class); - DbAdapter adapter = runtimeInjector.getInstance(DbAdapter.class); DataNode lastNode = null; for (DataMap dataMap : domain.getDataMaps()) { + + DataSource dataSource = DATA_SOURCES.dataSource(dataMap.getName()); + DataNode node = new TestTelemetryDataNode(dataMap.getName()); node.setJdbcEventLogger(jdbcEventLogger); node.setRowReaderFactory(rowReaderFactory); node.setBatchTranslatorFactory(batchTranslatorFactory); node.setSelectTranslatorFactory(selectTranslatorFactory); - node.setDataSource(DATA_SOURCES.dataSource(dataMap.getName())); + node.setDataSource(dataSource); + + // this gives us AutoAdapter + DbAdapter adapter = runtimeInjector.getInstance(DbAdapterFactory.class) + .createAdapter(new DataNodeDescriptor(), dataSource); + node.setAdapter(adapter); node.setSchemaUpdateStrategy(new SkipSchemaUpdateStrategy()); node.setSqlTemplateProcessor(sqlTemplateProcessor); @@ -278,10 +288,6 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { @Override public void configure(Binder binder) { - // TODO: factor it out of INJECTOR - // a fresh DbAdapter per call — RuntimeCaseDbAdapterProvider is unscoped in the test injector - binder.bind(DbAdapter.class).toProviderInstance(() -> INJECTOR.getInstance(DbAdapter.class)); - binder.bind(UnitDbAdapter.class).toInstance(INJECTOR.getInstance(UnitDbAdapter.class)); binder.bind(TestDataSources.class).toInstance(DATA_SOURCES); diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java index 12ca7dc28..367c222ce 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/runtime/AllTestsSchemaManager.java @@ -37,7 +37,6 @@ import org.apache.cayenne.map.DbAttribute; import org.apache.cayenne.map.DbEntity; import org.apache.cayenne.map.Procedure; import org.apache.cayenne.resource.URLResource; -import org.apache.cayenne.testdo.extended_type.StringET1ExtendedType; import org.apache.cayenne.unit.TestDataSources; import org.apache.cayenne.unit.dba.UnitDbAdapter; import org.slf4j.Logger; @@ -124,10 +123,7 @@ public class AllTestsSchemaManager { node.setJdbcEventLogger(jdbcEventLogger); node.setAdapter(dbAdapter); node.setDataSource(dataSourceFactory.sharedDataSource()); - - // setup test extended types - node.getAdapter().getExtendedTypes().registerType(new StringET1ExtendedType()); - + // tweak mapping with a delegate for (Procedure proc : map.getProcedures()) { unitDbAdapter.tweakProcedure(proc);
