From 9cb87814451ee6db4467b2f1820756e33d8cfefb Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 19 May 2021 14:25:17 +0200 Subject: [PATCH] [jOOQ/jOOQ#11902] Deprecate RecordHandler --- jOOQ/src/main/java/org/jooq/Cursor.java | 9 +++++++++ jOOQ/src/main/java/org/jooq/RecordHandler.java | 11 ++++++++++- jOOQ/src/main/java/org/jooq/Result.java | 4 ++++ jOOQ/src/main/java/org/jooq/ResultQuery.java | 3 +++ .../main/java/org/jooq/impl/AbstractCursor.java | 4 +--- jOOQ/src/main/java/org/jooq/impl/DSL.java | 12 ------------ .../src/main/java/org/jooq/impl/ResultImpl.java | 4 +--- .../java/org/jooq/impl/ResultQueryTrait.java | 17 +++-------------- 8 files changed, 31 insertions(+), 33 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Cursor.java b/jOOQ/src/main/java/org/jooq/Cursor.java index 07325ae74b..2a2246187a 100644 --- a/jOOQ/src/main/java/org/jooq/Cursor.java +++ b/jOOQ/src/main/java/org/jooq/Cursor.java @@ -43,6 +43,7 @@ import java.sql.Statement; import java.util.Iterator; import java.util.List; import java.util.Optional; +import java.util.function.Consumer; import java.util.stream.Collector; import java.util.stream.Stream; @@ -146,7 +147,10 @@ public interface Cursor extends Fields, Iterable, Formattab * @param handler The handler callback * @return Convenience result, returning the parameter handler itself * @throws DataAccessException if something went wrong executing the query + * @deprecated - 3.15.0 - [#11902] - Use {@link Iterable#forEach(Consumer)} + * based methods, instead. */ + @Deprecated @NotNull > H fetchInto(H handler) throws DataAccessException; @@ -208,6 +212,8 @@ public interface Cursor extends Fields, Iterable, Formattab /** * @deprecated - 3.10 - [#6363] - Use {@link #fetchNextInto(RecordHandler)} instead. + * @deprecated - 3.15.0 - [#11902] - Use {@link Iterable#forEach(Consumer)} + * based methods, instead. */ @NotNull @Deprecated @@ -257,7 +263,10 @@ public interface Cursor extends Fields, Iterable, Formattab * @param handler The handler callback * @return Convenience result, returning the parameter handler itself * @throws DataAccessException if something went wrong executing the query + * @deprecated - 3.15.0 - [#11902] - Use {@link Iterable#forEach(Consumer)} + * based methods, instead. */ + @Deprecated @NotNull > H fetchNextInto(H handler) throws DataAccessException; diff --git a/jOOQ/src/main/java/org/jooq/RecordHandler.java b/jOOQ/src/main/java/org/jooq/RecordHandler.java index 24c6804365..6c5630dd87 100644 --- a/jOOQ/src/main/java/org/jooq/RecordHandler.java +++ b/jOOQ/src/main/java/org/jooq/RecordHandler.java @@ -37,18 +37,27 @@ */ package org.jooq; +import java.util.function.Consumer; /** * A RecordHandler is a handler that can receive {@link Record} * objects, when fetching data from the database. * * @author Lukas Eder + * @deprecated - 3.15.0 - [#11902] - Use {@link Iterable#forEach(Consumer)} + * based methods, instead. */ +@Deprecated @FunctionalInterface -public interface RecordHandler { +public interface RecordHandler extends Consumer { /** * A callback method indicating that the next record has been fetched. */ void next(R record); + + @Override + default void accept(R record) { + next(record); + } } diff --git a/jOOQ/src/main/java/org/jooq/Result.java b/jOOQ/src/main/java/org/jooq/Result.java index 8e2748ad8d..3f1a4b3631 100644 --- a/jOOQ/src/main/java/org/jooq/Result.java +++ b/jOOQ/src/main/java/org/jooq/Result.java @@ -43,6 +43,7 @@ import java.sql.Statement; import java.util.List; import java.util.Map; import java.util.Set; +import java.util.function.Consumer; import java.util.stream.Collector; import java.util.stream.Stream; @@ -2816,7 +2817,10 @@ public interface Result extends Fields, List, Attachable, F * * @param handler The handler callback * @return Convenience result, returning the parameter handler itself + * @deprecated - 3.15.0 - [#11902] - Use {@link Iterable#forEach(Consumer)} + * based methods, instead. */ + @Deprecated @NotNull > H into(H handler); diff --git a/jOOQ/src/main/java/org/jooq/ResultQuery.java b/jOOQ/src/main/java/org/jooq/ResultQuery.java index dd63d4ebf1..ff19c29b60 100644 --- a/jOOQ/src/main/java/org/jooq/ResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/ResultQuery.java @@ -4188,7 +4188,10 @@ public interface ResultQuery extends Query, Iterable, Publi * @param handler The handler callback * @return Convenience result, returning the parameter handler itself * @throws DataAccessException if something went wrong executing the query + * @deprecated - 3.15.0 - [#11902] - Use {@link Iterable#forEach(Consumer)} + * based methods, instead. */ + @Deprecated @NotNull > H fetchInto(H handler) throws DataAccessException; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractCursor.java b/jOOQ/src/main/java/org/jooq/impl/AbstractCursor.java index f14f63d2ff..457407b7f3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractCursor.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractCursor.java @@ -185,9 +185,7 @@ abstract class AbstractCursor extends AbstractResult implem @Override public final > H fetchInto(H handler) { - while (hasNext()) - fetchNextInto(handler); - + forEach(handler); return handler; } diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index d38cd52a7c..2d6d9da8e4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -13333,10 +13333,6 @@ public class DSL { * Fetch records into a custom POJO (optionally annotated with JPA * annotations) * - * - * {@link ResultQuery#fetchInto(RecordHandler)} - * Fetch records into a custom callback (similar to Spring's RowMapper) - * * *

* Example (Postgres): @@ -13382,10 +13378,6 @@ public class DSL { * Fetch records into a custom POJO (optionally annotated with JPA * annotations) * - * - * {@link ResultQuery#fetchInto(RecordHandler)} - * Fetch records into a custom callback (similar to Spring's RowMapper) - * * *

* Example (Postgres): @@ -13432,10 +13424,6 @@ public class DSL { * Fetch records into a custom POJO (optionally annotated with JPA * annotations) * - * - * {@link ResultQuery#fetchInto(RecordHandler)} - * Fetch records into a custom callback (similar to Spring's RowMapper) - * * *

* Example (Postgres): diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java index 6d1b828112..4e6b89a005 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java @@ -960,9 +960,7 @@ final class ResultImpl extends AbstractResult implements Re @Override public final > H into(H handler) { - for (R record : this) - handler.next(record); - + forEach(handler); return handler; } diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java b/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java index 7baa0867b2..977ec24b92 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java @@ -311,21 +311,9 @@ interface ResultQueryTrait extends QueryPartInternal, ResultQu if (fetchIntermediateResult(Tools.configuration(this))) return fetch().stream(); - AtomicReference> r = new AtomicReference<>(); - // [#11895] Don't use the Stream.of(1).flatMap(i -> fetchLazy().stream()) // trick, because flatMap() will consume the entire result set - return StreamSupport.stream( - () -> { - Cursor c = fetchLazy(); - r.set(c); - return c.spliterator(); - }, - Spliterator.IMMUTABLE | Spliterator.NONNULL | Spliterator.ORDERED, - false - ).onClose(() -> { - safeClose(r.get()); - }); + return fetchLazy().stream(); } @Override @@ -1406,7 +1394,8 @@ interface ResultQueryTrait extends QueryPartInternal, ResultQu @Override default > H fetchInto(H handler) { - return fetch().into(handler); + forEach(handler); + return handler; } @Override