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 5011668ea834f92d406e49fc27828293b5cf32b7 Author: Andrus Adamchik <[email protected]> AuthorDate: Thu May 14 10:40:24 2026 -0400 tests cleanup - unwinding DI --- .../cayenne/unit/di/runtime/CayenneTestsEnv.java | 13 ++++--- .../apache/cayenne/unit/di/runtime/DBCleaner.java | 33 +++++------------- .../cayenne/unit/di/runtime/DBCleanerProvider.java | 40 ---------------------- .../cayenne/unit/di/runtime/RuntimeCaseModule.java | 1 - .../cayenne/unit/di/runtime/SchemaBuilder.java | 20 +++-------- 5 files changed, 22 insertions(+), 85 deletions(-) diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java index 4232e3044..5c0d11734 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/CayenneTestsEnv.java @@ -63,6 +63,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { private DataContext context; private DBHelper dbHelper; + private DBCleaner dbCleaner; private CayenneRuntime runtime; private CayenneTestsEnv(String project, Class<?>[] extraModules, boolean autoClean, boolean weakReferenceStrategy) { @@ -116,13 +117,16 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { this.runtime = INJECTOR.getInstance(CayenneRuntime.class); this.context = (DataContext) runtime.newContext(); this.dbHelper = INJECTOR.getInstance(DBHelper.class); + this.dbCleaner = new DBCleaner( + (FlavoredDBHelper) dbHelper, + INJECTOR.getInstance(SchemaBuilder.class), + runtime.getDataDomain().getDataMaps()); if (autoClean) { - DBCleaner cleaner = dbCleaner(); try { - cleaner.clean(); + dbCleaner.clean(); } catch (Exception ex) { - cleaner.clean(); + dbCleaner.clean(); } } } @@ -132,6 +136,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { TEST_SCOPE.shutdown(); this.context = null; this.dbHelper = null; + this.dbCleaner = null; this.runtime = null; } @@ -181,7 +186,7 @@ public class CayenneTestsEnv implements BeforeEachCallback, AfterEachCallback { } public DBCleaner dbCleaner() { - return INJECTOR.getInstance(DBCleaner.class); + return dbCleaner; } public DataSourceDescriptor dataSourceDescriptor() { diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleaner.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleaner.java index 5cd5a6548..03e3685ef 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleaner.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleaner.java @@ -19,45 +19,28 @@ package org.apache.cayenne.unit.di.runtime; -import org.apache.cayenne.configuration.ConfigurationTree; -import org.apache.cayenne.configuration.DataChannelDescriptor; -import org.apache.cayenne.configuration.xml.XMLDataChannelDescriptorLoader; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.di.Injector; import org.apache.cayenne.map.DataMap; import org.apache.cayenne.map.DbEntity; -import org.apache.cayenne.resource.URLResource; -import java.net.URL; import java.sql.SQLException; +import java.util.Collection; import java.util.List; public class DBCleaner { - private FlavoredDBHelper dbHelper; - private String location; + private final FlavoredDBHelper dbHelper; + private final SchemaBuilder schemaBuilder; + private final Collection<DataMap> dataMaps; - @Inject - private SchemaBuilder schemaBuilder; - - @Inject - private Injector injector; - - public DBCleaner(FlavoredDBHelper dbHelper, String location) { + public DBCleaner(FlavoredDBHelper dbHelper, SchemaBuilder schemaBuilder, Collection<DataMap> dataMaps) { this.dbHelper = dbHelper; - this.location = location; + this.schemaBuilder = schemaBuilder; + this.dataMaps = dataMaps; } public void clean() throws SQLException { - XMLDataChannelDescriptorLoader loader = new XMLDataChannelDescriptorLoader(); - injector.injectMembers(loader); - - URL url = getClass().getClassLoader().getResource(location); - ConfigurationTree<DataChannelDescriptor> tree = loader.load(new URLResource(url)); - - for (DataMap map : tree.getRootNode().getDataMaps()) { + for (DataMap map : dataMaps) { List<DbEntity> entities = schemaBuilder.dbEntitiesInDeleteOrder(map); - for (DbEntity entity : entities) { dbHelper.deleteAll(entity.getName()); } diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleanerProvider.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleanerProvider.java deleted file mode 100644 index e73c3f233..000000000 --- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/DBCleanerProvider.java +++ /dev/null @@ -1,40 +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.di.runtime; - -import org.apache.cayenne.ConfigurationException; -import org.apache.cayenne.di.Inject; -import org.apache.cayenne.di.Provider; -import org.apache.cayenne.test.jdbc.DBHelper; - -public class DBCleanerProvider implements Provider<DBCleaner> { - - @Inject - private DBHelper dbHelper; - - @Inject - protected Provider<RuntimeCaseProperties> propertiesProvider; - - @Override - public DBCleaner get() throws ConfigurationException { - return new DBCleaner((FlavoredDBHelper) dbHelper, propertiesProvider.get().getConfigurationLocation()); - } - -} diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java index 3e4da7384..33c0888d7 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/RuntimeCaseModule.java @@ -253,7 +253,6 @@ public class RuntimeCaseModule implements Module { binder.bind(RuntimeCaseExtraModules.class).to(RuntimeCaseExtraModules.class).in(testScope); binder.bind(CayenneRuntime.class).toProvider(CayenneRuntimeProvider.class).in(testScope); binder.bind(DBHelper.class).toProvider(FlavoredDBHelperProvider.class).in(testScope); - binder.bind(DBCleaner.class).toProvider(DBCleanerProvider.class).in(testScope); } // this class exists so that ToolsModule can call "initAllExtensions()" that is protected in CoreModuleExtender. diff --git a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/SchemaBuilder.java b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/SchemaBuilder.java index c147c7a74..1c37a7f44 100644 --- a/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/SchemaBuilder.java +++ b/cayenne/src/test/java/org/apache/cayenne/unit/di/runtime/SchemaBuilder.java @@ -55,9 +55,7 @@ import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.ListIterator; -import java.util.Map; import java.util.Set; -import java.util.TreeMap; /** * Default implementation of the AccessStack that has a single DataNode per DataMap. @@ -244,24 +242,16 @@ public class SchemaBuilder { * and returns an ordered list. */ private List<DbEntity> dbEntitiesInInsertOrder(DataMap map) { - TreeMap<String, DbEntity> dbEntityMap = new TreeMap<>(map.getDbEntityMap()); - List<DbEntity> entities = new ArrayList<>(dbEntityMap.values()); - List<DbEntity> excludedEntities = excludeEntities(entities); - entities.removeAll(excludedEntities); + DataMap localMap = domain.getDataMap(map.getName()); + List<DbEntity> entities = new ArrayList<>(localMap.getDbEntities()); + entities.removeAll(excludeEntities(entities)); domain.getEntitySorter().sortDbEntities(entities, false); return entities; } - protected List<DbEntity> dbEntitiesInDeleteOrder(DataMap dataMap) { - DataMap map = domain.getDataMap(dataMap.getName()); - Map<String, DbEntity> dbEntityMap = new TreeMap<>(map.getDbEntityMap()); - List<DbEntity> entities = new ArrayList<>(dbEntityMap.values()); - List<DbEntity> excludedEntities = excludeEntities(entities); - entities.removeAll(excludedEntities); - - domain.getEntitySorter().sortDbEntities(entities, true); - return entities; + public List<DbEntity> dbEntitiesInDeleteOrder(DataMap map) { + return dbEntitiesInInsertOrder(map).reversed(); } private List<DbEntity> excludeEntities(Collection<DbEntity> entities) {
