You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by cb...@apache.org on 2009/10/06 09:20:26 UTC

svn commit: r822150 - in /ibatis/java/ibatis-3/trunk/ibatis-3-core/src: main/java/org/apache/ibatis/executor/resultset/ test/java/org/apache/ibatis/submitted/primitive_result_type/

Author: cbegin
Date: Tue Oct  6 07:20:26 2009
New Revision: 822150

URL: http://svn.apache.org/viewvc?rev=822150&view=rev
Log:
IBATIS-644 ClassCastException: BigDecimal cannot be cast to Integer fixed

Added:
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/IbatisConfig.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/PrimitiveResultTypeTest.java   (with props)
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductDAO.java
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.java   (with props)
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml   (with props)
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/create.sql   (with props)
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ibatis.xml   (with props)
Modified:
    ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java

Modified: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java?rev=822150&r1=822149&r2=822150&view=diff
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java (original)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/main/java/org/apache/ibatis/executor/resultset/DefaultResultSetHandler.java Tue Oct  6 07:20:26 2009
@@ -266,8 +266,10 @@
       final String columnName = configuration.isUseColumnLabel() ? rsmd.getColumnLabel(i) : rsmd.getColumnName(i);
       final String upperColumnName = columnName.toUpperCase();
       if (mappedColumns.contains(upperColumnName)) {
+        mappedColumnNames.add(upperColumnName);
         mappedColumnNames.add(columnName);
       } else {
+        unmappedColumnNames.add(upperColumnName);
         unmappedColumnNames.add(columnName);
       }
     }

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/IbatisConfig.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/IbatisConfig.java?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/IbatisConfig.java (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/IbatisConfig.java Tue Oct  6 07:20:26 2009
@@ -0,0 +1,34 @@
+package org.apache.ibatis.submitted.primitive_result_type;
+
+import java.io.Reader;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+
+public class IbatisConfig {
+
+  private static SqlSessionFactory sqlSessionFactory;
+
+  private IbatisConfig() {
+  }
+
+  private static synchronized void init() {
+    if (sqlSessionFactory == null)
+      try {
+        final String resource = "org/apache/ibatis/submitted/primitive_result_type/ibatis.xml";
+        Reader reader = Resources.getResourceAsReader(resource);
+        sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
+      } catch (Exception e) {
+        throw new RuntimeException(e);
+      }
+  }
+
+  public static SqlSession getSession() {
+    if (sqlSessionFactory == null) {
+      init();
+    }
+    return sqlSessionFactory.openSession();
+  }
+}
\ No newline at end of file

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/PrimitiveResultTypeTest.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/PrimitiveResultTypeTest.java?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/PrimitiveResultTypeTest.java (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/PrimitiveResultTypeTest.java Tue Oct  6 07:20:26 2009
@@ -0,0 +1,42 @@
+package org.apache.ibatis.submitted.primitive_result_type;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+import org.junit.BeforeClass;
+import org.apache.ibatis.jdbc.ScriptRunner;
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.session.SqlSession;
+
+import java.util.List;
+import java.sql.Connection;
+import java.io.Reader;
+import java.math.BigDecimal;
+
+public class PrimitiveResultTypeTest {
+
+  @BeforeClass
+  public static void setup() throws Exception {
+    SqlSession session = IbatisConfig.getSession();
+    Connection conn = session.getConnection();
+    ScriptRunner runner = new ScriptRunner(conn);
+    Reader reader = Resources.getResourceAsReader("org/apache/ibatis/submitted/primitive_result_type/create.sql");
+    runner.runScript(reader);
+  }
+
+  @Test
+  public void shouldReturnProperPrimitiveType() {
+    List codes = ProductDAO.selectProductCodes();
+    for (Object code : codes) {
+      assertTrue(code instanceof Integer);
+    }
+    List lcodes = ProductDAO.selectProductCodesL();
+    for (Object lcode : lcodes) {
+      System.out.println(lcode instanceof Integer);
+    }
+    List bcodes = ProductDAO.selectProductCodesB();
+    for (Object bcode : bcodes) {
+      System.out.println(bcode instanceof BigDecimal);
+    }
+  }
+
+}

Propchange: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/PrimitiveResultTypeTest.java
------------------------------------------------------------------------------
    svn:executable = *

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductDAO.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductDAO.java?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductDAO.java (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductDAO.java Tue Oct  6 07:20:26 2009
@@ -0,0 +1,47 @@
+package org.apache.ibatis.submitted.primitive_result_type;
+
+import java.util.List;
+import java.math.BigDecimal;
+
+import org.apache.ibatis.session.SqlSession;
+
+public class ProductDAO {
+
+  public static List<Integer> selectProductCodes() {
+    SqlSession session = IbatisConfig.getSession();
+    try {
+      ProductMapper productMapper = session.getMapper(ProductMapper.class);
+      return productMapper.selectProductCodes();
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    } finally {
+      session.close();
+    }
+  }
+
+  public static List<Long> selectProductCodesL() {
+    SqlSession session = IbatisConfig.getSession();
+    try {
+      ProductMapper productMapper = session.getMapper(ProductMapper.class);
+      return productMapper.selectProductCodesL();
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    } finally {
+      session.close();
+    }
+  }
+
+  public static List<BigDecimal> selectProductCodesB() {
+    SqlSession session = IbatisConfig.getSession();
+    try {
+      ProductMapper productMapper = session.getMapper(ProductMapper.class);
+      return productMapper.selectProductCodesB();
+    } catch (Exception e) {
+      throw new RuntimeException(e);
+    } finally {
+      session.close();
+    }
+  }
+
+
+}
\ No newline at end of file

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.java
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.java?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.java (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.java Tue Oct  6 07:20:26 2009
@@ -0,0 +1,14 @@
+package org.apache.ibatis.submitted.primitive_result_type;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public interface ProductMapper {
+
+  List<Integer> selectProductCodes();
+
+  List<Long> selectProductCodesL();
+
+  List<BigDecimal> selectProductCodesB();
+
+}

Propchange: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.java
------------------------------------------------------------------------------
    svn:executable = *

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml Tue Oct  6 07:20:26 2009
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE mapper
+    PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
+    "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
+
+<mapper namespace="org.apache.ibatis.submitted.primitive_result_type.ProductMapper">
+
+  <select id="selectProductCodes" resultType="Integer">
+    select distinct productcode from product
+  </select>
+
+  <select id="selectProductCodesL" resultType="Long">
+    select distinct productcode from product
+  </select>
+
+  <select id="selectProductCodesB" resultType="BigDecimal">
+    select distinct productcode from product
+  </select>
+
+</mapper>
\ No newline at end of file

Propchange: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml
------------------------------------------------------------------------------
    svn:executable = *

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/create.sql
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/create.sql?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/create.sql (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/create.sql Tue Oct  6 07:20:26 2009
@@ -0,0 +1,5 @@
+CREATE MEMORY TABLE PRODUCT(PRODUCTCODE NUMERIC);
+INSERT INTO PRODUCT VALUES(5);
+INSERT INTO PRODUCT VALUES(6);
+INSERT INTO PRODUCT VALUES(1000);
+INSERT INTO PRODUCT VALUES(2000);

Propchange: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/create.sql
------------------------------------------------------------------------------
    svn:executable = *

Added: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ibatis.xml
URL: http://svn.apache.org/viewvc/ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ibatis.xml?rev=822150&view=auto
==============================================================================
--- ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ibatis.xml (added)
+++ ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ibatis.xml Tue Oct  6 07:20:26 2009
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+
+<!DOCTYPE configuration
+    PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
+    "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
+
+<configuration>
+
+  <environments default="development">
+    <environment id="development">
+      <transactionManager type="JDBC">
+        <property name="" value=""/>
+      </transactionManager>
+      <dataSource type="UNPOOLED">
+        <property name="driver" value="org.hsqldb.jdbcDriver"/>
+        <property name="url" value="jdbc:hsqldb:mem:rname"/>
+        <property name="username" value="sa"/>
+      </dataSource>
+    </environment>
+  </environments>
+
+  <mappers>
+    <mapper resource="org/apache/ibatis/submitted/primitive_result_type/ProductMapper.xml"/>
+  </mappers>
+
+</configuration>
\ No newline at end of file

Propchange: ibatis/java/ibatis-3/trunk/ibatis-3-core/src/test/java/org/apache/ibatis/submitted/primitive_result_type/ibatis.xml
------------------------------------------------------------------------------
    svn:executable = *