From 53a33e376e9ba9fe99bffbc2abe1fa8f276b9c9f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 5 Dec 2022 20:11:34 +0100 Subject: [PATCH] [jOOQ/jOOQ#13640] Seal significant parts of the QOM API --- jOOQ/src/main/java/org/jooq/impl/QOM.java | 66 ++++++++++++++++++++--- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java index 468dfe99c0..d94129f0a1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QOM.java +++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java @@ -698,18 +698,65 @@ public final class QOM { @NotNull Name $alias(); // TODO [#12425] Reuse MDerivedColumnList } - public interface Dual extends Table, UEmpty {} - public interface Lateral extends Table, UOperator1, Table> {} - public interface DerivedTable extends org.jooq.Table, UOperator1, org.jooq.Table> {} - public interface Values extends Table, UOperator1, Table> {} - public interface DataChangeDeltaTable extends Table { + + public sealed interface Dual + extends + Table, + UEmpty + permits + org.jooq.impl.Dual + {} + + public sealed interface Lateral + extends + Table, + UOperator1, Table> + permits + org.jooq.impl.Lateral + {} + + public sealed interface DerivedTable + extends + org.jooq.Table, + UOperator1, org.jooq.Table> + permits + org.jooq.impl.DerivedTable + {} + + public sealed interface Values + extends + Table, + UOperator1, Table> + permits + org.jooq.impl.Values + {} + + public sealed interface DataChangeDeltaTable + extends + Table + permits + org.jooq.impl.DataChangeDeltaTable + { @NotNull ResultOption $resultOption(); @NotNull DMLQuery $query(); } - public interface RowsFrom extends Table { + + public sealed interface RowsFrom + extends + Table + permits + org.jooq.impl.RowsFrom + { @NotNull UnmodifiableList> $tables(); } - public interface GenerateSeries extends Table>, UOperator3, Field, Field, Table>> { + + public sealed interface GenerateSeries + extends + Table>, + UOperator3, Field, Field, Table>> + permits + org.jooq.impl.GenerateSeries + { @NotNull default Field $from() { return $arg1(); } @NotNull default Field $to() { return $arg2(); } @Nullable default Field $step() { return $arg3(); } @@ -1165,6 +1212,11 @@ public final class QOM { + + + + + public interface WindowFunction extends org.jooq.Field { @Nullable WindowSpecification $windowSpecification(); @Nullable WindowDefinition $windowDefinition();