diff --git a/jOOQ/src/main/java/org/jooq/Traverser.java b/jOOQ/src/main/java/org/jooq/Traverser.java
index cbc6a0eec3..88a43203f7 100644
--- a/jOOQ/src/main/java/org/jooq/Traverser.java
+++ b/jOOQ/src/main/java/org/jooq/Traverser.java
@@ -126,65 +126,37 @@ public interface Traverser {
BiFunction super A, ? super QueryPart, ? extends A> after,
Function super A, ? extends R> finisher
) {
+
+ // TODO: Perhaps we should accept only invariant functions?
return new Traverser() {
-
- boolean supplied;
- boolean aborted;
- boolean finished;
-
- A a0;
- R r0;
-
- private A a(A a) {
- finished = false;
- return a0 = a;
- }
-
@Override
public Supplier supplier() {
- return () -> {
- if (supplied)
- return a0;
-
- supplied = true;
- return a(supplier.get());
- };
+ return supplier;
}
@Override
public Predicate abort() {
- return a -> {
- if (aborted)
- return true;
-
- return aborted = abort.test(a);
- };
+ return (Predicate) abort;
}
@Override
public Predicate recurse() {
- return recurse::test;
+ return (Predicate) recurse;
}
@Override
public BiFunction before() {
- return (a, p) -> a(before.apply(a, p));
+ return (BiFunction) before;
}
@Override
public BiFunction after() {
- return (a, p) -> a(after.apply(a, p));
+ return (BiFunction) after;
}
@Override
public Function finisher() {
- return a -> {
- if (finished)
- return r0;
-
- finished = true;
- return r0 = finisher.apply(a);
- };
+ return (Function) finisher;
}
};
}
@@ -222,20 +194,4 @@ public interface Traverser {
* supplied by {@link #supplier()} into the final data structure.
*/
Function finisher();
-
- /**
- * A shortcut to {@link #supplier()} and then {@link Supplier#get()}, which
- * can be cached by implementations.
- */
- default A supplied() {
- return supplier().get();
- }
-
- /**
- * A shortcut to {@link #finisher()} and then
- * {@link Function#apply(Object)}, which can be cached by implementations.
- */
- default R finished() {
- return finisher().apply(supplied());
- }
}
diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java
index 5f3f602f38..9e5fdfd0e3 100644
--- a/jOOQ/src/main/java/org/jooq/impl/QOM.java
+++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java
@@ -49,7 +49,10 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.UUID;
+import java.util.function.BiFunction;
+import java.util.function.Function;
import java.util.function.Predicate;
+import java.util.function.Supplier;
// ...
import org.jooq.Catalog;
@@ -7058,6 +7061,104 @@ public final class QOM {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+