[jOOQ/jOOQ#11330] Let Parameter<T> extend Variable<T>

This commit is contained in:
Lukas Eder 2021-01-28 09:45:33 +01:00
parent fb83bee182
commit cfdc38c081
4 changed files with 67 additions and 5 deletions

View File

@ -49,7 +49,12 @@ package org.jooq;
* @param <T> The parameter type
* @author Lukas Eder
*/
public interface Parameter<T> extends Named, Typed<T> {
public interface Parameter<T>
extends
Named,
Typed<T>
{
/**
* Whether this parameter has a default value

View File

@ -37,7 +37,7 @@
*/
package org.jooq;
import org.jetbrains.annotations.*;

View File

@ -40,16 +40,22 @@ package org.jooq.impl;
import org.jooq.Context;
import org.jooq.DataType;
import org.jooq.Field;
import org.jooq.Name;
import org.jooq.ParamMode;
import org.jooq.Parameter;
// ...
import org.jooq.Record1;
import org.jooq.Select;
import org.jooq.Statement;
// ...
/**
* A common base class for stored procedure parameters
*
* @author Lukas Eder
*/
final class ParameterImpl<T> extends AbstractTypedNamed<T> implements Parameter<T> {
final class ParameterImpl<T> extends AbstractField<T> implements Parameter<T> {
private static final long serialVersionUID = -5277225593751085577L;
@ -57,6 +63,13 @@ final class ParameterImpl<T> extends AbstractTypedNamed<T> implements Parameter<
private final boolean isDefaulted;
private final boolean isUnnamed;
ParameterImpl(ParamMode paramMode, Name name, DataType<T> type) {
this(paramMode, name, type, type.defaulted(), name == null || name.empty());
}
@ -66,18 +79,35 @@ final class ParameterImpl<T> extends AbstractTypedNamed<T> implements Parameter<
*/
@Deprecated
ParameterImpl(ParamMode paramMode, Name name, DataType<T> type, boolean isDefaulted, boolean isUnnamed) {
super(name, CommentImpl.NO_COMMENT, type);
super(name, type);
this.paramMode = paramMode;
this.isDefaulted = isDefaulted;
this.isUnnamed = isUnnamed;
}
// -------------------------------------------------------------------------
// XXX: QueryPart API
// -------------------------------------------------------------------------
@Override
public final void accept(Context<?> ctx) {
ctx.visit(getUnqualifiedName());
}
// -------------------------------------------------------------------------
// XXX: Parameter API
// -------------------------------------------------------------------------
@Override
public final ParamMode getParamMode() {
return paramMode;
@ -92,4 +122,32 @@ final class ParameterImpl<T> extends AbstractTypedNamed<T> implements Parameter<
public final boolean isUnnamed() {
return isUnnamed;
}
}

View File

@ -125,6 +125,5 @@ package org.jooq.impl;