diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java index 35c93eff7b..6e96ab3b04 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/FetchTests.java @@ -68,8 +68,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Queue; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; import junit.framework.Assert; @@ -1479,47 +1477,6 @@ extends BaseTest> later; - Result result; - - int activeCount = Thread.activeCount(); - - later = create().selectFrom(TBook()).orderBy(TBook_ID()).fetchLater(); - - // That's too fast for the query to be done, mostly - assertFalse(later.isDone()); - assertFalse(later.isCancelled()); - assertEquals(activeCount + 1, Thread.activeCount()); - - // Get should make sure the internal thread is terminated - result = later.get(); - Thread.sleep(500); - assertEquals(activeCount, Thread.activeCount()); - - // Subsequent gets are ok - result = later.get(); - result = later.get(1000, TimeUnit.MILLISECONDS); - - // Check the data - assertEquals(4, result.size()); - assertEquals(BOOK_IDS, result.getValues(TBook_ID())); - - // Start new threads - later = create().selectFrom(TBook()).orderBy(TBook_ID()).fetchLater(); - later = create().selectFrom(TBook()).orderBy(TBook_ID()).fetchLater(); - later = create().selectFrom(TBook()).orderBy(TBook_ID()).fetchLater(); - assertEquals(activeCount + 3, Thread.activeCount()); - - // This should be enough to ensure that GC will collect finished threads - later = null; - System.gc(); - System.gc(); - Thread.sleep(500); - assertEquals(activeCount, Thread.activeCount()); - } - @Test public void testFetchResultSet() throws Exception { for (int i = 0; i < 2; i++) { diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/PlainSQLTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/PlainSQLTests.java index 2c93095b3e..24afea288e 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/PlainSQLTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/PlainSQLTests.java @@ -65,7 +65,6 @@ import org.jooq.Condition; import org.jooq.Cursor; import org.jooq.DSLContext; import org.jooq.Field; -import org.jooq.FutureResult; import org.jooq.QueryPart; import org.jooq.Record; import org.jooq.Record1; @@ -490,12 +489,6 @@ extends BaseTest fetch9 = q.fetchLater(); - Thread.sleep(50); - assertTrue(fetch9.isDone()); - assertEquals(1, fetch9.get().size()); - assertEquals("10", fetch9.get().getValue(0, 0)); - Cursor fetch10 = q.fetchLazy(); assertFalse(fetch10.isClosed()); assertTrue(fetch10.hasNext()); diff --git a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java index b8e2c5fa51..c641b0f795 100644 --- a/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java +++ b/jOOQ-test/src/org/jooq/test/jOOQAbstractTest.java @@ -1474,11 +1474,6 @@ public abstract class jOOQAbstractTest< new FetchTests(this).testFetchIntoWithRecordMapperProvider(); } - @Test - public void testFetchLater() throws Exception { - new FetchTests(this).testFetchLater(); - } - @Test public void testRecordOriginals() throws Exception { new RecordTests(this).testRecordOriginals(); diff --git a/jOOQ/src/main/java/org/jooq/DSLContext.java b/jOOQ/src/main/java/org/jooq/DSLContext.java index e991daed8f..9fd1a86a25 100644 --- a/jOOQ/src/main/java/org/jooq/DSLContext.java +++ b/jOOQ/src/main/java/org/jooq/DSLContext.java @@ -816,10 +816,6 @@ public interface DSLContext { * {@link ResultQuery#fetchInto(RecordHandler)} * Fetch records into a custom callback (similar to Spring's RowMapper) * - * - * {@link ResultQuery#fetchLater()} - * Fetch records of a long-running query asynchronously - * * *

* Example (Postgres): @@ -866,10 +862,6 @@ public interface DSLContext { * {@link ResultQuery#fetchInto(RecordHandler)} * Fetch records into a custom callback (similar to Spring's RowMapper) * - * - * {@link ResultQuery#fetchLater()} - * Fetch records of a long-running query asynchronously - * * *

* Example (Postgres): diff --git a/jOOQ/src/main/java/org/jooq/FutureResult.java b/jOOQ/src/main/java/org/jooq/FutureResult.java index d8e8908a25..509329c338 100644 --- a/jOOQ/src/main/java/org/jooq/FutureResult.java +++ b/jOOQ/src/main/java/org/jooq/FutureResult.java @@ -51,7 +51,10 @@ import java.util.concurrent.Future; * all data into a single report *

  • ...
  • * + * + * @deprecated - 3.2.0 - [#2581] - This type will be removed in jOOQ 4.0 */ +@Deprecated public interface FutureResult extends Future> { } diff --git a/jOOQ/src/main/java/org/jooq/ResultQuery.java b/jOOQ/src/main/java/org/jooq/ResultQuery.java index 0c68f98e0b..bc277e4631 100644 --- a/jOOQ/src/main/java/org/jooq/ResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/ResultQuery.java @@ -932,7 +932,9 @@ public interface ResultQuery extends Query { * * @return A future result * @throws DataAccessException if something went wrong executing the query + * @deprecated - 3.2.0 - [#2581] - This method will be removed in jOOQ 4.0 */ + @Deprecated FutureResult fetchLater() throws DataAccessException; /** @@ -961,7 +963,9 @@ public interface ResultQuery extends Query { * @param executor A custom executor * @return A future result * @throws DataAccessException if something went wrong executing the query + * @deprecated - 3.2.0 - [#2581] - This method will be removed in jOOQ 4.0 */ + @Deprecated FutureResult fetchLater(ExecutorService executor) throws DataAccessException; /** diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java index 66c6445a6c..4d6a9d626d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractResultQuery.java @@ -61,7 +61,6 @@ import org.jooq.Cursor; import org.jooq.ExecuteContext; import org.jooq.ExecuteListener; import org.jooq.Field; -import org.jooq.FutureResult; import org.jooq.Record; import org.jooq.RecordHandler; import org.jooq.RecordMapper; @@ -630,14 +629,16 @@ abstract class AbstractResultQuery extends AbstractQuery imple } @Override - public final FutureResult fetchLater() { + @Deprecated + public final org.jooq.FutureResult fetchLater() { ExecutorService executor = newSingleThreadExecutor(); Future> future = executor.submit(new ResultQueryCallable()); return new FutureResultImpl(future, executor); } @Override - public final FutureResult fetchLater(ExecutorService executor) { + @Deprecated + public final org.jooq.FutureResult fetchLater(ExecutorService executor) { Future> future = executor.submit(new ResultQueryCallable()); return new FutureResultImpl(future); } diff --git a/jOOQ/src/main/java/org/jooq/impl/FutureResultImpl.java b/jOOQ/src/main/java/org/jooq/impl/FutureResultImpl.java index 2654205436..cafc21ca24 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FutureResultImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/FutureResultImpl.java @@ -48,6 +48,7 @@ import org.jooq.Result; /** * @author Lukas Eder */ +@Deprecated class FutureResultImpl implements FutureResult { private final Future> future; diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java index 267ed9be18..aa09d24e97 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java @@ -53,7 +53,6 @@ import org.jooq.Converter; import org.jooq.Cursor; import org.jooq.Field; import org.jooq.ForeignKey; -import org.jooq.FutureResult; import org.jooq.GroupField; import org.jooq.JoinType; import org.jooq.Operator; @@ -1290,12 +1289,14 @@ class SelectImpl extends AbstractDelegatingQuery> im } @Override - public final FutureResult fetchLater() { + @Deprecated + public final org.jooq.FutureResult fetchLater() { return getDelegate().fetchLater(); } @Override - public final FutureResult fetchLater(ExecutorService executor) { + @Deprecated + public final org.jooq.FutureResult fetchLater(ExecutorService executor) { return getDelegate().fetchLater(executor); }