From 746a4ff863df692e00ca495c3ed32ab95a03b778 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sun, 9 Oct 2011 10:27:07 +0000 Subject: [PATCH] [#858] SQLDataType.getSQLDataType() should return itself, instead of null --- .../main/java/org/jooq/impl/AbstractDataType.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java index c9d393f79f..4e5d3f5b98 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDataType.java @@ -115,15 +115,22 @@ public abstract class AbstractDataType implements DataType { this(dialect, sqldatatype, type, typeName, typeName, hasPrecisionAndScale); } - protected AbstractDataType(SQLDialect dialect, SQLDataType sqldatatype, Class type, String typeName, String castTypeName, boolean hasPrecisionAndScale) { + protected AbstractDataType(SQLDialect dialect, SQLDataType sqlDataType, Class type, String typeName, String castTypeName, boolean hasPrecisionAndScale) { this.dialect = dialect; - this.sqlDataType = sqldatatype; + + // [#858] SQLDataTypes should reference themselves for more convenience + this.sqlDataType = (SQLDataType) ((this instanceof SQLDataType) ? this : sqlDataType); this.type = type; this.typeName = typeName; this.castTypeName = castTypeName; this.hasPrecisionAndScale = hasPrecisionAndScale; this.arrayType = (Class) Array.newInstance(type, 0).getClass(); + init(); + } + + private final void init() { + // Dialect-specific data types if (dialect != null) { if (typesByTypeName[dialect.ordinal()].get(FieldTypeHelper.normalise(typeName)) == null) { @@ -134,8 +141,8 @@ public abstract class AbstractDataType implements DataType { typesByType[dialect.ordinal()].put(type, this); } - if (typesBySQLDataType[dialect.ordinal()].get(sqldatatype) == null) { - typesBySQLDataType[dialect.ordinal()].put(sqldatatype, this); + if (typesBySQLDataType[dialect.ordinal()].get(sqlDataType) == null) { + typesBySQLDataType[dialect.ordinal()].put(sqlDataType, this); } }