From 40f47ee06b0e4d647c5168fcf675a4a2c509cfa7 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 21 Jan 2022 14:32:56 +0100 Subject: [PATCH] [jOOQ/jOOQ#12911] QOM type accessors should accept Collection when they return UnmodifiableList This includes: - [jOOQ/jOOQ#12912] Add missing Select.(), (), setter accessors --- jOOQ/src/main/java/org/jooq/Select.java | 26 ++++---- .../java/org/jooq/impl/CreateDomainImpl.java | 4 +- .../java/org/jooq/impl/CreateIndexImpl.java | 6 +- .../main/java/org/jooq/impl/GrantImpl.java | 4 +- .../main/java/org/jooq/impl/JSONArray.java | 4 +- .../main/java/org/jooq/impl/JSONObject.java | 4 +- jOOQ/src/main/java/org/jooq/impl/QOM.java | 28 ++++----- .../main/java/org/jooq/impl/RevokeImpl.java | 4 +- .../main/java/org/jooq/impl/SelectImpl.java | 61 ++++++++++++------- .../java/org/jooq/impl/SelectQueryImpl.java | 50 ++++++++++----- .../main/java/org/jooq/impl/XMLForest.java | 4 +- .../main/java/org/jooq/impl/Xmlconcat.java | 4 +- 12 files changed, 119 insertions(+), 80 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Select.java b/jOOQ/src/main/java/org/jooq/Select.java index 9e3fb04429..64ded52250 100644 --- a/jOOQ/src/main/java/org/jooq/Select.java +++ b/jOOQ/src/main/java/org/jooq/Select.java @@ -65,6 +65,7 @@ import static org.jooq.SQLDialect.SQLITE; // ... import static org.jooq.SQLDialect.YUGABYTEDB; +import java.util.Collection; import java.util.List; import org.jooq.impl.DSL; @@ -186,30 +187,33 @@ public interface Select extends ResultQuery, TableLike, @Nullable With $with(); @NotNull UnmodifiableList $select(); - @NotNull Select $select(UnmodifiableList select); + @NotNull Select $select(Collection newSelect); boolean $distinct(); - @NotNull Select $distinct(boolean distinct); + @NotNull Select $distinct(boolean newDistinct); @NotNull UnmodifiableList> $from(); - @NotNull Select $from(UnmodifiableList> from); + @NotNull Select $from(Collection> newFrom); @Nullable Condition $where(); - @NotNull Select $where(Condition condition); + @NotNull Select $where(Condition newWhere); @NotNull UnmodifiableList $groupBy(); + @NotNull Select $groupBy(Collection newGroupBy); boolean $groupByDistinct(); - @NotNull Select $groupByDistinct(boolean groupByDistinct); + @NotNull Select $groupByDistinct(boolean newGroupByDistinct); @Nullable Condition $having(); - @NotNull Select $having(Condition condition); + @NotNull Select $having(Condition newHaving); @NotNull UnmodifiableList $window(); + @NotNull Select $window(Collection newWindow); @Nullable Condition $qualify(); - @NotNull Select $qualify(Condition condition); + @NotNull Select $qualify(Condition newQualify); @NotNull UnmodifiableList> $orderBy(); + @NotNull Select $orderBy(Collection> newOrderBy); @Nullable Field $limit(); - @NotNull Select $limit(Field limit); + @NotNull Select $limit(Field newLimit); boolean $limitPercent(); - @NotNull Select $limitPercent(boolean limitPercent); + @NotNull Select $limitPercent(boolean newLimitPercent); boolean $limitWithTies(); - @NotNull Select $limitWithTies(boolean limitWithTies); + @NotNull Select $limitWithTies(boolean newLimitWithTies); @Nullable Field $offset(); - @NotNull Select $offset(Field offset); + @NotNull Select $offset(Field newOffset); diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java index 4bd1521962..b470ff9616 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateDomainImpl.java @@ -252,11 +252,11 @@ implements } @Override - public final QOM.CreateDomain $constraints(UnmodifiableList newValue) { + public final QOM.CreateDomain $constraints(Collection newValue) { return $constructor().apply($domain(), $ifNotExists(), $dataType(), $default_(), newValue); } - public final Function5, ? super Boolean, ? super DataType, ? super Field, ? super UnmodifiableList, ? extends QOM.CreateDomain> $constructor() { + public final Function5, ? super Boolean, ? super DataType, ? super Field, ? super Collection, ? extends QOM.CreateDomain> $constructor() { return (a1, a2, a3, a4, a5) -> new CreateDomainImpl(configuration(), a1, a2, a3, a4, (Collection) a5); } diff --git a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java index d411a5c99e..8738e68f8a 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/CreateIndexImpl.java @@ -438,12 +438,12 @@ implements } @Override - public final QOM.CreateIndex $on(UnmodifiableList> newValue) { + public final QOM.CreateIndex $on(Collection> newValue) { return $constructor().apply($unique(), $index(), $ifNotExists(), $table(), newValue, $include(), $where(), $excludeNullKeys()); } @Override - public final QOM.CreateIndex $include(UnmodifiableList> newValue) { + public final QOM.CreateIndex $include(Collection> newValue) { return $constructor().apply($unique(), $index(), $ifNotExists(), $table(), $on(), newValue, $where(), $excludeNullKeys()); } @@ -457,7 +457,7 @@ implements return $constructor().apply($unique(), $index(), $ifNotExists(), $table(), $on(), $include(), $where(), newValue); } - public final Function8, ? super UnmodifiableList>, ? super UnmodifiableList>, ? super Condition, ? super Boolean, ? extends QOM.CreateIndex> $constructor() { + public final Function8, ? super Collection>, ? super Collection>, ? super Condition, ? super Boolean, ? extends QOM.CreateIndex> $constructor() { return (a1, a2, a3, a4, a5, a6, a7, a8) -> new CreateIndexImpl(configuration(), a1, a2, a3, a4, (Collection>) a5, (Collection>) a6, a7, a8); } diff --git a/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java b/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java index c3441c7201..0bd2ae3ac0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/GrantImpl.java @@ -226,7 +226,7 @@ implements } @Override - public final QOM.Grant $privileges(UnmodifiableList newValue) { + public final QOM.Grant $privileges(Collection newValue) { return $constructor().apply(newValue, $on(), $to(), $toPublic(), $withGrantOption()); } @@ -250,7 +250,7 @@ implements return $constructor().apply($privileges(), $on(), $to(), $toPublic(), newValue); } - public final Function5, ? super Table, ? super Role, ? super Boolean, ? super Boolean, ? extends QOM.Grant> $constructor() { + public final Function5, ? super Table, ? super Role, ? super Boolean, ? super Boolean, ? extends QOM.Grant> $constructor() { return (a1, a2, a3, a4, a5) -> new GrantImpl(configuration(), (Collection) a1, a2, a3, a4, a5); } diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONArray.java b/jOOQ/src/main/java/org/jooq/impl/JSONArray.java index 3fd6a8b18a..716d72ae5d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONArray.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONArray.java @@ -252,7 +252,7 @@ implements } @Override - public final QOM.JSONArray $fields(UnmodifiableList> newValue) { + public final QOM.JSONArray $fields(Collection> newValue) { return $constructor().apply($type(), newValue, $onNull(), $returning()); } @@ -266,7 +266,7 @@ implements return $constructor().apply($type(), $fields(), $onNull(), newValue); } - public final Function4, ? super UnmodifiableList>, ? super JSONOnNull, ? super DataType, ? extends QOM.JSONArray> $constructor() { + public final Function4, ? super Collection>, ? super JSONOnNull, ? super DataType, ? extends QOM.JSONArray> $constructor() { return (a1, a2, a3, a4) -> new JSONArray(a1, (Collection>) a2, a3, a4); } diff --git a/jOOQ/src/main/java/org/jooq/impl/JSONObject.java b/jOOQ/src/main/java/org/jooq/impl/JSONObject.java index c0658f2378..b08d5dcf42 100644 --- a/jOOQ/src/main/java/org/jooq/impl/JSONObject.java +++ b/jOOQ/src/main/java/org/jooq/impl/JSONObject.java @@ -284,7 +284,7 @@ implements } @Override - public final QOM.JSONObject $entries(UnmodifiableList> newValue) { + public final QOM.JSONObject $entries(Collection> newValue) { return $constructor().apply($type(), newValue, $onNull(), $returning()); } @@ -298,7 +298,7 @@ implements return $constructor().apply($type(), $entries(), $onNull(), newValue); } - public final Function4, ? super UnmodifiableList>, ? super JSONOnNull, ? super DataType, ? extends QOM.JSONObject> $constructor() { + public final Function4, ? super Collection>, ? super JSONOnNull, ? super DataType, ? extends QOM.JSONObject> $constructor() { return (a1, a2, a3, a4) -> new JSONObject(a1, (Collection>) a2, a3, a4); } diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java index ed4e5382c5..c38acd38b3 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QOM.java +++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java @@ -526,16 +526,16 @@ public final class QOM { // XXX: SelectFields, GroupFields and SortFields // ------------------------------------------------------------------------- - public /* sealed */ interface EmptyGroupingSet + // Can't seal these types yet because of https://bugs.eclipse.org/bugs/show_bug.cgi?id=577872 + + public /* non-sealed */ interface EmptyGroupingSet extends GroupField, UEmpty - /* permits - org.jooq.impl.EmptyGroupingSet */ + /*permits + org.jooq.impl.EmptyGroupingSet*/ {} - // Can't seal these types yet because of https://bugs.eclipse.org/bugs/show_bug.cgi?id=577872 - public /* non-sealed */ interface Rollup extends GroupField, @@ -1252,7 +1252,7 @@ public final class QOM { @NotNull CreateDomain $ifNotExists(boolean ifNotExists); @NotNull CreateDomain $dataType(DataType dataType); @NotNull CreateDomain $default_(Field default_); - @NotNull CreateDomain $constraints(UnmodifiableList constraints); + @NotNull CreateDomain $constraints(Collection constraints); } @@ -1308,8 +1308,8 @@ public final class QOM { @NotNull CreateIndex $index(Index index); @NotNull CreateIndex $ifNotExists(boolean ifNotExists); @NotNull CreateIndex $table(Table table); - @NotNull CreateIndex $on(UnmodifiableList> on); - @NotNull CreateIndex $include(UnmodifiableList> include); + @NotNull CreateIndex $on(Collection> on); + @NotNull CreateIndex $include(Collection> include); @NotNull CreateIndex $where(Condition where); @NotNull CreateIndex $excludeNullKeys(boolean excludeNullKeys); } @@ -1615,7 +1615,7 @@ public final class QOM { @Nullable Role $to(); boolean $toPublic(); boolean $withGrantOption(); - @NotNull Grant $privileges(UnmodifiableList privileges); + @NotNull Grant $privileges(Collection privileges); @NotNull Grant $on(Table on); @NotNull Grant $to(Role to); @NotNull Grant $toPublic(boolean toPublic); @@ -1636,7 +1636,7 @@ public final class QOM { @NotNull Table $on(); @Nullable Role $from(); boolean $fromPublic(); - @NotNull Revoke $privileges(UnmodifiableList privileges); + @NotNull Revoke $privileges(Collection privileges); @NotNull Revoke $grantOptionFor(boolean grantOptionFor); @NotNull Revoke $on(Table on); @NotNull Revoke $from(Role from); @@ -4274,7 +4274,7 @@ public final class QOM { // XMLConcat { @NotNull UnmodifiableList> $args(); - @NotNull XMLConcat $args(UnmodifiableList> args); + @NotNull XMLConcat $args(Collection> args); } @@ -4303,7 +4303,7 @@ public final class QOM { // XMLForest { @NotNull UnmodifiableList> $fields(); - @NotNull XMLForest $fields(UnmodifiableList> fields); + @NotNull XMLForest $fields(Collection> fields); } /** @@ -4352,7 +4352,7 @@ public final class QOM { @Nullable JSONOnNull $onNull(); @Nullable DataType $returning(); @NotNull JSONArray $type(DataType type); - @NotNull JSONArray $fields(UnmodifiableList> fields); + @NotNull JSONArray $fields(Collection> fields); @NotNull JSONArray $onNull(JSONOnNull onNull); @NotNull JSONArray $returning(DataType returning); } @@ -4371,7 +4371,7 @@ public final class QOM { @Nullable JSONOnNull $onNull(); @Nullable DataType $returning(); @NotNull JSONObject $type(DataType type); - @NotNull JSONObject $entries(UnmodifiableList> entries); + @NotNull JSONObject $entries(Collection> entries); @NotNull JSONObject $onNull(JSONOnNull onNull); @NotNull JSONObject $returning(DataType returning); } diff --git a/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java b/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java index 21e5cf6139..7348b4c180 100644 --- a/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/RevokeImpl.java @@ -224,7 +224,7 @@ implements } @Override - public final QOM.Revoke $privileges(UnmodifiableList newValue) { + public final QOM.Revoke $privileges(Collection newValue) { return $constructor().apply(newValue, $grantOptionFor(), $on(), $from(), $fromPublic()); } @@ -248,7 +248,7 @@ implements return $constructor().apply($privileges(), $grantOptionFor(), $on(), $from(), newValue); } - public final Function5, ? super Boolean, ? super Table, ? super Role, ? super Boolean, ? extends QOM.Revoke> $constructor() { + public final Function5, ? super Boolean, ? super Table, ? super Role, ? super Boolean, ? extends QOM.Revoke> $constructor() { return (a1, a2, a3, a4, a5) -> new RevokeImpl(configuration(), (Collection) a1, a2, a3, a4, a5); } diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java index af954266cd..894b23a563 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectImpl.java @@ -135,6 +135,8 @@ import org.jooq.WindowDefinition; import org.jooq.impl.QOM.UnmodifiableList; import org.jooq.impl.QOM.With; +import org.jetbrains.annotations.NotNull; + /** * A wrapper for a {@link SelectQuery} * @@ -3355,8 +3357,8 @@ implements } @Override - public final Select $select(UnmodifiableList select) { - return getDelegate().$select(select); + public final Select $select(Collection newSelect) { + return getDelegate().$select(newSelect); } @Override @@ -3365,8 +3367,8 @@ implements } @Override - public final Select $distinct(boolean distinct) { - return getDelegate().$distinct(distinct); + public final Select $distinct(boolean newDistinct) { + return getDelegate().$distinct(newDistinct); } @Override @@ -3375,8 +3377,8 @@ implements } @Override - public final Select $from(UnmodifiableList> from) { - return getDelegate().$from(from); + public final Select $from(Collection> newFrom) { + return getDelegate().$from(newFrom); } @Override @@ -3385,8 +3387,8 @@ implements } @Override - public final Select $where(Condition condition) { - return getDelegate().$where(condition); + public final Select $where(Condition newWhere) { + return getDelegate().$where(newWhere); } @Override @@ -3394,14 +3396,19 @@ implements return getDelegate().$groupBy(); } + @Override + public final Select $groupBy(Collection newGroupBy) { + return getDelegate().$groupBy(newGroupBy); + } + @Override public final boolean $groupByDistinct() { return getDelegate().$groupByDistinct(); } @Override - public final Select $groupByDistinct(boolean groupByDistinct) { - return getDelegate().$groupByDistinct(groupByDistinct); + public final Select $groupByDistinct(boolean newGroupByDistinct) { + return getDelegate().$groupByDistinct(newGroupByDistinct); } @Override @@ -3410,8 +3417,8 @@ implements } @Override - public final Select $having(Condition condition) { - return getDelegate().$having(condition); + public final Select $having(Condition newHaving) { + return getDelegate().$having(newHaving); } @Override @@ -3419,14 +3426,19 @@ implements return getDelegate().$window(); } + @Override + public final Select $window(Collection newWindow) { + return getDelegate().$window(newWindow); + } + @Override public final Condition $qualify() { return getDelegate().$qualify(); } @Override - public final Select $qualify(Condition condition) { - return getDelegate().$qualify(condition); + public final Select $qualify(Condition newQualify) { + return getDelegate().$qualify(newQualify); } @Override @@ -3434,14 +3446,19 @@ implements return getDelegate().$orderBy(); } + @Override + public final Select $orderBy(Collection> newOrderBy) { + return getDelegate().$orderBy(newOrderBy); + } + @Override public final Field $limit() { return getDelegate().$limit(); } @Override - public final Select $limit(Field l) { - return getDelegate().$limit(l); + public final Select $limit(Field newLimit) { + return getDelegate().$limit(newLimit); } @Override @@ -3450,8 +3467,8 @@ implements } @Override - public final Select $limitPercent(boolean limitPercent) { - return getDelegate().$limitPercent(limitPercent); + public final Select $limitPercent(boolean newLimitPercent) { + return getDelegate().$limitPercent(newLimitPercent); } @Override @@ -3460,8 +3477,8 @@ implements } @Override - public final Select $limitWithTies(boolean limitWithTies) { - return getDelegate().$limitWithTies(limitWithTies); + public final Select $limitWithTies(boolean newLimitWithTies) { + return getDelegate().$limitWithTies(newLimitWithTies); } @Override @@ -3470,8 +3487,8 @@ implements } @Override - public final Select $offset(Field o) { - return getDelegate().$offset(o); + public final Select $offset(Field newOffset) { + return getDelegate().$offset(newOffset); } diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index c410c5af2e..07ee3880d4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -4454,14 +4454,11 @@ final class SelectQueryImpl extends AbstractResultQuery imp } @Override - public final SelectQueryImpl $select(UnmodifiableList newSelect) { - if ($select() == newSelect) - return this; - else - return copy(s -> { - s.select.clear(); - s.select.addAll(newSelect); - }); + public final SelectQueryImpl $select(Collection newSelect) { + return copy(s -> { + s.select.clear(); + s.select.addAll(newSelect); + }); } @Override @@ -4483,14 +4480,11 @@ final class SelectQueryImpl extends AbstractResultQuery imp } @Override - public final SelectQueryImpl $from(UnmodifiableList> newFrom) { - if ($from() == newFrom) - return this; - else - return copy(s -> { - s.from.clear(); - s.from.addAll(newFrom); - }); + public final SelectQueryImpl $from(Collection> newFrom) { + return copy(s -> { + s.from.clear(); + s.from.addAll(newFrom); + }); } @Override @@ -4511,6 +4505,14 @@ final class SelectQueryImpl extends AbstractResultQuery imp return QOM.unmodifiable(groupBy == null ? new GroupFieldList() : groupBy); } + @Override + public final Select $groupBy(Collection newGroupBy) { + return copy(s -> { + s.groupBy.clear(); + s.groupBy.addAll(newGroupBy); + }); + } + @Override public final boolean $groupByDistinct() { return groupByDistinct; @@ -4542,6 +4544,14 @@ final class SelectQueryImpl extends AbstractResultQuery imp return QOM.unmodifiable(window == null ? QueryPartList.emptyList() : window); } + @Override + public final Select $window(Collection newWindow) { + return copy(s -> { + s.window.clear(); + s.window.addAll(newWindow); + }); + } + @Override public final Condition $qualify() { return qualify; @@ -4560,6 +4570,14 @@ final class SelectQueryImpl extends AbstractResultQuery imp return QOM.unmodifiable(orderBy); } + @Override + public final Select $orderBy(Collection> newOrderBy) { + return copy(s -> { + s.orderBy.clear(); + s.orderBy.addAll(newOrderBy); + }); + } + @Override public final Field $limit() { return getLimit().limit; diff --git a/jOOQ/src/main/java/org/jooq/impl/XMLForest.java b/jOOQ/src/main/java/org/jooq/impl/XMLForest.java index 45e98cd9ca..942c3110d8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/XMLForest.java +++ b/jOOQ/src/main/java/org/jooq/impl/XMLForest.java @@ -128,11 +128,11 @@ implements } @Override - public final QOM.XMLForest $fields(UnmodifiableList> newValue) { + public final QOM.XMLForest $fields(Collection> newValue) { return $constructor().apply(newValue); } - public final Function1>, ? extends QOM.XMLForest> $constructor() { + public final Function1>, ? extends QOM.XMLForest> $constructor() { return (a1) -> new XMLForest((Collection>) a1); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Xmlconcat.java b/jOOQ/src/main/java/org/jooq/impl/Xmlconcat.java index c319a1ad32..77897b4244 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Xmlconcat.java +++ b/jOOQ/src/main/java/org/jooq/impl/Xmlconcat.java @@ -126,11 +126,11 @@ implements } @Override - public final QOM.XMLConcat $args(UnmodifiableList> newValue) { + public final QOM.XMLConcat $args(Collection> newValue) { return $constructor().apply(newValue); } - public final Function1>, ? extends QOM.XMLConcat> $constructor() { + public final Function1>, ? extends QOM.XMLConcat> $constructor() { return (a1) -> new XMLConcat((Collection>) a1); }