From 18b394b47eef892f1c53a0100b69dc286bb790d7 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 15 Jun 2020 17:12:46 +0200 Subject: [PATCH] [jOOQ/jOOQ#9404] AbstractKey and subtypes should accept Name instead of string in constructors --- jOOQ/src/main/java/org/jooq/Named.java | 8 +++ .../main/java/org/jooq/impl/AbstractKey.java | 5 +- .../java/org/jooq/impl/AbstractNamed.java | 5 ++ .../java/org/jooq/impl/CollatedField.java | 2 +- jOOQ/src/main/java/org/jooq/impl/DDL.java | 9 +-- .../main/java/org/jooq/impl/FieldProxy.java | 6 ++ .../src/main/java/org/jooq/impl/Internal.java | 71 +++++++++++++++---- .../main/java/org/jooq/impl/Interpreter.java | 4 +- .../src/main/java/org/jooq/impl/MetaImpl.java | 4 +- .../java/org/jooq/impl/ReferenceImpl.java | 3 +- .../main/java/org/jooq/impl/TableAlias.java | 2 +- .../main/java/org/jooq/impl/TableImpl.java | 2 +- .../java/org/jooq/impl/UniqueKeyImpl.java | 3 +- jOOQ/src/main/resources/META-INF/ABOUT.txt | 2 +- 14 files changed, 97 insertions(+), 29 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Named.java b/jOOQ/src/main/java/org/jooq/Named.java index 91a442ffea..5dda17cfa9 100644 --- a/jOOQ/src/main/java/org/jooq/Named.java +++ b/jOOQ/src/main/java/org/jooq/Named.java @@ -63,6 +63,14 @@ public interface Named extends QueryPart { /** * The comment on this object. + *

+ * This is the same as calling {@link #getCommentPart()} and then + * {@link Comment#getComment()}. */ String getComment(); + + /** + * The comment on this object as a {@link QueryPart}. + */ + Comment getCommentPart(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java b/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java index 3a4a515d69..94fcb7218e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractKey.java @@ -44,6 +44,7 @@ import org.jooq.Constraint; import org.jooq.ConstraintEnforcementStep; import org.jooq.Context; import org.jooq.Key; +import org.jooq.Name; import org.jooq.Record; import org.jooq.Table; import org.jooq.TableField; @@ -68,8 +69,8 @@ abstract class AbstractKey extends AbstractNamed implements Ke this(table, null, fields, enforced); } - AbstractKey(Table table, String name, TableField[] fields, boolean enforced) { - super(name == null ? null : DSL.name(name), null); + AbstractKey(Table table, Name name, TableField[] fields, boolean enforced) { + super(name, null); this.table = table; this.fields = fields; diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java index 6b9ef79e69..8d4323ac16 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractNamed.java @@ -82,6 +82,11 @@ abstract class AbstractNamed extends AbstractQueryPart implements Named { return comment.getComment(); } + @Override + public final Comment getCommentPart() { + return comment; + } + // ------------------------------------------------------------------------- // The Object API // ------------------------------------------------------------------------- diff --git a/jOOQ/src/main/java/org/jooq/impl/CollatedField.java b/jOOQ/src/main/java/org/jooq/impl/CollatedField.java index cce69eff79..22577f80ac 100644 --- a/jOOQ/src/main/java/org/jooq/impl/CollatedField.java +++ b/jOOQ/src/main/java/org/jooq/impl/CollatedField.java @@ -55,7 +55,7 @@ final class CollatedField extends AbstractField { private final Collation collation; CollatedField(Field field, Collation collation) { - super(field.getQualifiedName(), type(field), DSL.comment(field.getComment()), binding(field)); + super(field.getQualifiedName(), type(field), field.getCommentPart(), binding(field)); this.field = field; this.collation = collation; diff --git a/jOOQ/src/main/java/org/jooq/impl/DDL.java b/jOOQ/src/main/java/org/jooq/impl/DDL.java index 67339f890e..620aea327b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DDL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DDL.java @@ -58,6 +58,7 @@ import java.util.Collections; import java.util.List; import org.jooq.Check; +import org.jooq.Comment; import org.jooq.Constraint; import org.jooq.ConstraintEnforcementStep; import org.jooq.CreateDomainAsStep; @@ -303,18 +304,18 @@ final class DDL { List result = new ArrayList<>(); if (configuration.flags().contains(COMMENT)) { - String tComment = table.getComment(); + Comment tComment = table.getCommentPart(); - if (!StringUtils.isEmpty(tComment)) + if (!StringUtils.isEmpty(tComment.getComment())) if (table.getType().isView()) result.add(ctx.commentOnView(table).is(tComment)); else result.add(ctx.commentOnTable(table).is(tComment)); for (Field field : sortIf(Arrays.asList(table.fields()), !configuration.respectColumnOrder())) { - String fComment = field.getComment(); + Comment fComment = field.getCommentPart(); - if (!StringUtils.isEmpty(fComment)) + if (!StringUtils.isEmpty(fComment.getComment())) result.add(ctx.commentOnColumn(field).is(fComment)); } } diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldProxy.java b/jOOQ/src/main/java/org/jooq/impl/FieldProxy.java index dbf0f558d5..167c4d8833 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldProxy.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldProxy.java @@ -47,6 +47,7 @@ import org.jooq.BindContext; import org.jooq.Binding; import org.jooq.Clause; import org.jooq.Collation; +import org.jooq.Comment; import org.jooq.Comparator; import org.jooq.Condition; import org.jooq.Configuration; @@ -147,6 +148,11 @@ final class FieldProxy implements TableField, QueryPartInternal { return delegate.getComment(); } + @Override + public final Comment getCommentPart() { + return delegate.getCommentPart(); + } + @Override public final int hashCode() { return delegate.hashCode(); diff --git a/jOOQ/src/main/java/org/jooq/impl/Internal.java b/jOOQ/src/main/java/org/jooq/impl/Internal.java index c9e401eb0c..b75ad2fefa 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Internal.java +++ b/jOOQ/src/main/java/org/jooq/impl/Internal.java @@ -78,13 +78,6 @@ public final class Internal { return new EmbeddableTableField<>(name, recordType, table, fields); } - /** - * Factory method for indexes. - */ - public static final Index createIndex(String name, Table table, OrderField[] sortFields, boolean unique) { - return createIndex(DSL.name(name), table, sortFields, unique); - } - /** * Factory method for indexes. */ @@ -104,21 +97,21 @@ public final class Internal { */ @SafeVarargs public static final UniqueKey createUniqueKey(Table table, TableField... fields) { - return createUniqueKey(table, null, fields, true); + return createUniqueKey(table, (Name) null, fields, true); } /** * Factory method for unique keys. */ @SafeVarargs - public static final UniqueKey createUniqueKey(Table table, String name, TableField... fields) { + public static final UniqueKey createUniqueKey(Table table, Name name, TableField... fields) { return createUniqueKey(table, name, fields, true); } /** * Factory method for unique keys. */ - public static final UniqueKey createUniqueKey(Table table, String name, TableField[] fields, boolean enforced) { + public static final UniqueKey createUniqueKey(Table table, Name name, TableField[] fields, boolean enforced) { return new UniqueKeyImpl<>(table, name, fields, enforced); } @@ -127,21 +120,21 @@ public final class Internal { */ @SafeVarargs public static final ForeignKey createForeignKey(UniqueKey key, Table table, TableField... fields) { - return createForeignKey(key, table, null, fields); + return createForeignKey(key, table, (Name) null, fields); } /** * Factory method for foreign keys. */ @SafeVarargs - public static final ForeignKey createForeignKey(UniqueKey key, Table table, String name, TableField... fields) { + public static final ForeignKey createForeignKey(UniqueKey key, Table table, Name name, TableField... fields) { return createForeignKey(key, table, name, fields, true); } /** * Factory method for foreign keys. */ - public static final ForeignKey createForeignKey(UniqueKey key, Table table, String name, TableField[] fields, boolean enforced) { + public static final ForeignKey createForeignKey(UniqueKey key, Table table, Name name, TableField[] fields, boolean enforced) { ForeignKey result = new ReferenceImpl<>(key, table, name, fields, enforced); if (key instanceof UniqueKeyImpl) @@ -256,4 +249,56 @@ public final class Internal { private Internal() {} + + /** + * Factory method for indexes. + * + * @deprecated - 3.14.0 - [#9404] - Please re-generate your code. + */ + @Deprecated + public static final Index createIndex(String name, Table table, OrderField[] sortFields, boolean unique) { + return createIndex(DSL.name(name), table, sortFields, unique); + } + + /** + * Factory method for unique keys. + * + * @deprecated - 3.14.0 - [#9404] - Please re-generate your code. + */ + @Deprecated + @SafeVarargs + public static final UniqueKey createUniqueKey(Table table, String name, TableField... fields) { + return createUniqueKey(table, name, fields, true); + } + + /** + * Factory method for unique keys. + * + * @deprecated - 3.14.0 - [#9404] - Please re-generate your code. + */ + @Deprecated + public static final UniqueKey createUniqueKey(Table table, String name, TableField[] fields, boolean enforced) { + return createUniqueKey(table, DSL.name(name), fields, enforced); + } + + /** + * Factory method for foreign keys. + * + * @deprecated - 3.14.0 - [#9404] - Please re-generate your code. + */ + @Deprecated + @SafeVarargs + public static final ForeignKey createForeignKey(UniqueKey key, Table table, String name, TableField... fields) { + return createForeignKey(key, table, name, fields, true); + } + + /** + * Factory method for foreign keys. + * + * @deprecated - 3.14.0 - [#9404] - Please re-generate your code. + */ + @Deprecated + public static final ForeignKey createForeignKey(UniqueKey key, Table table, String name, TableField[] fields, boolean enforced) { + return createForeignKey(key, table, DSL.name(name), fields, enforced); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java index 3dee1bbfbb..227c8b8fdc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java @@ -2047,7 +2047,7 @@ final class Interpreter { f[i] = (TableField) t.field(fields.get(i).name()); // Add to map before adding bi-directionality to avoid StackOverflowErrors - interpretedUniqueKeys.put(qualifiedName, result = new UniqueKeyImpl<>(t, name().last(), f, enforced)); + interpretedUniqueKeys.put(qualifiedName, result = new UniqueKeyImpl<>(t, name(), f, enforced)); for (MutableForeignKey referencingKey : referencingKeys) result.references.add((ForeignKey) referencingKey.interpretedKey()); } @@ -2106,7 +2106,7 @@ final class Interpreter { for (int i = 0; i < f.length; i++) f[i] = (TableField) t.field(fields.get(i).name()); - interpretedForeignKeys.put(qualifiedName, result = new ReferenceImpl<>(referencedKey.interpretedKey(), t, name().last(), f, enforced)); + interpretedForeignKeys.put(qualifiedName, result = new ReferenceImpl<>(referencedKey.interpretedKey(), t, name(), f, enforced)); } return result; diff --git a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java index 279ff0701b..9b64ca3164 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/MetaImpl.java @@ -707,7 +707,7 @@ final class MetaImpl extends AbstractMeta { fkFields[i] = (TableField) field(record.get(7, String.class)); } - references.add(new ReferenceImpl<>(new MetaPrimaryKey(pkTable, pkName, pkFields), this, fkName, fkFields, true)); + references.add(new ReferenceImpl<>(new MetaPrimaryKey(pkTable, pkName, pkFields), this, DSL.name(fkName), fkFields, true)); } return references; @@ -1002,7 +1002,7 @@ final class MetaImpl extends AbstractMeta { for (int i = 0; i < value.size(); i++) fkFields[i] = (TableField) fkTable.field(value.get(i).get(7, String.class)); - references.add(new ReferenceImpl<>(this, fkTable, fkName, fkFields, true)); + references.add(new ReferenceImpl<>(this, fkTable, DSL.name(fkName), fkFields, true)); } return references; diff --git a/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java index f4b24bdd1a..8c9112cec7 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ReferenceImpl.java @@ -50,6 +50,7 @@ import org.jooq.ConstraintEnforcementStep; import org.jooq.DSLContext; import org.jooq.Field; import org.jooq.ForeignKey; +import org.jooq.Name; import org.jooq.Record; import org.jooq.Result; import org.jooq.RowN; @@ -70,7 +71,7 @@ final class ReferenceImpl extends AbstractKe private final UniqueKey key; - ReferenceImpl(UniqueKey key, Table table, String name, TableField[] fields, boolean enforced) { + ReferenceImpl(UniqueKey key, Table table, Name name, TableField[] fields, boolean enforced) { super(table, name, fields, enforced); this.key = key; diff --git a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java index 2351b55bf3..831548a209 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableAlias.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableAlias.java @@ -97,7 +97,7 @@ final class TableAlias extends AbstractTable { ? fieldAliases[i] : field.getUnqualifiedName(); - result.add(new TableFieldImpl(name, field.getDataType(), this, DSL.comment(field.getComment()), field.getBinding())); + result.add(new TableFieldImpl(name, field.getDataType(), this, field.getCommentPart(), field.getBinding())); } return new Fields<>(result); diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java index 579d9222f4..dc9fd71ea9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java @@ -170,7 +170,7 @@ public class TableImpl extends AbstractTable { } public TableImpl(Table child, ForeignKey path, Table parent) { - this(createPathAlias(child, path), null, child, path, parent, null, DSL.comment(parent.getComment())); + this(createPathAlias(child, path), null, child, path, parent, null, parent.getCommentPart()); } public TableImpl(Name name, Schema schema, Table child, ForeignKey path, Table aliased, Field[] parameters, Comment comment) { diff --git a/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java b/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java index 97fd753951..12e3db5381 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UniqueKeyImpl.java @@ -43,6 +43,7 @@ import java.util.List; import org.jooq.ConstraintEnforcementStep; import org.jooq.ForeignKey; +import org.jooq.Name; import org.jooq.Record; import org.jooq.Table; import org.jooq.TableField; @@ -64,7 +65,7 @@ final class UniqueKeyImpl extends AbstractKey implements Un this(table, null, fields, enforced); } - UniqueKeyImpl(Table table, String name, TableField[] fields, boolean enforced) { + UniqueKeyImpl(Table table, Name name, TableField[] fields, boolean enforced) { super(table, name, fields, enforced); this.references = new ArrayList<>(); diff --git a/jOOQ/src/main/resources/META-INF/ABOUT.txt b/jOOQ/src/main/resources/META-INF/ABOUT.txt index 71b2abf36f..a10043875d 100644 --- a/jOOQ/src/main/resources/META-INF/ABOUT.txt +++ b/jOOQ/src/main/resources/META-INF/ABOUT.txt @@ -65,4 +65,4 @@ Authors and contributors of jOOQ or parts of jOOQ in alphabetical order: - Zoltan Tamasi See the following website for details about contributing to jOOQ: -https://github.com/jOOQ/jOOQ/blob/master/CONTRIBUTING.md +https://github.com/jOOQ/jOOQ/blob/main/CONTRIBUTING.md