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
