diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractParam.java b/jOOQ/src/main/java/org/jooq/impl/AbstractParam.java index 37ff801551..4b9fd334df 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractParam.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractParam.java @@ -56,6 +56,7 @@ import org.jooq.Param; import org.jooq.ParamMode; import org.jooq.UDTRecord; import org.jooq.conf.ParamType; +import org.jooq.tools.JooqLogger; import org.jooq.tools.StringUtils; /** @@ -63,17 +64,17 @@ import org.jooq.tools.StringUtils; * * @author Lukas Eder */ -abstract class AbstractParam extends AbstractField implements Param { +abstract class AbstractParam extends AbstractParamX { /** * Generated UID */ - private static final long serialVersionUID = 1311856649676227970L; - private static final Clause[] CLAUSES = { FIELD, FIELD_VALUE }; + private static final long serialVersionUID = 1311856649676227970L; + private static final Clause[] CLAUSES = { FIELD, FIELD_VALUE }; - private final String paramName; - T value; - private boolean inline; + private final String paramName; + T value; + private boolean inline; AbstractParam(T value, DataType type) { this(value, type, null); @@ -130,12 +131,7 @@ abstract class AbstractParam extends AbstractField implements Param { // ------------------------------------------------------------------------ @Override - public final void setValue(T value) { - setConverted(value); - } - - @Override - public final void setConverted(Object value) { + final void setConverted0(Object value) { this.value = getDataType().convert(value); } @@ -150,7 +146,7 @@ abstract class AbstractParam extends AbstractField implements Param { } @Override - public final void setInline(boolean inline) { + final void setInline0(boolean inline) { this.inline = inline; } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractParamX.java b/jOOQ/src/main/java/org/jooq/impl/AbstractParamX.java new file mode 100644 index 0000000000..08e6bf180d --- /dev/null +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractParamX.java @@ -0,0 +1,95 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * Other licenses: + * ----------------------------------------------------------------------------- + * Commercial licenses for this work are available. These replace the above + * ASL 2.0 and offer limited warranties, support, maintenance, and commercial + * database integrations. + * + * For more information, please visit: http://www.jooq.org/licenses + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + * + */ +package org.jooq.impl; + +import org.jooq.DataType; +import org.jooq.Name; +import org.jooq.Param; +import org.jooq.tools.JooqLogger; + +/** + * A base implementation for {@link Param} handling deprecation warnings, see + * [#11129] + * + * @author Lukas Eder + */ +abstract class AbstractParamX extends AbstractField implements Param { + + /** + * Generated UID + */ + private static final long serialVersionUID = 1311856649676227970L; + private static final JooqLogger log = JooqLogger.getLogger(AbstractParam.class); + + AbstractParamX(Name name, DataType type) { + super(name, type); + } + + // ------------------------------------------------------------------------ + // XXX: Param API + // ------------------------------------------------------------------------ + + @Override + @Deprecated + public final void setValue(T value) { + log.warn("Deprecation", "org.jooq.Param will soon be made immutable. It is recommended to no longer use its deprecated, mutating methods.", new UnsupportedOperationException("Param.setValue")); + setConverted0(value); + } + + final void setValue0(T value) { + setConverted0(value); + } + + @Override + @Deprecated + public final void setConverted(Object value) { + log.warn("Deprecation", "org.jooq.Param will soon be made immutable. It is recommended to no longer use its deprecated, mutating methods.", new UnsupportedOperationException("Param.setConverted")); + setConverted0(value); + } + + abstract void setConverted0(Object value); + + @Override + @Deprecated + public final void setInline(boolean inline) { + log.warn("Deprecation", "org.jooq.Param will soon be made immutable. It is recommended to no longer use its deprecated, mutating methods.", new UnsupportedOperationException("Param.setInline")); + setInline0(inline); + } + + abstract void setInline0(boolean inline); +} diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java index 80341e7451..3d708a1ac6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractQuery.java @@ -175,7 +175,7 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query { throw new IllegalArgumentException("No such parameter : " + param); for (Param p : params) { - p.setConverted(value); + ((AbstractParamX) p).setConverted0(value); closeIfNecessary(p); } @@ -195,8 +195,8 @@ abstract class AbstractQuery extends AbstractQueryPart implements Query { if (index < 1 || index > params.length) throw new IllegalArgumentException("Index out of range for Query parameters : " + index); - Param param = params[index - 1]; - param.setConverted(value); + AbstractParamX param = (AbstractParamX) params[index - 1]; + param.setConverted0(value); closeIfNecessary(param); return this; } diff --git a/jOOQ/src/main/java/org/jooq/impl/ConvertedVal.java b/jOOQ/src/main/java/org/jooq/impl/ConvertedVal.java index c8765b2d08..06bd3ded3f 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConvertedVal.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConvertedVal.java @@ -55,12 +55,12 @@ import org.jooq.conf.ParamType; * not needed. */ @Deprecated -final class ConvertedVal extends AbstractField implements Param { +final class ConvertedVal extends AbstractParamX { private static final long serialVersionUID = 1258437916133900173L; - final Param delegate; + final AbstractParamX delegate; - ConvertedVal(Param delegate, DataType type) { + ConvertedVal(AbstractParamX delegate, DataType type) { super(delegate.getUnqualifiedName(), type); this.delegate = delegate instanceof ConvertedVal ? ((ConvertedVal) delegate).delegate : delegate; @@ -90,18 +90,13 @@ final class ConvertedVal extends AbstractField implements Param { } @Override - public final void setValue(T value) { - delegate.setConverted(value); + public final void setConverted0(Object value) { + delegate.setConverted0(value); } @Override - public final void setConverted(Object value) { - delegate.setConverted(value); - } - - @Override - public final void setInline(boolean inline) { - delegate.setInline(inline); + public final void setInline0(boolean inline) { + delegate.setInline0(inline); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DSL.java b/jOOQ/src/main/java/org/jooq/impl/DSL.java index 709b7628b2..87c77e8803 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DSL.java +++ b/jOOQ/src/main/java/org/jooq/impl/DSL.java @@ -23522,8 +23522,8 @@ public class DSL { @NotNull @Support public static Param inline(T value) { - Param val = val(value); - val.setInline(true); + AbstractParamX val = (AbstractParamX) val(value); + val.setInline0(true); return val; } @@ -24365,8 +24365,8 @@ public class DSL { @NotNull @Support public static Param inline(Object value, Class type) { - Param val = val(value, type); - val.setInline(true); + AbstractParamX val = (AbstractParamX) val(value, type); + val.setInline0(true); return val; } @@ -24389,8 +24389,8 @@ public class DSL { @NotNull @Support public static Param inline(Object value, Field field) { - Param val = val(value, field); - val.setInline(true); + AbstractParamX val = (AbstractParamX) val(value, field); + val.setInline0(true); return val; } @@ -24413,8 +24413,8 @@ public class DSL { @NotNull @Support public static Param inline(Object value, DataType type) { - Param val = val(value, type); - val.setInline(true); + AbstractParamX val = (AbstractParamX) val(value, type); + val.setInline0(true); return val; } diff --git a/jOOQ/src/main/java/org/jooq/impl/Expression.java b/jOOQ/src/main/java/org/jooq/impl/Expression.java index fc8b7c0c73..da922b7dd6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Expression.java +++ b/jOOQ/src/main/java/org/jooq/impl/Expression.java @@ -375,7 +375,7 @@ final class Expression extends AbstractTransformable { Param result = val(u); if (((Param) rhs).isInline()) - result.setInline(true); + ((AbstractParamX) result).setInline0(true); return result; } diff --git a/jOOQ/src/main/java/org/jooq/impl/LazyVal.java b/jOOQ/src/main/java/org/jooq/impl/LazyVal.java index aeb10b51dc..98c026b8de 100644 --- a/jOOQ/src/main/java/org/jooq/impl/LazyVal.java +++ b/jOOQ/src/main/java/org/jooq/impl/LazyVal.java @@ -51,12 +51,12 @@ import org.jooq.conf.ParamType; * * @author Lukas Eder */ -final class LazyVal extends AbstractField implements Param { +final class LazyVal extends AbstractParamX { - private static final long serialVersionUID = 1258437916133900173L; - private final T value; - private final Field field; - private transient Param delegate; + private static final long serialVersionUID = 1258437916133900173L; + private final T value; + private final Field field; + private transient AbstractParamX delegate; LazyVal(T value, Field field) { super(AbstractParam.name(value, null), field.getDataType()); @@ -67,7 +67,7 @@ final class LazyVal extends AbstractField implements Param { private final void init() { if (delegate == null) - delegate = DSL.val(value, field); + delegate = (AbstractParamX) DSL.val(value, field); } // ------------------------------------------------------------------------ @@ -103,21 +103,15 @@ final class LazyVal extends AbstractField implements Param { } @Override - public final void setValue(T value) { + public final void setConverted0(Object value) { init(); - delegate.setValue(value); + delegate.setConverted0(value); } @Override - public final void setConverted(Object value) { + public final void setInline0(boolean inline) { init(); - delegate.setConverted(value); - } - - @Override - public final void setInline(boolean inline) { - init(); - delegate.setInline(inline); + delegate.setInline0(inline); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/Val.java b/jOOQ/src/main/java/org/jooq/impl/Val.java index d97e6a7e0a..610d762559 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Val.java +++ b/jOOQ/src/main/java/org/jooq/impl/Val.java @@ -117,13 +117,13 @@ final class Val extends AbstractParam { final Val copy(Object newValue) { Val w = new Val<>(getDataType().convert(newValue), getDataType(), getParamName()); - w.setInline(isInline()); + w.setInline0(isInline()); return w; } final Val convertTo0(DataType type) { Val w = new Val<>(type.convert(getValue()), type, getParamName()); - w.setInline(isInline()); + w.setInline0(isInline()); return w; }