diff --git a/jOOQ/src/main/java/org/jooq/impl/ConvertedDataType.java b/jOOQ/src/main/java/org/jooq/impl/ConvertedDataType.java index 9681d53fd9..11ece819da 100644 --- a/jOOQ/src/main/java/org/jooq/impl/ConvertedDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/ConvertedDataType.java @@ -47,66 +47,154 @@ import org.jooq.BindingRegisterContext; import org.jooq.BindingSQLContext; import org.jooq.BindingSetSQLOutputContext; import org.jooq.BindingSetStatementContext; +import org.jooq.CharacterSet; +import org.jooq.Collation; import org.jooq.Configuration; import org.jooq.Converter; import org.jooq.Converters; import org.jooq.DataType; import org.jooq.Field; +import org.jooq.Nullability; +import org.jooq.SQLDialect; /** * A DataType used for converted types using {@link Converter} * * @author Lukas Eder - * @deprecated - 3.6.0 - [#3889] - Remove this type, it should not be needed any - * longer */ -@Deprecated -final class ConvertedDataType extends DefaultDataType { +@SuppressWarnings({ "rawtypes", "unchecked" }) +final class ConvertedDataType extends AbstractDataType { /** * Generated UID */ private static final long serialVersionUID = -2321926692580974126L; - private final DataType delegate; + private final AbstractDataType delegate; + private final Binding binding; - @SuppressWarnings("unchecked") ConvertedDataType(AbstractDataType delegate, Binding binding) { - super( - null, - binding.converter().toType(), - binding, - delegate.getQualifiedName(), - delegate.getTypeName(), - delegate.getCastTypeName(), - delegate.precisionDefined() ? delegate.precision() : null, - delegate.scaleDefined() ? delegate.scale() : null, - delegate.lengthDefined() ? delegate.length() : null, - delegate.nullability(), - (Field) delegate.defaultValue() - ); + super(delegate.getQualifiedName(), delegate.getCommentPart()); this.delegate = delegate; + this.binding = binding; } @Override - public int getSQLType() { - return delegate.getSQLType(); + AbstractDataType construct( + Integer newPrecision, + Integer newScale, + Integer newLength, + Nullability newNullability, + Collation newCollation, + CharacterSet newCharacterSet, + boolean newIdentity, + Field newDefaultValue + ) { + return (AbstractDataType) delegate.construct( + newPrecision, + newScale, + newLength, + newNullability, + newCollation, + newCharacterSet, + newIdentity, + (Field) newDefaultValue + ).asConvertedDataType(binding); } @Override - public String getTypeName(Configuration configuration) { - return delegate.getTypeName(configuration); + public final DataType getSQLDataType() { + return (DataType) delegate.getSQLDataType(); } @Override - public String getCastTypeName(Configuration configuration) { - return delegate.getCastTypeName(configuration); + public final DataType getDataType(Configuration configuration) { + return (DataType) delegate.getDataType(configuration); } - @SuppressWarnings("unchecked") @Override - public U convert(Object object) { + public final Binding getBinding() { + return binding; + } + + @Override + public final Class getType() { + return binding.converter().toType(); + } + + @Override + public final SQLDialect getDialect() { + return delegate.getDialect(); + } + + @Override + public final Nullability nullability() { + return delegate.nullability(); + } + + @Override + public final Collation collation() { + return delegate.collation(); + } + + @Override + public final CharacterSet characterSet() { + return delegate.characterSet(); + } + + @Override + public final boolean identity() { + return delegate.identity(); + } + + @Override + public final Field default_() { + return (Field) delegate.default_(); + } + + @Override + final String typeName0() { + return delegate.typeName0(); + } + + @Override + final String castTypePrefix0() { + return delegate.castTypePrefix0(); + } + + @Override + final String castTypeSuffix0() { + return delegate.castTypeSuffix0(); + } + + @Override + final String castTypeName0() { + return delegate.castTypeName0(); + } + + @Override + final Class tType0() { + return delegate.tType0(); + } + + @Override + final Integer precision0() { + return delegate.precision0(); + } + + @Override + final Integer scale0() { + return delegate.scale0(); + } + + @Override + final Integer length0() { + return delegate.length0(); + } + + @Override + public final U convert(Object object) { if (getConverter().toType().isInstance(object)) return (U) object; @@ -115,9 +203,8 @@ final class ConvertedDataType extends DefaultDataType { return ((Converter) getConverter()).from(delegate.convert(object)); } - @SuppressWarnings({ "unchecked", "rawtypes" }) @Override - public DataType asConvertedDataType(Converter converter) { + public final DataType asConvertedDataType(Converter converter) { return super.asConvertedDataType(new ChainedConverterBinding(getBinding(), converter)); } @@ -183,4 +270,4 @@ final class ConvertedDataType extends DefaultDataType { delegate.get(ctx.convert(suffix)); } } -} +} \ No newline at end of file