From 840c5f8992dc1292a4d12caeed713e79f2061352 Mon Sep 17 00:00:00 2001 From: Robin Bygrave Date: Fri, 29 Apr 2016 08:43:30 +1200 Subject: [PATCH] #679 - Remove SqlQuery.setListener() ... migrate to SqlQuery.findEach() or SqlQuery.findEachWhile() --- src/main/java/com/avaje/ebean/SqlQuery.java | 13 -------- .../com/avaje/ebean/SqlQueryListener.java | 33 ------------------- .../avaje/ebeaninternal/api/SpiSqlQuery.java | 6 ---- .../query/DefaultRelationalQueryEngine.java | 8 +---- .../querydefn/DefaultRelationalQuery.java | 23 ------------- .../tests/query/sqlquery/SqlQueryTests.java | 23 ------------- 6 files changed, 1 insertion(+), 105 deletions(-) delete mode 100644 src/main/java/com/avaje/ebean/SqlQueryListener.java diff --git a/src/main/java/com/avaje/ebean/SqlQuery.java b/src/main/java/com/avaje/ebean/SqlQuery.java index f42f7eb9c..3dd97b8ef 100644 --- a/src/main/java/com/avaje/ebean/SqlQuery.java +++ b/src/main/java/com/avaje/ebean/SqlQuery.java @@ -102,19 +102,6 @@ public interface SqlQuery extends Serializable { */ SqlQuery setParameter(int position, Object value); - /** - * Set a listener to process the query on a row by row basis. - *

- * It this case the rows are not loaded into the persistence context and - * instead can be processed by the query listener. - *

- *

- * Use this when you want to process a large query and do not want to hold the - * entire query result in memory. - *

- */ - SqlQuery setListener(SqlQueryListener queryListener); - /** * Set the index of the first row of the results to return. */ diff --git a/src/main/java/com/avaje/ebean/SqlQueryListener.java b/src/main/java/com/avaje/ebean/SqlQueryListener.java deleted file mode 100644 index 411cd27e2..000000000 --- a/src/main/java/com/avaje/ebean/SqlQueryListener.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.avaje.ebean; - -/** - * Provides a mechanism for processing a SqlQuery one SqlRow at a time. - *

- * This is useful when the query will return a large number of results and you - * want to process the beans one at a time rather than have all of the beans in - * memory at once. - *

- * - *
- * SqlQueryListener listener = ...;
- *    
- * SqlQuery query  = Ebean.createSqlQuery("my.large.query");
- *    
- * // set the listener that will process each row one at a time
- * query.setListener(listener);
- *    
- * // execute the query. Note that the returned
- * // list will be empty ... so don't bother assigning it...
- * query.findList();
- * 
- */ -public interface SqlQueryListener { - - /** - * Process the bean that has just been read. - *

- * Note this bean will not be added to the List Set or Map. - *

- */ - void process(SqlRow bean); -} diff --git a/src/main/java/com/avaje/ebeaninternal/api/SpiSqlQuery.java b/src/main/java/com/avaje/ebeaninternal/api/SpiSqlQuery.java index 45797401b..0087457fe 100644 --- a/src/main/java/com/avaje/ebeaninternal/api/SpiSqlQuery.java +++ b/src/main/java/com/avaje/ebeaninternal/api/SpiSqlQuery.java @@ -3,7 +3,6 @@ package com.avaje.ebeaninternal.api; import java.sql.PreparedStatement; import com.avaje.ebean.SqlQuery; -import com.avaje.ebean.SqlQueryListener; /** * SQL query - Internal extension to SqlQuery. @@ -20,11 +19,6 @@ public interface SpiSqlQuery extends SqlQuery { */ String getQuery(); - /** - * Return the queryListener. - */ - SqlQueryListener getListener(); - /** * Return the first row to fetch. */ diff --git a/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java b/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java index 7844af364..7c25a85ad 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java +++ b/src/main/java/com/avaje/ebeaninternal/server/query/DefaultRelationalQueryEngine.java @@ -2,7 +2,6 @@ package com.avaje.ebeaninternal.server.query; import com.avaje.ebean.QueryEachConsumer; import com.avaje.ebean.QueryEachWhileConsumer; -import com.avaje.ebean.SqlQueryListener; import com.avaje.ebean.SqlRow; import com.avaje.ebeaninternal.api.SpiSqlQuery; import com.avaje.ebeaninternal.server.core.Message; @@ -90,7 +89,6 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine { List rows = new ArrayList(); SpiSqlQuery query = request.getQuery(); - SqlQueryListener listener = query.getListener(); while (request.next()) { SqlRow bean; @@ -101,11 +99,7 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine { bean = readRow(request); } if (bean != null) { - if (listener != null) { - listener.process(bean); - } else { - rows.add(bean); - } + rows.add(bean); loadRowCount++; if (loadRowCount == maxRows) { // break, as we have hit the max rows to fetch... diff --git a/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultRelationalQuery.java b/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultRelationalQuery.java index 19ccbaf82..e5c95a14d 100644 --- a/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultRelationalQuery.java +++ b/src/main/java/com/avaje/ebeaninternal/server/querydefn/DefaultRelationalQuery.java @@ -4,7 +4,6 @@ import com.avaje.ebean.EbeanServer; import com.avaje.ebean.QueryEachConsumer; import com.avaje.ebean.QueryEachWhileConsumer; import com.avaje.ebean.SqlFutureList; -import com.avaje.ebean.SqlQueryListener; import com.avaje.ebean.SqlRow; import com.avaje.ebeaninternal.api.BindParams; import com.avaje.ebeaninternal.api.SpiSqlQuery; @@ -23,8 +22,6 @@ public class DefaultRelationalQuery implements SpiSqlQuery { private final transient EbeanServer server; - private transient SqlQueryListener queryListener; - private String query; private int firstRow; @@ -94,26 +91,6 @@ public class DefaultRelationalQuery implements SpiSqlQuery { return this; } - /** - * Return the findListener is one has been set. - */ - public SqlQueryListener getListener() { - return queryListener; - } - - /** - * Set a listener. This is designed for large fetches - * where lots are rows are to be processed and instead of - * returning all the rows they are processed one at a time. - *

- * Note that the returning List Set or Map will be empty. - *

- */ - public DefaultRelationalQuery setListener(SqlQueryListener queryListener) { - this.queryListener = queryListener; - return this; - } - public String toString() { return "SqlQuery [" + query + "]"; } diff --git a/src/test/java/com/avaje/tests/query/sqlquery/SqlQueryTests.java b/src/test/java/com/avaje/tests/query/sqlquery/SqlQueryTests.java index 1775390de..235c2c1c6 100644 --- a/src/test/java/com/avaje/tests/query/sqlquery/SqlQueryTests.java +++ b/src/test/java/com/avaje/tests/query/sqlquery/SqlQueryTests.java @@ -4,7 +4,6 @@ import com.avaje.ebean.Ebean; import com.avaje.ebean.QueryEachConsumer; import com.avaje.ebean.QueryEachWhileConsumer; import com.avaje.ebean.SqlQuery; -import com.avaje.ebean.SqlQueryListener; import com.avaje.ebean.SqlRow; import com.avaje.tests.model.basic.Order; import com.avaje.tests.model.basic.ResetBasicData; @@ -16,28 +15,6 @@ import static org.junit.Assert.assertEquals; public class SqlQueryTests { - @Test - public void setListener() { - - ResetBasicData.reset(); - - int expectedRows = Ebean.find(Order.class).findRowCount(); - - final AtomicInteger count = new AtomicInteger(); - - SqlQuery sqlQuery = Ebean.createSqlQuery("select * from o_order"); - sqlQuery.setListener(new SqlQueryListener() { - @Override - public void process(SqlRow bean) { - System.out.println("process row "+bean); - count.incrementAndGet(); - } - }); - // returns an empty list - sqlQuery.findList(); - assertEquals(expectedRows, count.get()); - } - @Test public void findEach() {