You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2026/05/14 19:41:09 UTC
(cayenne) 02/13: tests cleanup - unwinding DI
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 <an...@objectstyle.com>
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) {