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 = *