From 43ab2fbf7cfbc98d3271ac91c6e2af1c482523c2 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 7 Oct 2021 22:45:19 +0200 Subject: [PATCH] [jOOQ/jOOQ#12425] Backport pattern matching for instanceof (WIP) --- jOOQ/src/main/java/org/jooq/impl/DSL.java | 2 +- .../java/org/jooq/impl/DefaultBinding.java | 10 ++-- .../jooq/impl/DefaultCloseableDSLContext.java | 7 +-- .../org/jooq/impl/DefaultConfiguration.java | 3 +- .../org/jooq/impl/DefaultRecordUnmapper.java | 10 ++-- .../main/java/org/jooq/impl/FieldsImpl.java | 4 +- .../main/java/org/jooq/impl/InsertImpl.java | 2 +- .../src/main/java/org/jooq/impl/Internal.java | 6 +-- .../main/java/org/jooq/impl/Interpreter.java | 8 +-- .../main/java/org/jooq/impl/ModeDeferred.java | 2 +- .../java/org/jooq/impl/MultisetDataType.java | 4 +- jOOQ/src/main/java/org/jooq/impl/Neg.java | 2 - .../java/org/jooq/impl/ParamCollector.java | 3 +- .../main/java/org/jooq/impl/ParserImpl.java | 45 +++++++--------- jOOQ/src/main/java/org/jooq/impl/QOM.java | 7 +-- .../java/org/jooq/impl/QualifiedName.java | 3 +- .../jooq/impl/QueryPartCollectionView.java | 4 +- .../main/java/org/jooq/impl/ResultImpl.java | 9 ++-- .../java/org/jooq/impl/ResultQueryTrait.java | 4 +- .../main/java/org/jooq/impl/ResultsImpl.java | 9 ++-- jOOQ/src/main/java/org/jooq/impl/Round.java | 4 +- .../java/org/jooq/impl/SQLResultQuery.java | 3 +- .../main/java/org/jooq/impl/SchemaImpl.java | 3 +- .../java/org/jooq/impl/SelectQueryImpl.java | 53 +++++++++---------- .../main/java/org/jooq/impl/SequenceImpl.java | 3 +- .../main/java/org/jooq/impl/TableImpl.java | 9 ++-- jOOQ/src/main/java/org/jooq/impl/Tools.java | 41 +++++++------- .../jooq/impl/TranslatingMetaProvider.java | 4 +- jOOQ/src/main/java/org/jooq/impl/Val.java | 10 ++-- .../java/org/jooq/tools/LoggerListener.java | 3 +- .../tools/jdbc/MockResultSetMetaData.java | 11 ++-- 31 files changed, 123 insertions(+), 165 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 52eb782597..4e4fac7939 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -29916,7 +29916,7 @@ public class DSL { DataType t = DefaultDataType.getDataType(DEFAULT, type, (DataType) SQLDataType.OTHER); if (t instanceof LegacyConvertedDataType) - return new DataTypeProxy((AbstractDataType) t); + return new DataTypeProxy((LegacyConvertedDataType) t); else if (t != SQLDataType.OTHER) return t; else diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index 6c0f04769b..4d281d71be 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -1322,7 +1322,7 @@ public class DefaultBinding implements Binding { if (array instanceof Object[]) return Convert.convert(array, type); else if (array instanceof Array) - return convertArray(((Array) array), type); + return convertArray((Array) array, type); return null; } @@ -3451,9 +3451,7 @@ public class DefaultBinding implements Binding { * LOB, if the argument is a lob. */ private static final Object unlob(Object object) throws SQLException { - if (object instanceof Blob) { - Blob blob = (Blob) object; - + if (object instanceof Blob) { Blob blob = (Blob) object; try { return blob.getBytes(1, (int) blob.length()); } @@ -3461,9 +3459,7 @@ public class DefaultBinding implements Binding { JDBCUtils.safeFree(blob); } } - else if (object instanceof Clob) { - Clob clob = (Clob) object; - + else if (object instanceof Clob) { Clob clob = (Clob) object; try { return clob.getSubString(1, (int) clob.length()); } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultCloseableDSLContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultCloseableDSLContext.java index f751f11166..1971b6ecc4 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultCloseableDSLContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultCloseableDSLContext.java @@ -76,15 +76,12 @@ public class DefaultCloseableDSLContext extends DefaultDSLContext implements Clo ConnectionProvider cp = configuration().connectionProvider(); ConnectionFactory cf = configuration().connectionFactory(); - if (cp instanceof DefaultCloseableConnectionProvider) { - DefaultConnectionProvider dcp = (DefaultCloseableConnectionProvider) cp; + if (cp instanceof DefaultCloseableConnectionProvider) { DefaultCloseableConnectionProvider dcp = (DefaultCloseableConnectionProvider) cp; JDBCUtils.safeClose(dcp.connection); dcp.connection = null; } - if (cf instanceof DefaultConnectionFactory) { - DefaultConnectionFactory dcf = (DefaultConnectionFactory) cf; - + if (cf instanceof DefaultConnectionFactory) { DefaultConnectionFactory dcf = (DefaultConnectionFactory) cf; if (dcf.finalize) { R2DBC.block(dcf.connection.close()); dcf.connection = null; diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java b/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java index db60960037..d3ec265573 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultConfiguration.java @@ -1229,9 +1229,8 @@ public class DefaultConfiguration extends AbstractConfiguration { if (newTransactionProvider instanceof ThreadLocalTransactionProvider) this.connectionProvider = ((ThreadLocalTransactionProvider) newTransactionProvider).localConnectionProvider; } - else { + else this.transactionProvider = new NoTransactionProvider(); - } return this; } diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java index eca9dd3d3f..4f2e15153f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRecordUnmapper.java @@ -150,8 +150,7 @@ public class DefaultRecordUnmapper implements RecordUnmappe if (source == null) return null; - if (source instanceof Object[]) { - Object[] array = (Object[]) source; + if (source instanceof Object[]) { Object[] array = (Object[]) source; int size = rowType.size(); Record record = newRecord(); @@ -177,8 +176,8 @@ public class DefaultRecordUnmapper implements RecordUnmappe if (source == null) return null; - if (source instanceof Iterable) { - Iterator it = ((Iterable) source).iterator(); + if (source instanceof Iterable) { Iterable iterable = (Iterable) source; + Iterator it = iterable.iterator(); int size = rowType.size(); Record record = newRecord(); @@ -206,8 +205,7 @@ public class DefaultRecordUnmapper implements RecordUnmappe // [#1987] Distinguish between various types to load data from // Maps are loaded using a {field-name -> value} convention - if (source instanceof Map) { - Map map = (Map) source; + if (source instanceof Map) { Map map = (Map) source; Record record = newRecord(); for (int i = 0; i < fields.length; i++) { diff --git a/jOOQ/src/main/java/org/jooq/impl/FieldsImpl.java b/jOOQ/src/main/java/org/jooq/impl/FieldsImpl.java index cfc897b6e4..20bb6e900e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/FieldsImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/FieldsImpl.java @@ -278,8 +278,8 @@ final class FieldsImpl extends AbstractQueryPart implements Re } private final String tableName(Field field) { - if (field instanceof TableField) { - Table table = ((TableField) field).getTable(); + if (field instanceof TableField) { TableField f = (TableField) field; + Table table = f.getTable(); if (table != null) return table.getName(); diff --git a/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java b/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java index 7c44b2339d..5bf3ffb857 100644 --- a/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/InsertImpl.java @@ -828,7 +828,7 @@ final class InsertImpl) delegate).addValue(field, index, (Field) object); + ((AbstractStoreQuery) delegate).addValue(field, index, (Field) object); else if (object instanceof FieldLike) ((AbstractStoreQuery) delegate).addValue(field, index, ((FieldLike) object).asField()); else if (field != null) diff --git a/jOOQ/src/main/java/org/jooq/impl/Internal.java b/jOOQ/src/main/java/org/jooq/impl/Internal.java index 3bba957bfc..dc1a5aae92 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Internal.java +++ b/jOOQ/src/main/java/org/jooq/impl/Internal.java @@ -249,11 +249,11 @@ public final class Internal { public static final Name createPathAlias(Table child, ForeignKey path) { Name name = DSL.name(path.getName()); - if (child instanceof TableImpl) { - Table ancestor = ((TableImpl) child).child; + if (child instanceof TableImpl) { TableImpl t = (TableImpl) child; + Table ancestor = t.child; if (ancestor != null) - name = createPathAlias(ancestor, ((TableImpl) child).childPath).append(name); + name = createPathAlias(ancestor, t.childPath).append(name); else name = child.getQualifiedName().append(name); } diff --git a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java index befb608bdf..7aa9fd8218 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Interpreter.java +++ b/jOOQ/src/main/java/org/jooq/impl/Interpreter.java @@ -503,25 +503,25 @@ final class Interpreter { // TODO: ReverseIterable is not a viable approach if we also allow constraints to be added this way if (query.$addFirst()) { for (Field f : assertFields(query, reverseIterable(query.$add()))) - addField(existing, 0, (UnqualifiedName) f.getUnqualifiedName(), ((Field) f).getDataType()); + addField(existing, 0, (UnqualifiedName) f.getUnqualifiedName(), f.getDataType()); } else if (query.$addBefore() != null) { int index = indexOrFail(existing.fields, query.$addBefore()); for (Field f : assertFields(query, reverseIterable(query.$add()))) - addField(existing, index, (UnqualifiedName) f.getUnqualifiedName(), ((Field) f).getDataType()); + addField(existing, index, (UnqualifiedName) f.getUnqualifiedName(), f.getDataType()); } else if (query.$addAfter() != null) { int index = indexOrFail(existing.fields, query.$addAfter()) + 1; for (Field f : assertFields(query, reverseIterable(query.$add()))) - addField(existing, index, (UnqualifiedName) f.getUnqualifiedName(), ((Field) f).getDataType()); + addField(existing, index, (UnqualifiedName) f.getUnqualifiedName(), f.getDataType()); } else { for (FieldOrConstraint fc : query.$add()) if (fc instanceof Field) addField(existing, Integer.MAX_VALUE, (UnqualifiedName) fc.getUnqualifiedName(), ((Field) fc).getDataType()); - else if (fc instanceof Constraint) + else if (fc instanceof ConstraintImpl) addConstraint(query, (ConstraintImpl) fc, existing); else throw unsupportedQuery(query); diff --git a/jOOQ/src/main/java/org/jooq/impl/ModeDeferred.java b/jOOQ/src/main/java/org/jooq/impl/ModeDeferred.java index af128ba885..bcb26453a9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ModeDeferred.java +++ b/jOOQ/src/main/java/org/jooq/impl/ModeDeferred.java @@ -55,7 +55,7 @@ final class ModeDeferred implements OrderedAggregateFunctionOfDeferredType { public final AggregateFilterStep withinGroupOrderBy(OrderField field) { DataType type = field instanceof SortFieldImpl ? ((SortFieldImpl) field).getField().getDataType() - : field instanceof Field + : field instanceof AbstractField ? ((AbstractField) field).getDataType() : (DataType) SQLDataType.NUMERIC; diff --git a/jOOQ/src/main/java/org/jooq/impl/MultisetDataType.java b/jOOQ/src/main/java/org/jooq/impl/MultisetDataType.java index 92b5ff360f..ddec58ef86 100644 --- a/jOOQ/src/main/java/org/jooq/impl/MultisetDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/MultisetDataType.java @@ -138,10 +138,10 @@ final class MultisetDataType extends DefaultDataType public Result convert(Object object) { // [#3884] TODO: Move this logic into JSONReader to make it more generally useful - if (object instanceof List) { + if (object instanceof List) { List l = (List) object; ResultImpl result = new ResultImpl<>(CTX.configuration(), row); - for (Object record : (List) object) + for (Object record : l) result.add(newRecord(true, recordType, row, CTX.configuration()) .operate(r -> { diff --git a/jOOQ/src/main/java/org/jooq/impl/Neg.java b/jOOQ/src/main/java/org/jooq/impl/Neg.java index 19cf2691c1..e6b9009f63 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Neg.java +++ b/jOOQ/src/main/java/org/jooq/impl/Neg.java @@ -81,8 +81,6 @@ final class Neg extends AbstractTransformable implements QOM.Neg { - - return this; } diff --git a/jOOQ/src/main/java/org/jooq/impl/ParamCollector.java b/jOOQ/src/main/java/org/jooq/impl/ParamCollector.java index 85d03b6547..bbab617290 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParamCollector.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParamCollector.java @@ -75,8 +75,7 @@ final class ParamCollector extends AbstractBindContext { @Override protected final void bindInternal(QueryPartInternal internal) { - if (internal instanceof Param) { - Param param = (Param) internal; + if (internal instanceof Param) { Param param = (Param) internal; // [#3131] Inlined parameters should not be returned in some contexts if (includeInlinedParams || !param.isInline()) { diff --git a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java index 08a700fe80..82ccb28316 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ParserImpl.java @@ -6264,9 +6264,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { : ((Field) left).isDocument(); not = parseKeywordIf("DISTINCT FROM") == not; - if (left instanceof Field) { + if (left instanceof Field) { Field f = (Field) left; Field right = toField(parseConcat()); - return not ? ((Field) left).isNotDistinctFrom(right) : ((Field) left).isDistinctFrom(right); + return not ? f.isNotDistinctFrom(right) : f.isDistinctFrom(right); } else { Row right = parseRow(((Row) left).size(), true); @@ -7210,22 +7210,20 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { } private final Condition toCondition(QueryPart part) { - if (part == null) { + if (part == null) return null; - } - else if (part instanceof Condition) { + else if (part instanceof Condition) return (Condition) part; - } - else if (part instanceof Field) { - DataType dataType = ((Field) part).getDataType(); + else if (part instanceof Field) { Field f = (Field) part; + DataType dataType = f.getDataType(); Class type = dataType.getType(); if (type == Boolean.class) - return condition((Field) part); + return condition(f); // [#11631] [#12394] Numeric expressions are booleans in MySQL else if (dataType.isNumeric()) - return ((Field) part).ne(zero()); + return f.ne(zero()); // [#7266] Support parsing column references as predicates else if (type == Object.class && (part instanceof TableFieldImpl || part instanceof Val)) @@ -7241,7 +7239,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { if (part == null) return null; else if (part instanceof Field) - return (Field) part; + return (Field) part; else if (part instanceof Condition) return field((Condition) part); else if (part instanceof Row) @@ -7254,7 +7252,7 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { if (part == null) return null; else if (part instanceof Field) - return (Field) part; + return (Field) part; else if (part instanceof Condition) return field((Condition) part); else @@ -8238,11 +8236,11 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { FieldOrRow r = parseFieldOrRow(); List> list = null; - if (r instanceof Field) { + if (r instanceof Field) { Field f = (Field) r; while (parseIf(',')) { if (list == null) { list = new ArrayList<>(); - list.add((Field) r); + list.add(f); } // TODO Allow for nesting ROWs @@ -11093,9 +11091,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { Object nameOrSpecification = parseWindowNameOrSpecification(true); // https://bugs.eclipse.org/bugs/show_bug.cgi?id=494897 - Field result = (nameOrSpecification instanceof Name) + Field result = nameOrSpecification instanceof Name ? s3.over((Name) nameOrSpecification) - : (nameOrSpecification instanceof WindowSpecification) + : nameOrSpecification instanceof WindowSpecification ? s3.over((WindowSpecification) nameOrSpecification) : s3.over(); @@ -14099,12 +14097,9 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { // [#11054] Use a VisitListener to find actual Params in the expression tree, // which may have more refined DataTypes attached to them, from context dsl.configuration().deriveAppending(onVisitStart(ctx -> { - if (ctx.queryPart() instanceof Param) { - Param p = (Param) ctx.queryPart(); - - if (!params.containsKey(p.getParamName())) - params.put(p.getParamName(), p); - } + if (ctx.queryPart() instanceof Param) + if (!params.containsKey(((Param) ctx.queryPart()).getParamName())) + params.put(((Param) ctx.queryPart()).getParamName(), (Param) ctx.queryPart()); })).dsl().render(result); for (String name : bindParams.keySet()) @@ -14186,11 +14181,11 @@ final class DefaultParseContext extends AbstractScope implements ParseContext { for (Value> t : tables) { Value> f; - if (t.value() instanceof JoinTable) { + if (t.value() instanceof JoinTable) { JoinTable j = (JoinTable) t.value(); found = resolveInTableScope( asList( - new Value<>(t.scopeLevel(), ((JoinTable) t.value()).lhs), - new Value<>(t.scopeLevel(), ((JoinTable) t.value()).rhs) + new Value<>(t.scopeLevel(), j.lhs), + new Value<>(t.scopeLevel(), j.rhs) ), lookupName, lookup, found ); diff --git a/jOOQ/src/main/java/org/jooq/impl/QOM.java b/jOOQ/src/main/java/org/jooq/impl/QOM.java index 60082e1c3d..c53887b17b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QOM.java +++ b/jOOQ/src/main/java/org/jooq/impl/QOM.java @@ -3933,8 +3933,7 @@ public final class QOM { ) { // TODO: Support also arrays, sets, etc. - if (q instanceof List) { - List l = (List) q; + if (q instanceof List) { List l = (List) q; List r = null; for (int i = 0; i < l.size(); i++) { @@ -3982,9 +3981,7 @@ public final class QOM { if (test(abort, current)) return current; for (int i = 0; i < parts.length; i++) { - if (parts[i] instanceof QueryPart) { - QueryPart p = (QueryPart) parts[i]; - + if (parts[i] instanceof QueryPart) { QueryPart p = (QueryPart) parts[i]; if (test(recurse, p)) { current = p.$traverse(current, abort, recurse, accumulate); if (test(abort, current)) return current; diff --git a/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java index dcdeaa08e1..e989761a86 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/QualifiedName.java @@ -84,8 +84,7 @@ final class QualifiedName extends AbstractName { UnqualifiedName[] result = new UnqualifiedName[qualifiedName.length]; for (int i = 0; i < qualifiedName.length; i++) - if (qualifiedName[i] instanceof QualifiedName) { - QualifiedName q = (QualifiedName) qualifiedName[i]; + if (qualifiedName[i] instanceof QualifiedName) { QualifiedName q = (QualifiedName) qualifiedName[i]; result[i] = q.qualifiedName[q.qualifiedName.length - 1]; } else if (qualifiedName[i] instanceof UnqualifiedName) diff --git a/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java b/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java index 9e40805d4c..6d02a33030 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java +++ b/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java @@ -83,9 +83,7 @@ class QueryPartCollectionView extends AbstractQueryPart imp QueryPartCollectionView(Collection wrapped) { this.wrapped = wrapped != null ? wrapped : Collections.emptyList(); - if (wrapped instanceof QueryPartCollectionView) { - QueryPartCollectionView v = (QueryPartCollectionView) wrapped; - + if (wrapped instanceof QueryPartCollectionView) { QueryPartCollectionView v = (QueryPartCollectionView) wrapped; this.qualify = v.qualify; this.separator = v.separator; this.mapper = v.mapper; diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java index 1c9eeaa204..60fb594731 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultImpl.java @@ -1136,14 +1136,11 @@ final class ResultImpl extends AbstractResult implements Re @Override public boolean equals(Object obj) { - if (this == obj) { + if (this == obj) return true; - } - if (obj instanceof ResultImpl) { - ResultImpl other = (ResultImpl) obj; - return records.equals(other.records); - } + if (obj instanceof ResultImpl) + return records.equals(((ResultImpl) obj).records); return false; } diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java b/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java index 3bdb6cffe1..4bf5f8663b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultQueryTrait.java @@ -1455,8 +1455,8 @@ interface ResultQueryTrait extends QueryPartInternal, ResultQu } default boolean hasLimit1() { - if (this instanceof Select) { - SelectQueryImpl s = Tools.selectQueryImpl((Select) this); + if (this instanceof Select) { Select q = (Select) this; + SelectQueryImpl s = Tools.selectQueryImpl(q); if (s != null) { Limit l = s.getLimit(); diff --git a/jOOQ/src/main/java/org/jooq/impl/ResultsImpl.java b/jOOQ/src/main/java/org/jooq/impl/ResultsImpl.java index c1589be14a..21f33933c8 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ResultsImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/ResultsImpl.java @@ -123,14 +123,11 @@ final class ResultsImpl extends AbstractList> implements Results @Override public boolean equals(Object obj) { - if (this == obj) { + if (this == obj) return true; - } - if (obj instanceof ResultsImpl) { - ResultsImpl other = (ResultsImpl) obj; - return resultsOrRows.equals(other.resultsOrRows); - } + if (obj instanceof ResultsImpl) + return resultsOrRows.equals(((ResultsImpl) obj).resultsOrRows); return false; } diff --git a/jOOQ/src/main/java/org/jooq/impl/Round.java b/jOOQ/src/main/java/org/jooq/impl/Round.java index c6fda024fa..18d6ecec0c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Round.java +++ b/jOOQ/src/main/java/org/jooq/impl/Round.java @@ -120,8 +120,8 @@ implements return; } - else if (decimals instanceof Param) { - Integer decimalsValue = ((Param) decimals).getValue(); + else if (decimals instanceof Param) { Param p = (Param) decimals; + Integer decimalsValue = p.getValue(); Field factor = DSL.val(java.math.BigDecimal.ONE.movePointRight(decimalsValue)); Field mul = imul(value, factor); diff --git a/jOOQ/src/main/java/org/jooq/impl/SQLResultQuery.java b/jOOQ/src/main/java/org/jooq/impl/SQLResultQuery.java index ffce5ae9a2..761b5cf198 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SQLResultQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/SQLResultQuery.java @@ -90,9 +90,8 @@ final class SQLResultQuery extends AbstractResultQuery implements UEmpty @Override public final Clause[] clauses(Context ctx) { - if (delegate instanceof QueryPartInternal) { + if (delegate instanceof QueryPartInternal) return ((QueryPartInternal) delegate).clauses(ctx); - } return null; } diff --git a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java index 8e8b50ca1f..ad5a569bf1 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SchemaImpl.java @@ -378,8 +378,7 @@ public class SchemaImpl extends AbstractNamed implements Schema { // [#2144] SchemaImpl equality can be decided without executing the // rather expensive implementation of AbstractQueryPart.equals() - if (that instanceof SchemaImpl) { - SchemaImpl other = (SchemaImpl) that; + if (that instanceof SchemaImpl) { SchemaImpl other = (SchemaImpl) that; return // [#7172] [#10274] Cannot use getQualifiedName() yet here diff --git a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java index ec46ad904a..bf28a9add0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SelectQueryImpl.java @@ -1235,7 +1235,6 @@ final class SelectQueryImpl extends AbstractResultQuery imp - @SuppressWarnings({ "rawtypes", "unchecked" }) @@ -1244,9 +1243,9 @@ final class SelectQueryImpl extends AbstractResultQuery imp // [#3564] TODO: Extract and merge this with getSelectResolveSomeAsterisks0() List> partitionBy = new ArrayList<>(distinctOn.size()); - for (SelectFieldOrAsterisk f : distinctOn) - if (f instanceof Field) - partitionBy.add((Field) f); + for (SelectFieldOrAsterisk s : distinctOn) + if (s instanceof Field) + partitionBy.add((Field) s); Field rn = rowNumber().over(partitionBy(partitionBy).orderBy(orderBy)).as("rn"); @@ -2592,9 +2591,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp } private final void transformInlineDerivedTable0(Table table, TableList result, ConditionProviderImpl where) { - if (table instanceof InlineDerivedTable) { - InlineDerivedTable t = (InlineDerivedTable) table; - + if (table instanceof InlineDerivedTable) { InlineDerivedTable t = (InlineDerivedTable) table; result.add(t.table()); where.addConditions(t.condition()); } @@ -2605,9 +2602,7 @@ final class SelectQueryImpl extends AbstractResultQuery imp } private final Table transformInlineDerivedTables0(Table table, ConditionProviderImpl where) { - if (table instanceof InlineDerivedTable) { - InlineDerivedTable t = (InlineDerivedTable) table; - + if (table instanceof InlineDerivedTable) { InlineDerivedTable t = (InlineDerivedTable) table; where.addConditions(t.condition()); return t.table(); } @@ -2953,8 +2948,6 @@ final class SelectQueryImpl extends AbstractResultQuery imp - - @@ -3706,33 +3699,35 @@ final class SelectQueryImpl extends AbstractResultQuery imp // [#7921] TODO Find a better, more efficient way to resolve asterisks SelectFieldList list = getSelectResolveImplicitAsterisks(); - for (SelectFieldOrAsterisk f : list) - if (f instanceof Field) - result.add(getResolveProjection(c, (Field) f)); - else if (f instanceof QualifiedAsterisk) - if (((QualifiedAsteriskImpl) f).fields.isEmpty()) + for (SelectFieldOrAsterisk s : list) + if (s instanceof Field) + result.add(getResolveProjection(c, (Field) s)); + else if (s instanceof QualifiedAsteriskImpl) { QualifiedAsteriskImpl q = (QualifiedAsteriskImpl) s; + if (q.fields.isEmpty()) if (resolveSupported) - result.addAll(Arrays.asList(((QualifiedAsterisk) f).qualifier().fields())); + result.addAll(Arrays.asList(q.qualifier().fields())); else - result.add(f); + result.add(s); else if (resolveExcept) - result.addAll(subtract(Arrays.asList(((QualifiedAsterisk) f).qualifier().fields()), (((QualifiedAsteriskImpl) f).fields))); + result.addAll(subtract(Arrays.asList(((QualifiedAsterisk) s).qualifier().fields()), (((QualifiedAsteriskImpl) s).fields))); else - result.add(f); - else if (f instanceof Asterisk) - if (((AsteriskImpl) f).fields.isEmpty()) + result.add(s); + } + else if (s instanceof AsteriskImpl) { AsteriskImpl a = (AsteriskImpl) s; + if (a.fields.isEmpty()) if (resolveSupported || resolveUnqualifiedCombined && list.size() > 1) result.addAll(resolveAsterisk(new QueryPartList<>())); else - result.add(f); + result.add(s); else if (resolveExcept) - result.addAll(resolveAsterisk(new QueryPartList<>(), ((AsteriskImpl) f).fields)); + result.addAll(resolveAsterisk(new QueryPartList<>(), a.fields)); else - result.add(f); - else if (f instanceof Row) - result.add(getResolveProjection(c, new RowField((Row) f))); + result.add(s); + } + else if (s instanceof Row) + result.add(getResolveProjection(c, new RowField((Row) s))); else - throw new AssertionError("Type not supported: " + f); + throw new AssertionError("Type not supported: " + s); return result; } diff --git a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java index d0f4b28ee3..bb4e1bc222 100644 --- a/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/SequenceImpl.java @@ -316,8 +316,7 @@ implements @Override public boolean equals(Object that) { if (that instanceof SequenceFunction) - return method == ((SequenceFunction) that).method - && sequence.equals(((SequenceFunction) that).sequence); + return method == ((SequenceFunction) that).method && sequence.equals(((SequenceFunction) that).sequence); else return super.equals(that); } diff --git a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java index 8838cf3c0d..b366262729 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TableImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/TableImpl.java @@ -214,9 +214,9 @@ implements this.child = child; this.childPath = path == null ? null : Tools.aliasedKey((ForeignKey) path, child, this); } - else if (aliased instanceof TableImpl) { - this.child = ((TableImpl) aliased).child; - this.childPath = ((TableImpl) aliased).childPath; + else if (aliased instanceof TableImpl) { TableImpl t = (TableImpl) aliased; + this.child = t.child; + this.childPath = t.childPath; } else { this.child = null; @@ -473,8 +473,7 @@ implements // [#2144] TableImpl equality can be decided without executing the // rather expensive implementation of AbstractQueryPart.equals() - if (that instanceof TableImpl) { - TableImpl other = (TableImpl) that; + if (that instanceof TableImpl) { TableImpl other = (TableImpl) that; return // [#7172] [#10274] Cannot use getQualifiedName() yet here diff --git a/jOOQ/src/main/java/org/jooq/impl/Tools.java b/jOOQ/src/main/java/org/jooq/impl/Tools.java index 1e23eee40f..0cf907ac4d 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Tools.java +++ b/jOOQ/src/main/java/org/jooq/impl/Tools.java @@ -1371,7 +1371,7 @@ final class Tools { } static final SortField[] sortFields(OrderField[] fields) { - if (fields instanceof SortField[]) + if (fields instanceof SortField[]) return (SortField[]) fields; else return map(fields, o -> sortField(o), SortField[]::new); @@ -2481,8 +2481,7 @@ final class Tools { private static final RuntimeException exception(Cursor cursor, RuntimeException e) { // [#8877] Make sure these exceptions pass through ExecuteListeners as well - if (cursor instanceof CursorImpl) { - CursorImpl c = (CursorImpl) cursor; + if (cursor instanceof CursorImpl) { CursorImpl c = (CursorImpl) cursor; c.ctx.exception(e); c.listener.exception(c.ctx); return c.ctx.exception(); @@ -2553,8 +2552,8 @@ final class Tools { */ @SuppressWarnings("null") static final void renderAndBind(Context ctx, String sql, List substitutes) { - RenderContext render = (RenderContext) ((ctx instanceof RenderContext) ? ctx : null); - BindContext bind = (BindContext) ((ctx instanceof BindContext) ? ctx : null); + RenderContext render = ctx instanceof RenderContext ? (RenderContext) ctx : null; + BindContext bind = ctx instanceof BindContext ? (BindContext) ctx : null; int substituteIndex = 0; char[] sqlChars = sql.toCharArray(); @@ -2958,8 +2957,8 @@ final class Tools { for (Object substitute : substitutes) { // [#1432] Distinguish between QueryParts and other objects - if (substitute instanceof QueryPart) { - result.add((QueryPart) substitute); + if (substitute instanceof QueryPart) { QueryPart q = (QueryPart) substitute; + result.add(q); } else { @SuppressWarnings("unchecked") @@ -3498,7 +3497,7 @@ final class Tools { @SuppressWarnings({ "unchecked", "rawtypes" }) static final SelectQueryImpl selectQueryImpl(QueryPart part) { if (part instanceof SelectQueryImpl) - return (SelectQueryImpl) part; + return (SelectQueryImpl) part; else if (part instanceof SelectImpl) return (SelectQueryImpl) ((SelectImpl) part).getDelegate(); else if (part instanceof ScalarSubquery) @@ -4029,8 +4028,8 @@ final class Tools { @Override public boolean equals(Object obj) { - if (obj instanceof SourceMethod) { - Method other = ((SourceMethod) obj).method; + if (obj instanceof SourceMethod) { SourceMethod s = (SourceMethod) obj; + Method other = s.method; if (method.getName().equals(other.getName())) { Class[] p1 = method.getParameterTypes(); @@ -5168,7 +5167,7 @@ final class Tools { static final void toSQLDDLTypeDeclaration(Context ctx, DataType type) { // [#10376] TODO: Move some of this logic into DataType - DataType elementType = (type instanceof ArrayDataType) + DataType elementType = type instanceof ArrayDataType ? ((ArrayDataType) type).elementType : type; @@ -5638,18 +5637,20 @@ final class Tools { * Look up a field in a table, or create a new qualified field from the table. */ static final Field tableField(Table table, Object field) { - if (field instanceof Field) + if (field instanceof Field) return (Field) field; - else if (field instanceof Name) + else if (field instanceof Name) { Name n = (Name) field; if (table.fieldsRow().size() == 0) - return DSL.field(table.getQualifiedName().append(((Name) field).unqualifiedName())) ; + return DSL.field(table.getQualifiedName().append(n.unqualifiedName())) ; else - return table.field((Name) field); - else if (field instanceof String) + return table.field(n); + } + else if (field instanceof String) { String s = (String) field; if (table.fieldsRow().size() == 0) - return DSL.field(table.getQualifiedName().append((String) field)); + return DSL.field(table.getQualifiedName().append(s)); else - return table.field((String) field); + return table.field(s); + } else throw new IllegalArgumentException("Field type not supported: " + field); } @@ -6377,9 +6378,7 @@ final class Tools { if (abort != null && abort.test(result)) return result; - if (t instanceof JoinTable) { - JoinTable j = (JoinTable) t; - + if (t instanceof JoinTable) { JoinTable j = (JoinTable) t; if (recurseLhs == null || recurseLhs.test(j)) { result = traverseJoins(j.lhs, result, abort, recurseLhs, recurseRhs, joinTypeFunction, tableFunction); diff --git a/jOOQ/src/main/java/org/jooq/impl/TranslatingMetaProvider.java b/jOOQ/src/main/java/org/jooq/impl/TranslatingMetaProvider.java index f67427c4b3..ff7372ac77 100644 --- a/jOOQ/src/main/java/org/jooq/impl/TranslatingMetaProvider.java +++ b/jOOQ/src/main/java/org/jooq/impl/TranslatingMetaProvider.java @@ -119,8 +119,8 @@ final class TranslatingMetaProvider implements MetaProvider { final Locale locale = SettingsTools.interpreterLocale(ctx.settings()); if (nameCase != null && nameCase != RenderNameCase.AS_IS) { ctx.configuration().set(onVisitStart(c -> { - if (c.queryPart() instanceof Name) { - Name[] parts = ((Name) c.queryPart()).parts(); + if (c.queryPart() instanceof Name) { Name n = (Name) c.queryPart(); + Name[] parts = n.parts(); boolean changed = false; for (int i = 0; i < parts.length; i++) { diff --git a/jOOQ/src/main/java/org/jooq/impl/Val.java b/jOOQ/src/main/java/org/jooq/impl/Val.java index 262185f5a1..5d919e8b27 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Val.java +++ b/jOOQ/src/main/java/org/jooq/impl/Val.java @@ -118,11 +118,11 @@ final class Val extends AbstractParam implements QOM.Val, UEmpty { // [#10438] A user defined data type could was not provided explicitly, // when wrapping a bind value in DSL::val or DSL::inline - if (getDataType() instanceof DataTypeProxy) { + if (getDataType() instanceof DataTypeProxy) { DataTypeProxy p = (DataTypeProxy) getDataType(); // [#9492] Maintain legacy static type registry behaviour for now - if (((DataTypeProxy) getDataType()).type() instanceof LegacyConvertedDataType && type == SQLDataType.OTHER) { - type = (DataType) ((DataTypeProxy) getDataType()).type(); + if (p.type() instanceof LegacyConvertedDataType && type == SQLDataType.OTHER) { + type = (DataType) p.type(); if (legacyWarnings.size() < 8 && legacyWarnings.put(type.getType(), "") == null) log.warn("Deprecation", "User-defined, converted data type " + type.getType() + " was registered statically, which will be unsupported in the future, see https://github.com/jOOQ/jOOQ/issues/9492. Please use explicit data types in generated code, or e.g. with DSL.val(Object, DataType), or DSL.inline(Object, DataType).", new SQLWarning("Static type registry usage")); @@ -166,7 +166,7 @@ final class Val extends AbstractParam implements QOM.Val, UEmpty { else acceptDefaultEmbeddable(ctx); } - else if (ctx instanceof RenderContext) { + else if (ctx instanceof RenderContext) { RenderContext r = (RenderContext) ctx; ParamType paramType = ctx.paramType(); if (isInline(ctx)) @@ -180,7 +180,7 @@ final class Val extends AbstractParam implements QOM.Val, UEmpty { try { - getBinding().sql(new DefaultBindingSQLContext<>(ctx.configuration(), ctx.data(), (RenderContext) ctx, value, getBindVariable(ctx))); + getBinding().sql(new DefaultBindingSQLContext<>(ctx.configuration(), ctx.data(), r, value, getBindVariable(ctx))); } catch (SQLException e) { throw new DataAccessException("Error while generating SQL for Binding", e); diff --git a/jOOQ/src/main/java/org/jooq/tools/LoggerListener.java b/jOOQ/src/main/java/org/jooq/tools/LoggerListener.java index 161b999b7e..488bd84fad 100644 --- a/jOOQ/src/main/java/org/jooq/tools/LoggerListener.java +++ b/jOOQ/src/main/java/org/jooq/tools/LoggerListener.java @@ -267,8 +267,7 @@ public class LoggerListener extends DefaultExecuteListener { if (context.renderContext() != null) { QueryPart part = context.queryPart(); - if (part instanceof Param) { - Param param = (Param) part; + if (part instanceof Param) { Param param = (Param) part; Object value = param.getValue(); if (value instanceof String && ((String) value).length() > maxLength) { diff --git a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java index bd65589022..5b410a0dc3 100644 --- a/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java +++ b/jOOQ/src/main/java/org/jooq/tools/jdbc/MockResultSetMetaData.java @@ -162,8 +162,8 @@ public class MockResultSetMetaData implements ResultSetMetaData, Serializable { rs.checkNotClosed(); Field field = rs.result.field(column - 1); - if (field instanceof TableField) { - Table table = ((TableField) field).getTable(); + if (field instanceof TableField) { TableField f = (TableField) field; + Table table = f.getTable(); if (table != null) { Schema schema = table.getSchema(); @@ -208,12 +208,11 @@ public class MockResultSetMetaData implements ResultSetMetaData, Serializable { rs.checkNotClosed(); Field field = rs.result.field(column - 1); - if (field instanceof TableField) { - Table table = ((TableField) field).getTable(); + if (field instanceof TableField) { TableField f = (TableField) field; + Table table = f.getTable(); - if (table != null) { + if (table != null) return table.getName(); - } } // By default, no table is available