From 8085a92d2cf92ff3020c67745ff084a7d6902eed Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 11 Jul 2024 16:15:47 +0200 Subject: [PATCH] [jOOQ/jOOQ#16965] org.jooq.impl.Alias not Serializable, due to Lambda wrapInParantheses --- jOOQ/src/main/java/org/jooq/impl/Alias.java | 14 ++++++-------- .../main/java/org/jooq/impl/AliasedSelect.java | 4 ++-- .../src/main/java/org/jooq/impl/DerivedTable.java | 4 ++-- jOOQ/src/main/java/org/jooq/impl/JoinTable.java | 4 ++-- jOOQ/src/main/java/org/jooq/impl/Lazy.java | 15 ++++++++++++--- jOOQ/src/main/java/org/jooq/impl/TableAlias.java | 8 ++++---- 6 files changed, 28 insertions(+), 21 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/Alias.java b/jOOQ/src/main/java/org/jooq/impl/Alias.java index b9df5fe05e..b7c178121e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Alias.java +++ b/jOOQ/src/main/java/org/jooq/impl/Alias.java @@ -141,13 +141,13 @@ final class Alias extends AbstractQueryPart implements UEmp final Q wrapping; final Name alias; final Name[] fieldAliases; - final Predicate> wrapInParentheses; + final boolean wrapInParentheses; Alias(Q wrapped, Q wrapping, Name alias) { - this(wrapped, wrapping, alias, null, c -> false); + this(wrapped, wrapping, alias, null, false); } - Alias(Q wrapped, Q wrapping, Name alias, Name[] fieldAliases, Predicate> wrapInParentheses) { + Alias(Q wrapped, Q wrapping, Name alias, Name[] fieldAliases, boolean wrapInParentheses) { this.wrapped = wrapped; this.wrapping = wrapping; this.alias = alias; @@ -411,12 +411,10 @@ final class Alias extends AbstractQueryPart implements UEmp } private final void toSQLWrapped(Context ctx) { - boolean wrap = wrapInParentheses.test(ctx); - - if (wrap) - ctx.data(DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES, false, c -> toSQLWrapped(c, wrap)); + if (wrapInParentheses) + ctx.data(DATA_WRAP_DERIVED_TABLES_IN_PARENTHESES, false, c -> toSQLWrapped(c, wrapInParentheses)); else - toSQLWrapped(ctx, wrap); + toSQLWrapped(ctx, wrapInParentheses); } private final void toSQLWrapped(Context ctx, boolean wrap) { diff --git a/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java b/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java index 483dc26954..e1c30a47ea 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java +++ b/jOOQ/src/main/java/org/jooq/impl/AliasedSelect.java @@ -108,12 +108,12 @@ final class AliasedSelect extends AbstractTable implements else return query.asTable(alias, aliases); else - return new TableAlias<>(this, alias, c -> true); + return new TableAlias<>(this, alias, true); } @Override public final Table as(Name alias, Name... fieldAliases) { - return new TableAlias<>(this, alias, fieldAliases, c -> true); + return new TableAlias<>(this, alias, fieldAliases, true); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java b/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java index 8147abb598..41f6129f93 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/DerivedTable.java @@ -86,12 +86,12 @@ class DerivedTable extends AbstractTable implements QOM.Der @Override public final Table as(Name alias) { - return new TableAlias<>(this, alias, c -> true); + return new TableAlias<>(this, alias, true); } @Override public final Table as(Name alias, Name... fieldAliases) { - return new TableAlias<>(this, alias, fieldAliases, c -> true); + return new TableAlias<>(this, alias, fieldAliases, true); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java index 017bfedc92..3db6e90ded 100755 --- a/jOOQ/src/main/java/org/jooq/impl/JoinTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/JoinTable.java @@ -717,12 +717,12 @@ abstract class JoinTable> extends AbstractJoinTable { @Override public final Table as(Name alias) { - return new TableAlias<>(this, alias, c -> true); + return new TableAlias<>(this, alias, true); } @Override public final Table as(Name alias, Name... fieldAliases) { - return new TableAlias<>(this, alias, fieldAliases, c -> true); + return new TableAlias<>(this, alias, fieldAliases, true); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/Lazy.java b/jOOQ/src/main/java/org/jooq/impl/Lazy.java index 0d7665a8a7..19c1b70bf6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Lazy.java +++ b/jOOQ/src/main/java/org/jooq/impl/Lazy.java @@ -37,6 +37,9 @@ */ package org.jooq.impl; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.Serializable; import java.util.function.Supplier; /** @@ -60,14 +63,14 @@ import java.util.function.Supplier; * * @author Lukas Eder */ -final class Lazy { +final class Lazy implements Serializable { static Lazy of(Supplier supplier) { return new Lazy<>(supplier); } - private final Supplier supplier; - private volatile T value; + private transient Supplier supplier; + private volatile T value; private Lazy(Supplier supplier) { this.supplier = supplier; @@ -84,4 +87,10 @@ final class Lazy { return value; } + + private void writeObject(ObjectOutputStream oos) throws IOException { + get(); + + oos.defaultWriteObject(); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java index ca207ab24f..b90819fd91 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java @@ -74,18 +74,18 @@ implements transient FieldsImpl aliasedFields; TableAlias(Table table, Name alias) { - this(table, alias, null, c -> false); + this(table, alias, null, false); } - TableAlias(Table table, Name alias, Predicate> wrapInParentheses) { + TableAlias(Table table, Name alias, boolean wrapInParentheses) { this(table, alias, null, wrapInParentheses); } TableAlias(Table table, Name alias, Name[] fieldAliases) { - this(table, alias, fieldAliases, c -> false); + this(table, alias, fieldAliases, false); } - TableAlias(Table table, Name alias, Name[] fieldAliases, Predicate> wrapInParentheses) { + TableAlias(Table table, Name alias, Name[] fieldAliases, boolean wrapInParentheses) { super(table.getOptions(), alias, table.getSchema()); this.alias = new Alias<>(table, this, alias, fieldAliases, wrapInParentheses);