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 4eb038c8ad767c22990ca212d4d055c6ee0e6a22
Author: Andrus Adamchik <[email protected]>
AuthorDate: Sun Aug 30 11:43:35 2026 -0400

    refactoring Select - make all trivially implemented common methods 
"default" methods of the interface
---
 .../org/apache/cayenne/query/FluentSelect.java     | 24 ----------------------
 .../org/apache/cayenne/query/MappedSelect.java     | 22 --------------------
 .../java/org/apache/cayenne/query/SQLSelect.java   | 23 ---------------------
 .../main/java/org/apache/cayenne/query/Select.java | 22 +++++++++++++++-----
 .../java/org/apache/cayenne/query/SelectById.java  | 23 ---------------------
 5 files changed, 17 insertions(+), 97 deletions(-)

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 5491c2047..093fc2731 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/FluentSelect.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/FluentSelect.java
@@ -29,10 +29,6 @@ import java.util.Map;
 import java.util.function.Function;
 
 import org.apache.cayenne.CayenneRuntimeException;
-import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.ResultBatchIterator;
-import org.apache.cayenne.ResultIterator;
-import org.apache.cayenne.ResultIteratorCallback;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.exp.ExpressionFactory;
 import org.apache.cayenne.exp.property.Property;
@@ -485,30 +481,10 @@ public abstract class FluentSelect<T, S extends 
FluentSelect<T, S>> extends Abst
         }
     }
 
-    @Override
-    public List<T> select(ObjectContext context) {
-        return context.select(this);
-    }
 
-    @Override
-    public T selectOne(ObjectContext context) {
-        return context.selectOne(this);
-    }
 
-    @Override
-    public void iterate(ObjectContext context, ResultIteratorCallback<T> 
callback) {
-        context.iterate(this, callback);
-    }
 
-    @Override
-    public ResultIterator<T> iterator(ObjectContext context) {
-        return context.iterator(this);
-    }
 
-    @Override
-    public ResultBatchIterator<T> batchIterator(ObjectContext context, int 
size) {
-        return context.batchIterator(this, size);
-    }
 
     @Override
     public SQLAction createSQLAction(SQLActionVisitor visitor) {
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/MappedSelect.java 
b/cayenne/src/main/java/org/apache/cayenne/query/MappedSelect.java
index c6322221f..f87518113 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/MappedSelect.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/MappedSelect.java
@@ -24,9 +24,6 @@ import java.util.Map;
 
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.ResultBatchIterator;
-import org.apache.cayenne.ResultIterator;
-import org.apache.cayenne.ResultIteratorCallback;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.map.QueryDescriptor;
 
@@ -151,34 +148,15 @@ public class MappedSelect<T> extends AbstractMappedQuery 
implements Select<T> {
         return (MappedSelect<T>) super.param(name, value);
     }
 
-    public List<T> select(ObjectContext context) {
-        return context.select(this);
-    }
 
-    @Override
-    public T selectOne(ObjectContext context) {
-        return context.selectOne(this);
-    }
 
     @Override
     public T selectFirst(ObjectContext context) {
         return context.selectFirst(limit(1));
     }
 
-    @Override
-    public void iterate(ObjectContext context, ResultIteratorCallback<T> 
callback) {
-        context.iterate(this, callback);
-    }
 
-    @Override
-    public ResultIterator<T> iterator(ObjectContext context) {
-        return context.iterator(this);
-    }
 
-    @Override
-    public ResultBatchIterator<T> batchIterator(ObjectContext context, int 
size) {
-        return context.batchIterator(this, size);
-    }
 
     @Override
     protected Query createReplacementQuery(EntityResolver resolver) {
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/SQLSelect.java 
b/cayenne/src/main/java/org/apache/cayenne/query/SQLSelect.java
index 4c7b93d6d..8b122a5e4 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/SQLSelect.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/SQLSelect.java
@@ -29,9 +29,6 @@ import java.util.function.Function;
 import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
-import org.apache.cayenne.ResultBatchIterator;
-import org.apache.cayenne.ResultIterator;
-import org.apache.cayenne.ResultIteratorCallback;
 import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.EntityResolver;
 
@@ -199,35 +196,15 @@ public class SQLSelect<T> extends IndirectQuery 
implements Select<T> {
                this.pageSize = QueryMetadata.PAGE_SIZE_DEFAULT;
        }
 
-       @Override
-       public List<T> select(ObjectContext context) {
-               return context.select(this);
-       }
 
-       @Override
-       public T selectOne(ObjectContext context) {
-               return context.selectOne(this);
-       }
 
        @Override
        public T selectFirst(ObjectContext context) {
                return context.selectFirst(limit(1));
        }
 
-       @Override
-       public void iterate(ObjectContext context, ResultIteratorCallback<T> 
callback) {
-               context.iterate(this, callback);
-       }
 
-       @Override
-       public ResultIterator<T> iterator(ObjectContext context) {
-               return context.iterator(this);
-       }
 
-       @Override
-       public ResultBatchIterator<T> batchIterator(ObjectContext context, int 
size) {
-               return context.batchIterator(this, size);
-       }
 
        public boolean isFetchingDataRows() {
                return isFetchingDataRows;
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/Select.java 
b/cayenne/src/main/java/org/apache/cayenne/query/Select.java
index eddc7d669..bbcc3bb6a 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/Select.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/Select.java
@@ -39,7 +39,9 @@ public interface Select<T> extends Query {
         *
         * @since 4.0
         */
-       List<T> select(ObjectContext context);
+       default List<T> select(ObjectContext context) {
+               return context.select(this);
+       }
 
        /**
         * Selects a single object using provided context. The query is 
expected to
@@ -51,7 +53,9 @@ public interface Select<T> extends Query {
         *
         * @since 4.0
         */
-       T selectOne(ObjectContext context);
+       default T selectOne(ObjectContext context) {
+               return context.selectOne(this);
+       }
 
        /**
         * Selects a single object using provided context. The query itself can
@@ -71,6 +75,8 @@ public interface Select<T> extends Query {
         *
         * @since 4.0
         */
+       // TODO: downstream implementors call context.selectFirst(limit(1)), so 
it has side effect
+       //  on "this" query. Limit optimizes generated SQL, so it is needed, 
but this is dirty
        T selectFirst(ObjectContext context);
 
        /**
@@ -83,7 +89,9 @@ public interface Select<T> extends Query {
         *
         * @since 4.0
         */
-       void iterate(ObjectContext context, ResultIteratorCallback<T> callback);
+       default void iterate(ObjectContext context, ResultIteratorCallback<T> 
callback) {
+               context.iterate(this, callback);
+       }
 
        /**
         * Creates a ResultIterator based on the provided context. It is usually
@@ -98,7 +106,9 @@ public interface Select<T> extends Query {
         *
         * @since 4.0
         */
-       ResultIterator<T> iterator(ObjectContext context);
+       default ResultIterator<T> iterator(ObjectContext context) {
+               return context.iterator(this);
+       }
 
        /**
         * Creates a ResultBatchIterator based on the provided context and batch
@@ -109,5 +119,7 @@ public interface Select<T> extends Query {
         *
         * @since 4.0
         */
-       ResultBatchIterator<T> batchIterator(ObjectContext context, int size);
+       default ResultBatchIterator<T> batchIterator(ObjectContext context, int 
size) {
+               return context.batchIterator(this, size);
+       }
 }
diff --git a/cayenne/src/main/java/org/apache/cayenne/query/SelectById.java 
b/cayenne/src/main/java/org/apache/cayenne/query/SelectById.java
index 4796a56fc..d5e11659e 100644
--- a/cayenne/src/main/java/org/apache/cayenne/query/SelectById.java
+++ b/cayenne/src/main/java/org/apache/cayenne/query/SelectById.java
@@ -22,9 +22,6 @@ import org.apache.cayenne.CayenneRuntimeException;
 import org.apache.cayenne.DataRow;
 import org.apache.cayenne.ObjectContext;
 import org.apache.cayenne.ObjectId;
-import org.apache.cayenne.ResultBatchIterator;
-import org.apache.cayenne.ResultIterator;
-import org.apache.cayenne.ResultIteratorCallback;
 import org.apache.cayenne.exp.Expression;
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.map.ObjEntity;
@@ -452,35 +449,15 @@ public class SelectById<T> extends IndirectQuery 
implements Select<T> {
                this(root, idSpec, false);
        }
 
-       @Override
-       public List<T> select(ObjectContext context) {
-               return context.select(this);
-       }
 
-       @Override
-       public T selectOne(ObjectContext context) {
-               return context.selectOne(this);
-       }
 
        @Override
        public T selectFirst(ObjectContext context) {
                return context.selectFirst(this);
        }
 
-       @Override
-       public void iterate(ObjectContext context, ResultIteratorCallback<T> 
callback) {
-               context.iterate(this, callback);
-       }
 
-       @Override
-       public ResultIterator<T> iterator(ObjectContext context) {
-               return context.iterator(this);
-       }
 
-       @Override
-       public ResultBatchIterator<T> batchIterator(ObjectContext context, int 
size) {
-               return context.batchIterator(this, size);
-       }
 
        /**
         * Instructs Cayenne to look for query results in the "local" cache when

Reply via email to