[jOOQ/jOOQ#11129] Log a warning when users call deprecated Param.setValue(), setConverted(), setInline()
This commit is contained in:
parent
f884803879
commit
e210b1a7ee
@ -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<T> extends AbstractField<T> implements Param<T> {
|
||||
abstract class AbstractParam<T> extends AbstractParamX<T> {
|
||||
|
||||
/**
|
||||
* 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<T> type) {
|
||||
this(value, type, null);
|
||||
@ -130,12 +131,7 @@ abstract class AbstractParam<T> extends AbstractField<T> implements Param<T> {
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
@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<T> extends AbstractField<T> implements Param<T> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public final void setInline(boolean inline) {
|
||||
final void setInline0(boolean inline) {
|
||||
this.inline = inline;
|
||||
}
|
||||
|
||||
|
||||
95
jOOQ/src/main/java/org/jooq/impl/AbstractParamX.java
Normal file
95
jOOQ/src/main/java/org/jooq/impl/AbstractParamX.java
Normal file
@ -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<T> extends AbstractField<T> implements Param<T> {
|
||||
|
||||
/**
|
||||
* Generated UID
|
||||
*/
|
||||
private static final long serialVersionUID = 1311856649676227970L;
|
||||
private static final JooqLogger log = JooqLogger.getLogger(AbstractParam.class);
|
||||
|
||||
AbstractParamX(Name name, DataType<T> 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);
|
||||
}
|
||||
@ -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;
|
||||
}
|
||||
|
||||
@ -55,12 +55,12 @@ import org.jooq.conf.ParamType;
|
||||
* not needed.
|
||||
*/
|
||||
@Deprecated
|
||||
final class ConvertedVal<T> extends AbstractField<T> implements Param<T> {
|
||||
final class ConvertedVal<T> extends AbstractParamX<T> {
|
||||
|
||||
private static final long serialVersionUID = 1258437916133900173L;
|
||||
final Param<?> delegate;
|
||||
final AbstractParamX<?> delegate;
|
||||
|
||||
ConvertedVal(Param<?> delegate, DataType<T> type) {
|
||||
ConvertedVal(AbstractParamX<?> delegate, DataType<T> type) {
|
||||
super(delegate.getUnqualifiedName(), type);
|
||||
|
||||
this.delegate = delegate instanceof ConvertedVal ? ((ConvertedVal<?>) delegate).delegate : delegate;
|
||||
@ -90,18 +90,13 @@ final class ConvertedVal<T> extends AbstractField<T> implements Param<T> {
|
||||
}
|
||||
|
||||
@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
|
||||
|
||||
@ -23522,8 +23522,8 @@ public class DSL {
|
||||
@NotNull
|
||||
@Support
|
||||
public static <T> Param<T> inline(T value) {
|
||||
Param<T> val = val(value);
|
||||
val.setInline(true);
|
||||
AbstractParamX<T> val = (AbstractParamX<T>) val(value);
|
||||
val.setInline0(true);
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -24365,8 +24365,8 @@ public class DSL {
|
||||
@NotNull
|
||||
@Support
|
||||
public static <T> Param<T> inline(Object value, Class<T> type) {
|
||||
Param<T> val = val(value, type);
|
||||
val.setInline(true);
|
||||
AbstractParamX<T> val = (AbstractParamX<T>) val(value, type);
|
||||
val.setInline0(true);
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -24389,8 +24389,8 @@ public class DSL {
|
||||
@NotNull
|
||||
@Support
|
||||
public static <T> Param<T> inline(Object value, Field<T> field) {
|
||||
Param<T> val = val(value, field);
|
||||
val.setInline(true);
|
||||
AbstractParamX<T> val = (AbstractParamX<T>) val(value, field);
|
||||
val.setInline0(true);
|
||||
return val;
|
||||
}
|
||||
|
||||
@ -24413,8 +24413,8 @@ public class DSL {
|
||||
@NotNull
|
||||
@Support
|
||||
public static <T> Param<T> inline(Object value, DataType<T> type) {
|
||||
Param<T> val = val(value, type);
|
||||
val.setInline(true);
|
||||
AbstractParamX<T> val = (AbstractParamX<T>) val(value, type);
|
||||
val.setInline0(true);
|
||||
return val;
|
||||
}
|
||||
|
||||
|
||||
@ -375,7 +375,7 @@ final class Expression<T> extends AbstractTransformable<T> {
|
||||
Param<U> result = val(u);
|
||||
|
||||
if (((Param<?>) rhs).isInline())
|
||||
result.setInline(true);
|
||||
((AbstractParamX<?>) result).setInline0(true);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -51,12 +51,12 @@ import org.jooq.conf.ParamType;
|
||||
*
|
||||
* @author Lukas Eder
|
||||
*/
|
||||
final class LazyVal<T> extends AbstractField<T> implements Param<T> {
|
||||
final class LazyVal<T> extends AbstractParamX<T> {
|
||||
|
||||
private static final long serialVersionUID = 1258437916133900173L;
|
||||
private final T value;
|
||||
private final Field<T> field;
|
||||
private transient Param<T> delegate;
|
||||
private static final long serialVersionUID = 1258437916133900173L;
|
||||
private final T value;
|
||||
private final Field<T> field;
|
||||
private transient AbstractParamX<T> delegate;
|
||||
|
||||
LazyVal(T value, Field<T> field) {
|
||||
super(AbstractParam.name(value, null), field.getDataType());
|
||||
@ -67,7 +67,7 @@ final class LazyVal<T> extends AbstractField<T> implements Param<T> {
|
||||
|
||||
private final void init() {
|
||||
if (delegate == null)
|
||||
delegate = DSL.val(value, field);
|
||||
delegate = (AbstractParamX<T>) DSL.val(value, field);
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
@ -103,21 +103,15 @@ final class LazyVal<T> extends AbstractField<T> implements Param<T> {
|
||||
}
|
||||
|
||||
@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
|
||||
|
||||
@ -117,13 +117,13 @@ final class Val<T> extends AbstractParam<T> {
|
||||
|
||||
final Val<T> copy(Object newValue) {
|
||||
Val<T> w = new Val<>(getDataType().convert(newValue), getDataType(), getParamName());
|
||||
w.setInline(isInline());
|
||||
w.setInline0(isInline());
|
||||
return w;
|
||||
}
|
||||
|
||||
final <U> Val<U> convertTo0(DataType<U> type) {
|
||||
Val<U> w = new Val<>(type.convert(getValue()), type, getParamName());
|
||||
w.setInline(isInline());
|
||||
w.setInline0(isInline());
|
||||
return w;
|
||||
}
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user