You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2005/07/11 20:05:19 UTC

svn commit: r210170 - in /ibatis/trunk/cs/mapper: IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/ IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ IBatisNet.DataMapper/Configuration/ResultMapping/ IBatisNet.DataMapper/MappedStatements/

Author: gbayon
Date: Mon Jul 11 11:05:17 2005
New Revision: 210170

URL: http://svn.apache.org/viewcvs?rev=210170&view=rev
Log:
- Fixed issue with Hashtable type resultMap and nullvalue

Modified:
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ParameterMapTest.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml?rev=210170&r1=210169&r2=210170&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml Mon Jul 11 11:05:17 2005
@@ -62,6 +62,10 @@
 			<result property="PostalCode" column="Order_PostalCode"/>
 		</resultMap>
 		
+		<resultMap id="order-hash" class="Hashtable">
+			<result property="Date"       column="Order_Date" nullValue="01/01/0001 00:00:00"/>
+		</resultMap>
+		
 		<resultMap id="order-with-types-result" class="Order">
 			<result property="Id"         column="Order_ID"			dbType="Int"/><!-- Int for SqlClient, Obdc; Integer for Oledb -->
 			<result property="Date"       column="Order_Date"		dbType="DateTime "/>
@@ -185,6 +189,12 @@
 					parameterClass="Int"
 					resultMap="lite-order-result-by-name" >
 			select * from Orders where Order_ID = #value#
+		</statement>
+		
+		<statement id="GetOrderByHashTable"
+					parameterClass="Int"
+					resultMap="order-hash" >
+			select Order_Date from Orders where Order_ID = #value#
 		</statement>
 		
 		<statement id="GetOrderLiteByColumnIndex"

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ParameterMapTest.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ParameterMapTest.cs?rev=210170&r1=210169&r2=210170&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ParameterMapTest.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/ParameterMapTest.cs Mon Jul 11 11:05:17 2005
@@ -137,6 +137,36 @@
 		}
 
 		/// <summary>
+		/// Test null replacement in ParameterMap/Hahstable property
+		/// for System.DateTime.MinValue
+		/// </summary>
+		[Test] 
+		public void TestNullValueReplacementForDateTimeWithHashtable()
+		{
+			Account account = NewAccount6();
+
+			sqlMap.Insert("InsertAccountViaParameterMap", account);
+
+			Order order = new Order();
+			order.Id = 99;
+			order.CardExpiry = "09/11";
+			order.Account = account;
+			order.CardNumber = "154564656";
+			order.CardType = "Visa";
+			order.City = "Lyon";
+			order.Date = DateTime.MinValue; //<-- null replacement
+			order.PostalCode = "69004";
+			order.Province = "Rhone";
+			order.Street = "rue Durand";
+ 
+			sqlMap.Insert("InsertOrderViaParameterMap", order);
+
+			Hashtable orderTest = (Hashtable) sqlMap.QueryForObject("GetOrderByHashTable", 99);
+
+			Assert.AreEqual(orderTest["Date"], DateTime.MinValue);
+		}
+
+		/// <summary>
 		/// Test null replacement in ParameterMap property
 		/// for Guid
 		/// </summary>

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs?rev=210170&r1=210169&r2=210170&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs Mon Jul 11 11:05:17 2005
@@ -319,7 +319,14 @@
 			{
 				if (this.HasNullValue) 
 				{
-					value = _typeHandler.ValueOf(_propertyInfo.PropertyType, _nullValue);
+					if (_propertyInfo!=null)
+					{
+						value = _typeHandler.ValueOf(_propertyInfo.PropertyType, _nullValue);
+					}
+					else
+					{
+						value = _typeHandler.ValueOf(null, _nullValue);
+					}
 				}
 				else
 				{

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
URL: http://svn.apache.org/viewcvs/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs?rev=210170&r1=210169&r2=210170&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs Mon Jul 11 11:05:17 2005
@@ -928,11 +928,11 @@
 				// We have a 'normal' ResultMap
 
 				#region Not a select statement
-				if (mapping.TypeHandler == null) // Find the TypeHandler
+				if (mapping.TypeHandler == null || mapping.TypeHandler is UnknownTypeHandler) // Find the TypeHandler
 				{
 					lock(mapping) 
 					{
-						if (mapping.TypeHandler == null)
+						if (mapping.TypeHandler == null || mapping.TypeHandler is UnknownTypeHandler)
 						{
 							int columnIndex = 0;
 							if (mapping.ColumnIndex == ResultProperty.UNKNOWN_COLUMN_INDEX)