Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrType.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrType.java (revision 2383) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrType.java (working copy) @@ -71,19 +71,19 @@ static { Map types = new HashMap(); - register(types, PropertyType.BINARY, Types.BLOB, JcrBlob.class, 30, Integer.MAX_VALUE, new BlobTransform()); // assumed - register(types, PropertyType.BOOLEAN, Types.BOOLEAN, Boolean.class, 5, 1, new BooleanTransform()); // 'true' or 'false' - register(types, PropertyType.DATE, Types.TIMESTAMP, Timestamp.class, 30, 10, new DateTransform()); // yyyy-MM-dd'T'HH:mm:ss.SSS+HH:mm - register(types, PropertyType.DOUBLE, Types.DOUBLE, Double.class, 20, 20, new DoubleTransform()); // assumed - register(types, PropertyType.DECIMAL, Types.DECIMAL, BigDecimal.class, 20, 20, new DecimalTransform()); // assumed - register(types, PropertyType.LONG, Types.BIGINT, Long.class, 20, 19, new LongTransform()); // assumed - register(types, PropertyType.NAME, Types.VARCHAR, String.class, 20, Integer.MAX_VALUE, new StringTransform()); // assumed - register(types, PropertyType.PATH, Types.VARCHAR, String.class, 50, Integer.MAX_VALUE, new StringTransform()); // assumed - register(types, PropertyType.REFERENCE, Types.VARCHAR, UUID.class, UUID_LENGTH, UUID_LENGTH, new UUIDTransform()); - register(types, PropertyType.WEAKREFERENCE, Types.VARCHAR, UUID.class, UUID_LENGTH, UUID_LENGTH, new UUIDTransform()); - register(types, PropertyType.URI, Types.VARCHAR, String.class, 50, Integer.MAX_VALUE, new StringTransform()); // assumed - register(types, PropertyType.STRING, Types.VARCHAR, String.class, 50, Integer.MAX_VALUE, new StringTransform()); // assumed - register(types, PropertyType.UNDEFINED, Types.VARCHAR, String.class, 50, Integer.MAX_VALUE, new StringTransform()); // same + register(types, PropertyType.BINARY, Types.BLOB, "Blob", JcrBlob.class, 30, Integer.MAX_VALUE, new BlobTransform()); // assumed + register(types, PropertyType.BOOLEAN, Types.BOOLEAN, "Boolean", Boolean.class, 5, 1, new BooleanTransform()); // 'true' or 'false' + register(types, PropertyType.DATE, Types.TIMESTAMP, "Timestamp", Timestamp.class, 30, 10, new DateTransform()); // yyyy-MM-dd'T'HH:mm:ss.SSS+HH:mm + register(types, PropertyType.DOUBLE, Types.DOUBLE, "Double" ,Double.class, 20, 20, new DoubleTransform()); // assumed + register(types, PropertyType.DECIMAL, Types.DECIMAL, "Bigdecimal", BigDecimal.class, 20, 20, new DecimalTransform()); // assumed + register(types, PropertyType.LONG, Types.BIGINT, "Long", Long.class, 20, 19, new LongTransform()); // assumed + register(types, PropertyType.NAME, Types.VARCHAR, "String", String.class, 20, Integer.MAX_VALUE, new StringTransform()); // assumed + register(types, PropertyType.PATH, Types.VARCHAR, "String", String.class, 50, Integer.MAX_VALUE, new StringTransform()); // assumed + register(types, PropertyType.REFERENCE, Types.VARCHAR, "String", UUID.class, UUID_LENGTH, UUID_LENGTH, new UUIDTransform()); + register(types, PropertyType.WEAKREFERENCE, Types.VARCHAR, "String", UUID.class, UUID_LENGTH, UUID_LENGTH, new UUIDTransform()); + register(types, PropertyType.URI, Types.VARCHAR, "String", String.class, 50, Integer.MAX_VALUE, new StringTransform()); // assumed + register(types, PropertyType.STRING, Types.VARCHAR, "String", String.class, 50, Integer.MAX_VALUE, new StringTransform()); // assumed + register(types, PropertyType.UNDEFINED, Types.VARCHAR, "String", String.class, 50, Integer.MAX_VALUE, new StringTransform()); // same // as // string TYPE_INFO = Collections.unmodifiableMap(types); @@ -92,11 +92,12 @@ private static void register( Map types, int jcrType, int jdbcType, + String typeName, Class clazz, int displaySize, int precision, Transform transform ) { - JcrType type = new JcrType(jcrType, jdbcType, clazz, displaySize, precision, transform); + JcrType type = new JcrType(jcrType, jdbcType, typeName, clazz, displaySize, precision, transform); types.put(type.getJcrName(), type); } @@ -104,12 +105,14 @@ private final String jcrName; private final Class clazz; private final int jdbcType; + private final String typeName; private final int displaySize; private final int precision; private final Transform transform; protected JcrType( int jcrType, int jdbcType, + String typeName, Class clazz, int displaySize, int precision, @@ -119,6 +122,7 @@ this.clazz = clazz; this.displaySize = displaySize; this.jdbcType = jdbcType; + this.typeName = typeName; this.precision = precision; this.transform = transform; assert this.jcrName != null; @@ -153,6 +157,15 @@ public int getJdbcType() { return jdbcType; } + + /** + * Get the native type name associated with the JDBC {@link Types} value. + * + * @return the native JDBC type name; never null + */ + public String getJdbcTypeName() { + return this.typeName; + } /** * Get the default precision used for this JcrType Index: utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrMetaData.java =================================================================== --- utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrMetaData.java (revision 2383) +++ utils/modeshape-jdbc/src/main/java/org/modeshape/jdbc/JcrMetaData.java (working copy) @@ -592,7 +592,7 @@ currentRow.add(type.getName()); // TABLE_NAME currentRow.add(propDefn.getName()); // COLUMN_NAME currentRow.add(jcrtype.getJdbcType()); // DATA_TYPE - currentRow.add(jcrtype.getJcrName()); // TYPE_NAME + currentRow.add(jcrtype.getJdbcTypeName()); // TYPE_NAME currentRow.add(jcrtype.getNominalDisplaySize()); // COLUMN_SIZE currentRow.add("NULL"); // BUFFER_LENGTH currentRow.add(JcrMetaData.DEFAULT_ZERO); // DECIMAL_DIGITS