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) {

Reply via email to