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 super T, U> binding;
- @SuppressWarnings("unchecked")
ConvertedDataType(AbstractDataType delegate, Binding super T, U> 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, U> 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 super U, X> converter) {
+ public final DataType asConvertedDataType(Converter super U, X> 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