You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by ev...@apache.org on 2010/01/14 11:14:56 UTC
svn commit: r899143 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/jdbc/ main/java/org/apache/cayenne/dba/
test/java/org/apache/art/ test/java/org/apache/art/auto/
test/java/org/apache/cayenne/acc...
Author: evgeny
Date: Thu Jan 14 10:14:55 2010
New Revision: 899143
URL: http://svn.apache.org/viewvc?rev=899143&view=rev
Log:
CAY-1354
Wrong Types mapping for selected values in Row Queries
Fixed default mapping for most of types. Add JUnits to control regression. Still problem with mapping of float.
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap1.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap2.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap1.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap2.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/TypesMapping.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/testmap.map.xml
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java?rev=899143&r1=899142&r2=899143&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java Thu Jan 14 10:14:55 2010
@@ -62,7 +62,9 @@
* Creates a column descriptor with user-specified parameters.
*
* @since 1.2
+ * @deprecated use ColumnDescriptor(String columnName, int jdbcType) instead
*/
+ @Deprecated
public ColumnDescriptor(String columnName, int jdbcType, String javaClass) {
this.name = columnName;
this.dataRowKey = columnName;
@@ -71,17 +73,25 @@
}
/**
+ * Creates a column descriptor with user-specified parameters.
+ *
+ * @since 3.1
+ */
+ public ColumnDescriptor(String columnName, int jdbcType) {
+ this.name = columnName;
+ this.dataRowKey = columnName;
+ this.jdbcType = jdbcType;
+ this.javaClass = TypesMapping.getJavaBySqlType(jdbcType);
+ }
+
+ /**
* Creates a ColumnDescriptor from Cayenne DbAttribute.
*
* @since 1.2
*/
public ColumnDescriptor(DbAttribute attribute, String tableAlias) {
- this.name = attribute.getName();
+ this(attribute.getName(), attribute.getType());
this.namePrefix = tableAlias;
- this.dataRowKey = name;
- this.jdbcType = attribute.getType();
- this.javaClass = getDefaultJavaClass(attribute.getMaxLength(), attribute
- .getScale());
if (attribute.getEntity() != null) {
this.tableName = attribute.getEntity().getName();
@@ -104,11 +114,7 @@
* @since 1.2
*/
public ColumnDescriptor(ProcedureParameter parameter) {
- this.name = parameter.getName();
- this.dataRowKey = name;
- this.jdbcType = parameter.getType();
- this.javaClass = getDefaultJavaClass(parameter.getMaxLength(), parameter
- .getPrecision());
+ this(parameter.getName(), parameter.getType());
if (parameter.getProcedure() != null) {
this.procedureName = parameter.getProcedure().getName();
@@ -118,9 +124,24 @@
/**
* Creates a ColumnDescriptor using ResultSetMetaData.
*
+ * @since 3.1
+ */
+ public ColumnDescriptor(String columnName, ResultSetMetaData metaData, int position)
+ throws SQLException {
+ this(columnName, metaData.getColumnType(position));
+ }
+
+ /**
+ * Creates a ColumnDescriptor using ResultSetMetaData.
+ *
* @since 1.2
*/
public ColumnDescriptor(ResultSetMetaData metaData, int position) throws SQLException {
+ this(getColumnNameFromMeta(metaData, position), metaData, position);
+ }
+
+ private static String getColumnNameFromMeta(ResultSetMetaData metaData, int position)
+ throws SQLException {
String name = metaData.getColumnLabel(position);
if (name == null || name.length() == 0) {
name = metaData.getColumnName(position);
@@ -129,11 +150,7 @@
name = "column_" + position;
}
}
-
- this.name = name;
- this.dataRowKey = name;
- this.jdbcType = metaData.getColumnType(position);
- this.javaClass = metaData.getColumnClassName(position);
+ return name;
}
/**
@@ -185,7 +202,9 @@
* Returns a default Java class for an internal JDBC type.
*
* @since 1.2
+ * @deprecated use TypesMapping.getJavaBySqlType(int type) instead
*/
+ @Deprecated
public String getDefaultJavaClass(int size, int scale) {
return TypesMapping.getJavaBySqlType(getJdbcType(), size, scale);
}
@@ -198,7 +217,7 @@
public String getQualifiedColumnName() {
return (namePrefix != null) ? namePrefix + '.' + name : name;
}
-
+
public String getQualifiedColumnNameWithQuoteSqlIdentifiers(QuotingStrategy strategy) {
String nameWithQuoteSqlIdentifiers = strategy.quoteString( name );
return (namePrefix != null) ? strategy.quoteString( namePrefix ) + '.' +
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java?rev=899143&r1=899142&r2=899143&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java Thu Jan 14 10:14:55 2010
@@ -158,10 +158,7 @@
}
}
// columnArray doesn't contain ColumnDescriptor for specified column
- return new ColumnDescriptor(
- rowKey,
- resultSetMetadata.getColumnType(position),
- resultSetMetadata.getColumnClassName(position));
+ return new ColumnDescriptor(rowKey, resultSetMetadata, position);
}
/**
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/TypesMapping.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/TypesMapping.java?rev=899143&r1=899142&r2=899143&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/TypesMapping.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/TypesMapping.java Thu Jan 14 10:14:55 2010
@@ -449,7 +449,10 @@
* etc.
*
* @return Fully qualified Java type name or null if not found.
+ * @deprecated use getJavaBySqlType(int type) instead. No usable since "0" can means
+ * "undefined", not really zero.
*/
+ @Deprecated
public static String getJavaBySqlType(int type, int length, int scale) {
// this does not always produce the correct result. See for instance CAY-1052 - PG
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap1.java?rev=899143&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap1.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap1.java Thu Jan 14 10:14:55 2010
@@ -0,0 +1,7 @@
+package org.apache.art;
+
+import org.apache.art.auto._ReturnTypesMap1;
+
+public class ReturnTypesMap1 extends _ReturnTypesMap1 {
+
+}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap2.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap2.java?rev=899143&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap2.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/ReturnTypesMap2.java Thu Jan 14 10:14:55 2010
@@ -0,0 +1,7 @@
+package org.apache.art;
+
+import org.apache.art.auto._ReturnTypesMap2;
+
+public class ReturnTypesMap2 extends _ReturnTypesMap2 {
+
+}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap1.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap1.java?rev=899143&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap1.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap1.java Thu Jan 14 10:14:55 2010
@@ -0,0 +1,163 @@
+package org.apache.art.auto;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+import org.apache.cayenne.CayenneDataObject;
+
+/**
+ * Class _ReturnTypesMap was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _ReturnTypesMap1 extends CayenneDataObject {
+
+ public static final String BIGINT_COLUMN_PROPERTY = "bigintColumn";
+ public static final String BIT_COLUMN_PROPERTY = "bitColumn";
+ public static final String BOOLEAN_COLUMN_PROPERTY = "booleanColumn";
+ public static final String CHAR_COLUMN_PROPERTY = "charColumn";
+ public static final String CLOB_COLUMN_PROPERTY = "clobColumn";
+ public static final String DATE_COLUMN_PROPERTY = "dateColumn";
+ public static final String DECIMAL_COLUMN_PROPERTY = "decimalColumn";
+ public static final String DOUBLE_COLUMN_PROPERTY = "doubleColumn";
+ public static final String FLOAT_COLUMN_PROPERTY = "floatColumn";
+ public static final String INTEGER_COLUMN_PROPERTY = "integerColumn";
+ public static final String LONGVARCHAR_COLUMN_PROPERTY = "longvarcharColumn";
+ public static final String NUMERIC_COLUMN_PROPERTY = "numericColumn";
+ public static final String REAL_COLUMN_PROPERTY = "realColumn";
+ public static final String SMALLINT_COLUMN_PROPERTY = "smallintColumn";
+ public static final String TIME_COLUMN_PROPERTY = "timeColumn";
+ public static final String TIMESTAMP_COLUMN_PROPERTY = "timestampColumn";
+ public static final String TINYINT_COLUMN_PROPERTY = "tinyintColumn";
+ public static final String VARCHAR_COLUMN_PROPERTY = "varcharColumn";
+
+ public static final String AAAID_PK_COLUMN = "AAAID";
+
+ public void setBigintColumn(Long bigintColumn) {
+ writeProperty("bigintColumn", bigintColumn);
+ }
+ public Long getBigintColumn() {
+ return (Long)readProperty("bigintColumn");
+ }
+
+ public void setBitColumn(Boolean bitColumn) {
+ writeProperty("bitColumn", bitColumn);
+ }
+ public Boolean getBitColumn() {
+ return (Boolean)readProperty("bitColumn");
+ }
+
+ public void setBooleanColumn(Boolean booleanColumn) {
+ writeProperty("booleanColumn", booleanColumn);
+ }
+ public Boolean getBooleanColumn() {
+ return (Boolean)readProperty("booleanColumn");
+ }
+
+ public void setCharColumn(String charColumn) {
+ writeProperty("charColumn", charColumn);
+ }
+ public String getCharColumn() {
+ return (String)readProperty("charColumn");
+ }
+
+ public void setClobColumn(String clobColumn) {
+ writeProperty("clobColumn", clobColumn);
+ }
+ public String getClobColumn() {
+ return (String)readProperty("clobColumn");
+ }
+
+ public void setDateColumn(Date dateColumn) {
+ writeProperty("dateColumn", dateColumn);
+ }
+ public Date getDateColumn() {
+ return (Date)readProperty("dateColumn");
+ }
+
+ public void setDecimalColumn(BigDecimal decimalColumn) {
+ writeProperty("decimalColumn", decimalColumn);
+ }
+ public BigDecimal getDecimalColumn() {
+ return (BigDecimal)readProperty("decimalColumn");
+ }
+
+ public void setDoubleColumn(Double doubleColumn) {
+ writeProperty("doubleColumn", doubleColumn);
+ }
+ public Double getDoubleColumn() {
+ return (Double)readProperty("doubleColumn");
+ }
+
+ public void setFloatColumn(Float floatColumn) {
+ writeProperty("floatColumn", floatColumn);
+ }
+ public Float getFloatColumn() {
+ return (Float)readProperty("floatColumn");
+ }
+
+ public void setIntegerColumn(Integer integerColumn) {
+ writeProperty("integerColumn", integerColumn);
+ }
+ public Integer getIntegerColumn() {
+ return (Integer)readProperty("integerColumn");
+ }
+
+ public void setLongvarcharColumn(String longvarcharColumn) {
+ writeProperty("longvarcharColumn", longvarcharColumn);
+ }
+ public String getLongvarcharColumn() {
+ return (String)readProperty("longvarcharColumn");
+ }
+
+ public void setNumericColumn(BigDecimal numericColumn) {
+ writeProperty("numericColumn", numericColumn);
+ }
+ public BigDecimal getNumericColumn() {
+ return (BigDecimal)readProperty("numericColumn");
+ }
+
+ public void setRealColumn(Float realColumn) {
+ writeProperty("realColumn", realColumn);
+ }
+ public Float getRealColumn() {
+ return (Float)readProperty("realColumn");
+ }
+
+ public void setSmallintColumn(Short smallintColumn) {
+ writeProperty("smallintColumn", smallintColumn);
+ }
+ public Short getSmallintColumn() {
+ return (Short)readProperty("smallintColumn");
+ }
+
+ public void setTimeColumn(Date timeColumn) {
+ writeProperty("timeColumn", timeColumn);
+ }
+ public Date getTimeColumn() {
+ return (Date)readProperty("timeColumn");
+ }
+
+ public void setTimestampColumn(Date timestampColumn) {
+ writeProperty("timestampColumn", timestampColumn);
+ }
+ public Date getTimestampColumn() {
+ return (Date)readProperty("timestampColumn");
+ }
+
+ public void setTinyintColumn(Byte tinyintColumn) {
+ writeProperty("tinyintColumn", tinyintColumn);
+ }
+ public Byte getTinyintColumn() {
+ return (Byte)readProperty("tinyintColumn");
+ }
+
+ public void setVarcharColumn(String varcharColumn) {
+ writeProperty("varcharColumn", varcharColumn);
+ }
+ public String getVarcharColumn() {
+ return (String)readProperty("varcharColumn");
+ }
+
+}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap2.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap2.java?rev=899143&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap2.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/art/auto/_ReturnTypesMap2.java Thu Jan 14 10:14:55 2010
@@ -0,0 +1,48 @@
+package org.apache.art.auto;
+
+import org.apache.cayenne.CayenneDataObject;
+
+/**
+ * Class _ReturnTypesMap was generated by Cayenne.
+ * It is probably a good idea to avoid changing this class manually,
+ * since it may be overwritten next time code is regenerated.
+ * If you need to make any customizations, please use subclass.
+ */
+public abstract class _ReturnTypesMap2 extends CayenneDataObject {
+
+ public static final String BINARY_COLUMN_PROPERTY = "binaryColumn";
+ public static final String BLOB_COLUMN_PROPERTY = "blobColumn";
+ public static final String LONGVARBINARY_COLUMN_PROPERTY = "longvarbinaryColumn";
+ public static final String VARBINARY_COLUMN_PROPERTY = "varbinaryColumn";
+
+ public static final String AAAID_PK_COLUMN = "AAAID";
+
+ public void setBinaryColumn(byte[] binaryColumn) {
+ writeProperty("binaryColumn", binaryColumn);
+ }
+ public byte[] getBinaryColumn() {
+ return (byte[])readProperty("binaryColumn");
+ }
+
+ public void setBlobColumn(byte[] blobColumn) {
+ writeProperty("blobColumn", blobColumn);
+ }
+ public byte[] getBlobColumn() {
+ return (byte[])readProperty("blobColumn");
+ }
+
+ public void setLongvarbinaryColumn(byte[] longvarbinaryColumn) {
+ writeProperty("longvarbinaryColumn", longvarbinaryColumn);
+ }
+ public byte[] getLongvarbinaryColumn() {
+ return (byte[])readProperty("longvarbinaryColumn");
+ }
+
+ public void setVarbinaryColumn(byte[] varbinaryColumn) {
+ writeProperty("varbinaryColumn", varbinaryColumn);
+ }
+ public byte[] getVarbinaryColumn() {
+ return (byte[])readProperty("varbinaryColumn");
+ }
+
+}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java?rev=899143&r1=899142&r2=899143&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/DataContextProcedureQueryTest.java Thu Jan 14 10:14:55 2010
@@ -357,12 +357,9 @@
ColumnDescriptor[] columns = new ColumnDescriptor[3];
// read ID as Long, and everything else as default types
- columns[0] = new ColumnDescriptor("ARTIST_ID", Types.INTEGER, Long.class
- .getName());
- columns[1] = new ColumnDescriptor("ARTIST_NAME", Types.CHAR, String.class
- .getName());
- columns[2] = new ColumnDescriptor("DATE_OF_BIRTH", Types.DATE, Date.class
- .getName());
+ columns[0] = new ColumnDescriptor("ARTIST_ID", Types.BIGINT);
+ columns[1] = new ColumnDescriptor("ARTIST_NAME", Types.CHAR);
+ columns[2] = new ColumnDescriptor("DATE_OF_BIRTH", Types.DATE);
q.addResultDescriptor(columns);
List rows = runProcedureSelect(q);
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java?rev=899143&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/ReturnTypesMappingTest.java Thu Jan 14 10:14:55 2010
@@ -0,0 +1,796 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.access;
+
+import java.math.BigDecimal;
+import java.sql.Time;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.Date;
+
+import org.apache.art.DateTestEntity;
+import org.apache.art.ReturnTypesMap1;
+import org.apache.art.ReturnTypesMap2;
+import org.apache.cayenne.DataRow;
+import org.apache.cayenne.query.NamedQuery;
+import org.apache.cayenne.query.SelectQuery;
+import org.apache.cayenne.unit.CayenneCase;
+
+/**
+ * Test Types mapping for selected columns
+ */
+public class ReturnTypesMappingTest extends CayenneCase {
+
+ protected DataContext context;
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ deleteTestData();
+ context = createDataContext();
+ }
+
+ public void testBIGINT() throws Exception {
+ String columnName = "BIGINT_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Long bigintValue = 5326457654783454355l;
+ test.setBigintColumn(bigintValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Long.class, columnValue.getClass());
+ assertEquals(bigintValue, columnValue);
+ }
+
+ public void testBIGINT2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Long bigintValue = 5326457654783454355l;
+ test.setBigintColumn(bigintValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Long columnValue = testRead.getBigintColumn();
+ assertNotNull(columnValue);
+ assertEquals(Long.class, columnValue.getClass());
+ assertEquals(bigintValue, columnValue);
+ }
+
+ public void testBINARY() throws Exception {
+ String columnName = "BINARY_COLUMN";
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] binaryValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setBinaryColumn(binaryValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(binaryValue, (byte[]) columnValue));
+ }
+
+ public void testBINARY2() throws Exception {
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] binaryValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setBinaryColumn(binaryValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+ ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+ byte[] columnValue = testRead.getBinaryColumn();
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(binaryValue, columnValue));
+ }
+
+ public void testBIT() throws Exception {
+ String columnName = "BIT_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Boolean bitValue = true;
+ test.setBitColumn(bitValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Boolean.class, columnValue.getClass());
+ assertEquals(bitValue, columnValue);
+ }
+
+ public void testBIT2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Boolean bitValue = true;
+ test.setBitColumn(bitValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Boolean columnValue = testRead.getBitColumn();
+ assertNotNull(columnValue);
+ assertEquals(Boolean.class, columnValue.getClass());
+ assertEquals(bitValue, columnValue);
+ }
+
+ public void testBLOB() throws Exception {
+ String columnName = "BLOB_COLUMN";
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] blobValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setBlobColumn(blobValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(blobValue, (byte[]) columnValue));
+ }
+
+ public void testBLOB2() throws Exception {
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] blobValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setBlobColumn(blobValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+ ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+ byte[] columnValue = testRead.getBlobColumn();
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(blobValue, columnValue));
+ }
+
+ public void testBOOLEAN() throws Exception {
+ String columnName = "BOOLEAN_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Boolean booleanValue = true;
+ test.setBooleanColumn(booleanValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Boolean.class, columnValue.getClass());
+ assertEquals(booleanValue, columnValue);
+ }
+
+ public void testBOOLEAN2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Boolean booleanValue = true;
+ test.setBooleanColumn(booleanValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Boolean columnValue = testRead.getBooleanColumn();
+ assertNotNull(columnValue);
+ assertEquals(Boolean.class, columnValue.getClass());
+ assertEquals(booleanValue, columnValue);
+ }
+
+ public void testCHAR() throws Exception {
+ String columnName = "CHAR_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ String charValue = "Char string for tests!";
+ test.setCharColumn(charValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(charValue, columnValue);
+ }
+
+ public void testCHAR2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ String charValue = "Char string for tests!";
+ test.setCharColumn(charValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ String columnValue = testRead.getCharColumn();
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(charValue, columnValue);
+ }
+
+ public void testCLOB() throws Exception {
+ String columnName = "CLOB_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < 10000; i++) {
+ buffer.append("CLOB very large string for tests!!!!\n");
+ }
+ String clobValue = buffer.toString();
+ test.setClobColumn(clobValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(clobValue, columnValue);
+ }
+
+ public void testCLOB2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < 10000; i++) {
+ buffer.append("CLOB very large string for tests!!!!\n");
+ }
+ String clobValue = buffer.toString();
+ test.setClobColumn(clobValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ String columnValue = testRead.getClobColumn();
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(clobValue, columnValue);
+ }
+
+ public void testDATE() throws Exception {
+ String columnName = "DATE_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Calendar cal = Calendar.getInstance();
+ cal.clear();
+ cal.set(2002, 1, 1);
+ Date dateValue = cal.getTime();
+ test.setDateColumn(dateValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Date.class, columnValue.getClass());
+ assertEquals(dateValue.toString(), columnValue.toString());
+ }
+
+ public void testDATE2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Calendar cal = Calendar.getInstance();
+ cal.clear();
+ cal.set(2002, 1, 1);
+ Date dateValue = cal.getTime();
+ test.setDateColumn(dateValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Date columnValue = testRead.getDateColumn();
+ assertNotNull(columnValue);
+ assertEquals(Date.class, columnValue.getClass());
+ assertEquals(dateValue.toString(), columnValue.toString());
+ }
+
+ public void testDECIMAL() throws Exception {
+ String columnName = "DECIMAL_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ BigDecimal decimalValue = new BigDecimal("578438.57843");
+ test.setDecimalColumn(decimalValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(BigDecimal.class, columnValue.getClass());
+ assertEquals(decimalValue, columnValue);
+ }
+
+ public void testDECIMAL2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ BigDecimal decimalValue = new BigDecimal("578438.57843");
+ test.setDecimalColumn(decimalValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ BigDecimal columnValue = testRead.getDecimalColumn();
+ assertNotNull(columnValue);
+ assertEquals(BigDecimal.class, columnValue.getClass());
+ assertEquals(decimalValue, columnValue);
+ }
+
+ public void testDOUBLE() throws Exception {
+ String columnName = "DOUBLE_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Double doubleValue = 3298.4349783d;
+ test.setDoubleColumn(doubleValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Double.class, columnValue.getClass());
+ assertEquals(doubleValue, columnValue);
+ }
+
+ public void testDOUBLE2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Double doubleValue = 3298.4349783d;
+ test.setDoubleColumn(doubleValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Double columnValue = testRead.getDoubleColumn();
+ assertNotNull(columnValue);
+ assertEquals(Double.class, columnValue.getClass());
+ assertEquals(doubleValue, columnValue);
+ }
+
+ public void testFLOAT() throws Exception {
+ String columnName = "FLOAT_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Float floatValue = 375.437f;
+ test.setFloatColumn(floatValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Float.class, columnValue.getClass());
+ assertEquals(floatValue, columnValue);
+ }
+
+ public void testFLOAT2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Float floatValue = 375.437f;
+ test.setFloatColumn(floatValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Float columnValue = testRead.getFloatColumn();
+ assertNotNull(columnValue);
+ assertEquals(Float.class, columnValue.getClass());
+ assertEquals(floatValue, columnValue);
+ }
+
+ public void testINTEGER() throws Exception {
+ String columnName = "INTEGER_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Integer integerValue = 54235;
+ test.setIntegerColumn(integerValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Integer.class, columnValue.getClass());
+ assertEquals(integerValue, columnValue);
+ }
+
+ public void testINTEGER2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Integer integerValue = 54235;
+ test.setIntegerColumn(integerValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Integer columnValue = testRead.getIntegerColumn();
+ assertNotNull(columnValue);
+ assertEquals(Integer.class, columnValue.getClass());
+ assertEquals(integerValue, columnValue);
+ }
+
+ public void testLONGVARBINARY() throws Exception {
+ String columnName = "LONGVARBINARY_COLUMN";
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] longvarbinaryValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setLongvarbinaryColumn(longvarbinaryValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(longvarbinaryValue, (byte[]) columnValue));
+ }
+
+ public void testLONGVARBINARY2() throws Exception {
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] longvarbinaryValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setLongvarbinaryColumn(longvarbinaryValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+ ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+ byte[] columnValue = testRead.getLongvarbinaryColumn();
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(longvarbinaryValue, columnValue));
+ }
+
+ public void testLONGVARCHAR() throws Exception {
+ String columnName = "LONGVARCHAR_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < 10000; i++) {
+ buffer.append("LONGVARCHAR very large string for tests!!!!\n");
+ }
+ String longvarcharValue = buffer.toString();
+ test.setLongvarcharColumn(longvarcharValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(longvarcharValue, columnValue);
+ }
+
+ public void testLONGVARCHAR2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ StringBuffer buffer = new StringBuffer();
+ for (int i = 0; i < 10000; i++) {
+ buffer.append("LONGVARCHAR very large string for tests!!!!\n");
+ }
+ String longvarcharValue = buffer.toString();
+ test.setLongvarcharColumn(longvarcharValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ String columnValue = testRead.getLongvarcharColumn();
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(longvarcharValue, columnValue);
+ }
+
+ public void testNUMERIC() throws Exception {
+ String columnName = "NUMERIC_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ BigDecimal numericValue = new BigDecimal("578438.57843");
+ test.setNumericColumn(numericValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(BigDecimal.class, columnValue.getClass());
+ assertEquals(numericValue, columnValue);
+ }
+
+ public void testNUMERIC2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ BigDecimal numericValue = new BigDecimal("578438.57843");
+ test.setNumericColumn(numericValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ BigDecimal columnValue = testRead.getNumericColumn();
+ assertNotNull(columnValue);
+ assertEquals(BigDecimal.class, columnValue.getClass());
+ assertEquals(numericValue, columnValue);
+ }
+
+ public void testREAL() throws Exception {
+ String columnName = "REAL_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Float realValue = 5788.57843f;
+ test.setRealColumn(realValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Float.class, columnValue.getClass());
+ assertEquals(realValue, columnValue);
+ }
+
+ public void testREAL2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Float realValue = 5788.57843f;
+ test.setRealColumn(realValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Float columnValue = testRead.getRealColumn();
+ assertNotNull(columnValue);
+ assertEquals(Float.class, columnValue.getClass());
+ assertEquals(realValue, columnValue);
+ }
+
+ public void testSMALLINT() throws Exception {
+ String columnName = "SMALLINT_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Short smallintValue = 32564;
+ test.setSmallintColumn(smallintValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Short.class, columnValue.getClass());
+ assertEquals(smallintValue, columnValue);
+ }
+
+ public void testSMALLINT2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Short smallintValue = 32564;
+ test.setSmallintColumn(smallintValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Short columnValue = testRead.getSmallintColumn();
+ assertNotNull(columnValue);
+ assertEquals(Short.class, columnValue.getClass());
+ assertEquals(smallintValue, columnValue);
+ }
+
+ public void testTIME() throws Exception {
+ String columnName = "TIME_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Calendar cal = Calendar.getInstance();
+ cal.clear();
+ cal.set(2003, 1, 1, 1, 20, 30);
+ Date timeValue = new Time(cal.getTime().getTime());
+ test.setTimeColumn(timeValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Date.class, columnValue.getClass());
+ assertEquals(timeValue.toString(), new Time(((Date)columnValue).getTime()).toString());
+ }
+
+ public void testTIME2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Calendar cal = Calendar.getInstance();
+ cal.clear();
+ cal.set(2003, 1, 1, 1, 20, 30);
+ Date timeValue = new Time(cal.getTime().getTime());
+ test.setTimeColumn(timeValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Date columnValue = testRead.getTimeColumn();
+ assertNotNull(columnValue);
+ assertEquals(Date.class, columnValue.getClass());
+ assertEquals(timeValue.toString(), new Time(columnValue.getTime()).toString());
+ }
+
+ public void testSQLTemplateTime() throws Exception {
+ DateTestEntity test = (DateTestEntity) context.newObject("DateTestEntity");
+
+ Calendar cal = Calendar.getInstance();
+ cal.clear();
+ cal.set(2003, 1, 1, 1, 20, 30);
+
+ // most databases fail millisecond accuracy
+ // cal.set(Calendar.MILLISECOND, 55);
+
+ Time now = new Time(cal.getTime().getTime());
+ test.setTimeColumn(now);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectDateTest");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Date columnValue = (Date) testRead.get("TIME_COLUMN");
+ assertNotNull(columnValue);
+ assertEquals(now.toString(), new Time(columnValue.getTime()).toString());
+ }
+
+ public void testTIMESTAMP() throws Exception {
+ String columnName = "TIMESTAMP_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Date timestampValue = Calendar.getInstance().getTime();
+ test.setTimestampColumn(timestampValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Date.class, columnValue.getClass());
+ assertEquals(timestampValue.toString(), columnValue.toString());
+ }
+
+ public void testTIMESTAMP2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Date timestampValue = Calendar.getInstance().getTime();
+ test.setTimestampColumn(timestampValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Date columnValue = testRead.getTimestampColumn();
+ assertNotNull(columnValue);
+ assertEquals(Date.class, columnValue.getClass());
+ assertEquals(timestampValue.toString(), columnValue.toString());
+ }
+
+ public void testTINYINT() throws Exception {
+ String columnName = "TINYINT_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Byte tinyintValue = 89;
+ test.setTinyintColumn(tinyintValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(Byte.class, columnValue.getClass());
+ assertEquals(tinyintValue, columnValue);
+ }
+
+ public void testTINYINT2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ Byte tinyintValue = 89;
+ test.setTinyintColumn(tinyintValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ Byte columnValue = testRead.getTinyintColumn();
+ assertNotNull(columnValue);
+ assertEquals(Byte.class, columnValue.getClass());
+ assertEquals(tinyintValue, columnValue);
+ }
+
+ public void testVARBINARY() throws Exception {
+ String columnName = "VARBINARY_COLUMN";
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] varbinaryValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setVarbinaryColumn(varbinaryValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap2");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(varbinaryValue, (byte[]) columnValue));
+ }
+
+ public void testVARBINARY2() throws Exception {
+ ReturnTypesMap2 test = context.newObject(ReturnTypesMap2.class);
+
+ byte[] varbinaryValue = {
+ 3, 4, 5, -6, 7, 0, 2, 9, 45, 64, 3, 127, -128, -60
+ };
+ test.setVarbinaryColumn(varbinaryValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap2.class);
+ ReturnTypesMap2 testRead = (ReturnTypesMap2) context.performQuery(q).get(0);
+ byte[] columnValue = testRead.getVarbinaryColumn();
+ assertNotNull(columnValue);
+ assertEquals(byte[].class, columnValue.getClass());
+ assertTrue(Arrays.equals(varbinaryValue, columnValue));
+ }
+
+ public void testVARCHAR() throws Exception {
+ String columnName = "VARCHAR_COLUMN";
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ String varcharValue = "VARChar string for tests!";
+ test.setVarcharColumn(varcharValue);
+ context.commitChanges();
+
+ NamedQuery q = new NamedQuery("SelectReturnTypesMap1");
+ DataRow testRead = (DataRow) context.performQuery(q).get(0);
+ Object columnValue = testRead.get(columnName);
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(varcharValue, columnValue);
+ }
+
+ public void testVARCHAR2() throws Exception {
+ ReturnTypesMap1 test = context.newObject(ReturnTypesMap1.class);
+
+ String varcharValue = "VARChar string for tests!";
+ test.setVarcharColumn(varcharValue);
+ context.commitChanges();
+
+ SelectQuery q = new SelectQuery(ReturnTypesMap1.class);
+ ReturnTypesMap1 testRead = (ReturnTypesMap1) context.performQuery(q).get(0);
+ String columnValue = testRead.getVarcharColumn();
+ assertNotNull(columnValue);
+ assertEquals(String.class, columnValue.getClass());
+ assertEquals(varcharValue, columnValue);
+ }
+}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/testmap.map.xml
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/testmap.map.xml?rev=899143&r1=899142&r2=899143&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/testmap.map.xml (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/resources/testmap.map.xml Thu Jan 14 10:14:55 2010
@@ -234,6 +234,34 @@
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
<db-attribute name="TINYINT_COL" type="TINYINT"/>
</db-entity>
+ <db-entity name="TYPES_MAPPING_TEST1">
+ <db-attribute name="AAAID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="BIGINT_COLUMN" type="BIGINT"/>
+ <db-attribute name="BIT_COLUMN" type="BIT"/>
+ <db-attribute name="BOOLEAN_COLUMN" type="BOOLEAN"/>
+ <db-attribute name="CHAR_COLUMN" type="CHAR" length="500"/>
+ <db-attribute name="CLOB_COLUMN" type="CLOB"/>
+ <db-attribute name="DATE_COLUMN" type="DATE"/>
+ <db-attribute name="DECIMAL_COLUMN" type="DECIMAL" length="12" scale="5"/>
+ <db-attribute name="DOUBLE_COLUMN" type="DOUBLE" scale="7"/>
+ <db-attribute name="FLOAT_COLUMN" type="FLOAT" scale="3"/>
+ <db-attribute name="INTEGER_COLUMN" type="INTEGER"/>
+ <db-attribute name="LONGVARCHAR_COLUMN" type="LONGVARCHAR"/>
+ <db-attribute name="NUMERIC_COLUMN" type="NUMERIC" length="12" scale="5"/>
+ <db-attribute name="REAL_COLUMN" type="REAL" scale="5"/>
+ <db-attribute name="SMALLINT_COLUMN" type="SMALLINT"/>
+ <db-attribute name="TIMESTAMP_COLUMN" type="TIMESTAMP"/>
+ <db-attribute name="TIME_COLUMN" type="TIME"/>
+ <db-attribute name="TINYINT_COLUMN" type="TINYINT"/>
+ <db-attribute name="VARCHAR_COLUMN" type="VARCHAR" length="1000"/>
+ </db-entity>
+ <db-entity name="TYPES_MAPPING_TEST2">
+ <db-attribute name="AAAID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
+ <db-attribute name="BINARY_COLUMN" type="BINARY" length="14"/>
+ <db-attribute name="BLOB_COLUMN" type="BLOB"/>
+ <db-attribute name="LONGVARBINARY_COLUMN" type="LONGVARBINARY"/>
+ <db-attribute name="VARBINARY_COLUMN" type="VARBINARY" length="1000"/>
+ </db-entity>
<db-entity name="UUID_TEST">
<db-attribute name="ID" type="INTEGER" isPrimaryKey="true" isMandatory="true"/>
<db-attribute name="UUID" type="VARCHAR" length="100"/>
@@ -427,6 +455,32 @@
<obj-attribute name="paintingTitle" type="java.lang.String" db-attribute-path="PAINTING_TITLE"/>
<obj-attribute name="textReview" type="java.lang.String" db-attribute-path="toPaintingInfo.TEXT_REVIEW"/>
</obj-entity>
+ <obj-entity name="ReturnTypesMap1" className="org.apache.art.ReturnTypesMap1" clientClassName="test.client.ReturnTypesMap1" dbEntityName="TYPES_MAPPING_TEST1" superClassName="org.apache.cayenne.CayenneDataObject" clientSuperClassName="org.apache.cayenne.PersistentObject">
+ <obj-attribute name="bigintColumn" type="java.lang.Long" db-attribute-path="BIGINT_COLUMN"/>
+ <obj-attribute name="bitColumn" type="java.lang.Boolean" db-attribute-path="BIT_COLUMN"/>
+ <obj-attribute name="booleanColumn" type="java.lang.Boolean" db-attribute-path="BOOLEAN_COLUMN"/>
+ <obj-attribute name="charColumn" type="java.lang.String" db-attribute-path="CHAR_COLUMN"/>
+ <obj-attribute name="clobColumn" type="java.lang.String" db-attribute-path="CLOB_COLUMN"/>
+ <obj-attribute name="dateColumn" type="java.util.Date" db-attribute-path="DATE_COLUMN"/>
+ <obj-attribute name="decimalColumn" type="java.math.BigDecimal" db-attribute-path="DECIMAL_COLUMN"/>
+ <obj-attribute name="doubleColumn" type="java.lang.Double" db-attribute-path="DOUBLE_COLUMN"/>
+ <obj-attribute name="floatColumn" type="java.lang.Float" db-attribute-path="FLOAT_COLUMN"/>
+ <obj-attribute name="integerColumn" type="java.lang.Integer" db-attribute-path="INTEGER_COLUMN"/>
+ <obj-attribute name="longvarcharColumn" type="java.lang.String" db-attribute-path="LONGVARCHAR_COLUMN"/>
+ <obj-attribute name="numericColumn" type="java.math.BigDecimal" db-attribute-path="NUMERIC_COLUMN"/>
+ <obj-attribute name="realColumn" type="java.lang.Float" db-attribute-path="REAL_COLUMN"/>
+ <obj-attribute name="smallintColumn" type="java.lang.Short" db-attribute-path="SMALLINT_COLUMN"/>
+ <obj-attribute name="timeColumn" type="java.util.Date" db-attribute-path="TIME_COLUMN"/>
+ <obj-attribute name="timestampColumn" type="java.util.Date" db-attribute-path="TIMESTAMP_COLUMN"/>
+ <obj-attribute name="tinyintColumn" type="java.lang.Byte" db-attribute-path="TINYINT_COLUMN"/>
+ <obj-attribute name="varcharColumn" type="java.lang.String" db-attribute-path="VARCHAR_COLUMN"/>
+ </obj-entity>
+ <obj-entity name="ReturnTypesMap2" className="org.apache.art.ReturnTypesMap2" clientClassName="test.client.ReturnTypesMap2" dbEntityName="TYPES_MAPPING_TEST2" superClassName="org.apache.cayenne.CayenneDataObject" clientSuperClassName="org.apache.cayenne.PersistentObject">
+ <obj-attribute name="binaryColumn" type="byte[]" db-attribute-path="BINARY_COLUMN"/>
+ <obj-attribute name="blobColumn" type="byte[]" db-attribute-path="BLOB_COLUMN"/>
+ <obj-attribute name="longvarbinaryColumn" type="byte[]" db-attribute-path="LONGVARBINARY_COLUMN"/>
+ <obj-attribute name="varbinaryColumn" type="byte[]" db-attribute-path="VARBINARY_COLUMN"/>
+ </obj-entity>
<obj-entity name="SerializableEntity" className="org.apache.art.SerializableEntity" dbEntityName="SERIALIZABLE_ENTITY">
<obj-attribute name="serializableField" type="org.apache.cayenne.MockSerializable" db-attribute-path="SERIALIZABLE_FIELD"/>
</obj-entity>
@@ -638,6 +692,16 @@
<property name="cayenne.SQLTemplate.columnNameCapitalization" value="UPPER"/>
<sql><![CDATA[SELECT * FROM DATE_TEST]]></sql>
</query>
+ <query name="SelectReturnTypesMap1" factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" root-name="testmap">
+ <property name="cayenne.GenericSelectQuery.fetchingDataRows" value="true"/>
+ <property name="cayenne.SQLTemplate.columnNameCapitalization" value="UPPER"/>
+ <sql><![CDATA[SELECT * FROM TYPES_MAPPING_TEST1]]></sql>
+ </query>
+ <query name="SelectReturnTypesMap2" factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" root-name="testmap">
+ <property name="cayenne.GenericSelectQuery.fetchingDataRows" value="true"/>
+ <property name="cayenne.SQLTemplate.columnNameCapitalization" value="UPPER"/>
+ <sql><![CDATA[SELECT * FROM TYPES_MAPPING_TEST2]]></sql>
+ </query>
<query name="SelectTestLower" factory="org.apache.cayenne.map.SQLTemplateBuilder" root="data-map" root-name="testmap">
<property name="cayenne.GenericSelectQuery.fetchingDataRows" value="true"/>
<property name="cayenne.SQLTemplate.columnNameCapitalization" value="LOWER"/>
Re: svn commit: r899143 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/access/jdbc/ main/java/org/apache/cayenne/dba/ test/java/org/apache/art/ test/java/org/apache/art/auto/ test/java/org/apache/cayenne/acc...
Posted by Andrus Adamchik <an...@objectstyle.org>.
Looks like we still have Hudson failures on H2 and Derby DBs.
Andrus
On Jan 14, 2010, at 12:14 PM, evgeny@apache.org wrote:
> CAY-1354
> Wrong Types mapping for selected values in Row Queries
>
> Fixed default mapping for most of types. Add JUnits to control
> regression. Still problem with mapping of float.
>
> Added:
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> java/org/apache/art/ReturnTypesMap1.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> java/org/apache/art/ReturnTypesMap2.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> java/org/apache/art/auto/_ReturnTypesMap1.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> java/org/apache/art/auto/_ReturnTypesMap2.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> java/org/apache/cayenne/access/ReturnTypesMappingTest.java
> Modified:
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/
> java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/
> java/org/apache/cayenne/access/jdbc/RowDescriptorBuilder.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/
> java/org/apache/cayenne/dba/TypesMapping.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> java/org/apache/cayenne/access/DataContextProcedureQueryTest.java
> cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/
> resources/testmap.map.xml