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 8ba638365c6475e137a3a103a515ed1f8fb3f164
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun Aug 30 13:34:02 2026 -0400

    Query cleanup .. route() can be implemented at the top
---
 .../org/apache/cayenne/query/AbstractQuery.java    | 18 ----------------
 .../java/org/apache/cayenne/query/BatchQuery.java  |  8 --------
 .../java/org/apache/cayenne/query/EJBQLQuery.java  | 12 -----------
 .../org/apache/cayenne/query/FluentSelect.java     |  2 +-
 .../main/java/org/apache/cayenne/query/Query.java  | 15 +++++++++++++-
 .../java/org/apache/cayenne/query/SQLTemplate.java | 24 +++++++++++-----------
 6 files changed, 27 insertions(+), 52 deletions(-)

diff --git a/cayenne/src/main/java/org/apache/cayenne/query/AbstractQuery.java 
b/cayenne/src/main/java/org/apache/cayenne/query/AbstractQuery.java
index 71d5401cc..f3dfa8fa5 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/AbstractQuery.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/AbstractQuery.java
@@ -19,7 +19,6 @@
 
 package org.apache.cayenne.query;
 
-import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.EntityResolver;
@@ -98,21 +97,4 @@ public abstract class AbstractQuery extends CacheableQuery {
      * @since 1.2
      */
     public abstract SQLAction createSQLAction(SQLActionVisitor visitor);
-
-    /**
-     * Implements default routing mechanism relying on the EntityResolver to 
find DataMap
-     * based on the query root. This mechanism should be sufficient for most 
queries that
-     * "know" their root.
-     * 
-     * @since 1.2
-     */
-    public void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery) {
-        DataMap map = getMetaData(resolver).getDataMap();
-
-        if (map == null) {
-            throw new CayenneRuntimeException("No DataMap found, can't route 
query %s", this);
-        }
-
-        router.route(router.nodeForDataMap(map), this, substitutedQuery);
-    }
 }
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/BatchQuery.java 
b/cayenne/src/main/java/org/apache/cayenne/query/BatchQuery.java
index 43cff829b..a4e7cfe32 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/BatchQuery.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/BatchQuery.java
@@ -71,14 +71,6 @@ public abstract class BatchQuery implements Query {
         };
     }
 
-    /**
-     * @since 1.2
-     */
-    @Override
-    public void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery) {
-        router.route(router.nodeForDataMap(dbEntity.getDataMap()), this, 
substitutedQuery);
-    }
-
     /**
      * Calls "batchAction" on the visitor.
      * 
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/EJBQLQuery.java 
b/cayenne/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
index dd5a06dcb..f49436d7b 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/EJBQLQuery.java
@@ -22,11 +22,9 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ejbql.EJBQLCompiledExpression;
 import org.apache.cayenne.ejbql.EJBQLException;
 import org.apache.cayenne.ejbql.EJBQLParserFactory;
-import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
 
 /**
@@ -78,16 +76,6 @@ public class EJBQLQuery extends CacheableQuery {
         return metadata;
     }
 
-    public void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery) {
-        DataMap map = getMetaData(resolver).getDataMap();
-
-        if (map == null) {
-            throw new CayenneRuntimeException("No DataMap found, can't route 
query %s", this);
-        }
-
-        router.route(router.nodeForDataMap(map), this, substitutedQuery);
-    }
-
     public SQLAction createSQLAction(SQLActionVisitor visitor) {
         return visitor.ejbqlAction(this);
     }
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/FluentSelect.java 
b/cayenne/src/main/java/org/apache/cayenne/query/FluentSelect.java
index 093fc2731..e7cfb1512 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/FluentSelect.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/FluentSelect.java
@@ -493,7 +493,7 @@ public abstract class FluentSelect<T, S extends 
FluentSelect<T, S>> extends Abst
 
     @Override
     public void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery) {
-        super.route(router, resolver, substitutedQuery);
+        Select.super.route(router, resolver, substitutedQuery);
 
         // suppress prefetches for paginated queries.. instead prefetches will 
be resolved per row...
         if (getPageSize() <= 0) {
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/Query.java 
b/cayenne/src/main/java/org/apache/cayenne/query/Query.java
index 423f83319..aae9a33e4 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/Query.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/Query.java
@@ -19,7 +19,9 @@
 
 package org.apache.cayenne.query;
 
+import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
 
 import java.io.Serializable;
@@ -45,10 +47,21 @@ public interface Query extends Serializable {
      * {@link QueryRouter#route(DataNode, Query, Query)} callback method to 
route
      * itself. Query can create one or more substitute queries or even provide 
its own
      * DataNode to execute itself.
+     * <p>
+     * The default implementation relies on the EntityResolver to find the 
DataMap based on
+     * the query metadata. This mechanism is sufficient for most queries that 
"know" their root.
      * 
      * @since 1.2
      */
-    void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery);
+    default void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery) {
+        DataMap map = getMetaData(resolver).getDataMap();
+
+        if (map == null) {
+            throw new CayenneRuntimeException("No DataMap found, can't route 
query %s", this);
+        }
+
+        router.route(router.nodeForDataMap(map), this, substitutedQuery);
+    }
 
     /**
      * A callback method invoked by Cayenne during the final execution phase 
of the query
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/SQLTemplate.java 
b/cayenne/src/main/java/org/apache/cayenne/query/SQLTemplate.java
index dadbeafca..157541adb 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/SQLTemplate.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/SQLTemplate.java
@@ -19,6 +19,14 @@
 
 package org.apache.cayenne.query;
 
+import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.access.DataNode;
+import org.apache.cayenne.map.DataMap;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.map.EntityResolver;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.map.SQLResult;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -30,14 +38,6 @@ import java.util.Map;
 import java.util.function.Function;
 import java.util.stream.Stream;
 
-import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.access.DataNode;
-import org.apache.cayenne.map.DataMap;
-import org.apache.cayenne.map.DbEntity;
-import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.map.ObjEntity;
-import org.apache.cayenne.map.SQLResult;
-
 /**
  * A query that executes unchanged (except for template preprocessing) "raw" 
SQL
  * specified by the user. <h3>Template Script</h3>
@@ -130,14 +130,14 @@ public class SQLTemplate extends AbstractQuery {
        public void route(QueryRouter router, EntityResolver resolver, Query 
substitutedQuery) {
                DataMap map = getMetaData(resolver).getDataMap();
 
-               DataNode engine;
+               DataNode dataNode;
                if (map != null) {
-                       engine = router.nodeForDataMap(map);
+                       dataNode = router.nodeForDataMap(map);
                } else {
-                       engine = router.nodeForName(getDataNodeName());
+                       dataNode = router.nodeForName(getDataNodeName());
                }
 
-               router.route(engine, this, substitutedQuery);
+               router.route(dataNode, this, substitutedQuery);
        }
 
        /**

Reply via email to