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 2006/06/06 20:29:28 UTC

svn commit: r412184 - in /ibatis/trunk/cs/mapper: IBatisNet.Common.Test/ IBatisNet.Common.Test/Domain/ IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ IBatisNet.Common/Utilities/Objects/ IBatisNet.Common/Utilities/Objects/Members/ IBatisNet.DataMapp...

Author: gbayon
Date: Tue Jun  6 11:29:26 2006
New Revision: 412184

URL: http://svn.apache.org/viewvc?rev=412184&view=rev
Log:
- Fixed Property accessor exception when overriding a property with the new keyword as suggested by Nguyen, Tom
- Fixed issue when result property have only set access

Added:
    ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs   (with props)
Modified:
    ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Document.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Property.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common.Test/IBatisNet.Common.Test.csproj
    ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/PropertyAccessorTest.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertyGetAccessor.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertySetAccessor.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertyGetAccessor.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertySetAccessor.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/SetAccessorFactory.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/Document.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Serializers/ResultMapDeSerializer.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Document.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Document.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Document.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Document.cs Tue Jun  6 11:29:26 2006
@@ -8,11 +8,17 @@
 	public abstract class Document
 	{
 		private DateTime _date = DateTime.MinValue;
-		
+		private int _nb = int.MinValue;
+	
 		public DateTime Creation
 		{
 			get { return _date;}
 			set { _date = value;}
+		}
+		
+		public int PageNumber
+		{
+			get { return _nb;}
 		}
 	}
 }

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Property.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Property.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Property.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common.Test/Domain/Property.cs Tue Jun  6 11:29:26 2006
@@ -173,7 +173,7 @@
     public class PropertySon : Property
     {
         private int _int = int.MinValue;
-        private float _float = float.MinValue;
+        private int _float = int.MinValue;
 
         private int PrivateIndex
         {
@@ -208,7 +208,7 @@
             set { throw new InvalidOperationException("Test virtual"); }
         }
 
-        public new float Float
+        public new int Float
         {
             get { return _float; }
             set { _float = value*2; }

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/IBatisNet.Common.Test.csproj
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/IBatisNet.Common.Test.csproj?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common.Test/IBatisNet.Common.Test.csproj (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common.Test/IBatisNet.Common.Test.csproj Tue Jun  6 11:29:26 2006
@@ -340,6 +340,11 @@
                     BuildAction = "Compile"
                 />
                 <File
+                    RelPath = "NUnit\CommonTests\Utilities\ReflectionInfoTest.cs"
+                    SubType = "Code"
+                    BuildAction = "Compile"
+                />
+                <File
                     RelPath = "NUnit\CommonTests\Utilities\ResourcesTest.cs"
                     SubType = "Code"
                     BuildAction = "Compile"

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/PropertyAccessorTest.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/PropertyAccessorTest.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/PropertyAccessorTest.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/PropertyAccessorTest.cs Tue Jun  6 11:29:26 2006
@@ -215,9 +215,9 @@
             ISetAccessor accessorSet = factorySet.CreateSetAccessor(typeof(PropertySon), "Float");
 
             PropertySon son = new PropertySon();
-            accessorSet.Set(son, -99.99f);
+            accessorSet.Set(son, -99);
 
-            Assert.AreEqual(-99.99f*2, son.Float);
+            Assert.AreEqual(-99*2, son.Float);
         }
 
         /// <summary>
@@ -229,9 +229,9 @@
             IGetAccessor accessorGet = factoryGet.CreateGetAccessor(typeof(PropertySon), "Float");
 
             PropertySon son = new PropertySon();
-            son.Float = -99.99f;
+            son.Float = -99;
 
-            Assert.AreEqual(-99.99f * 2, accessorGet.Get(son));
+            Assert.AreEqual(-99 * 2, accessorGet.Get(son));
         }
     }
 

Added: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs?rev=412184&view=auto
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs (added)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs Tue Jun  6 11:29:26 2006
@@ -0,0 +1,27 @@
+using System;
+using IBatisNet.Common.Utilities.Objects;
+using NUnit.Framework;
+
+
+using IBatisNet.Common.Test.Domain;
+namespace IBatisNet.Common.Test.NUnit.CommonTests.Utilities
+{
+	/// <summary>
+	/// Summary description for ReflectionInfoTest.
+	/// </summary>
+	[TestFixture]
+	public class ReflectionInfoTest
+	{
+		/// <summary>
+		/// Test multiple call to factory
+		/// </summary>
+		[Test]
+		public void TestReflectionInfo()
+		{
+
+			ReflectionInfo info = ReflectionInfo.GetInstance(typeof (Document));
+			
+			Type type = info.GetGetterType("PageNumber");
+		}
+	}
+}

Propchange: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ibatis/trunk/cs/mapper/IBatisNet.Common.Test/NUnit/CommonTests/Utilities/ReflectionInfoTest.cs
------------------------------------------------------------------------------
    svn:keywords = Id LastChangedDate LastChangedBy

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertyGetAccessor.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertyGetAccessor.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertyGetAccessor.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertyGetAccessor.cs Tue Jun  6 11:29:26 2006
@@ -61,8 +61,14 @@
             _targetType = targetObjectType;
             _propertyName = propertyName;
 
-            PropertyInfo propertyInfo = _targetType.GetProperty(propertyName);
-
+            // deals with Overriding a property using new and reflection
+            // http://blogs.msdn.com/thottams/archive/2006/03/17/553376.aspx
+            PropertyInfo propertyInfo = _targetType.GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+            if (propertyInfo == null)
+            {
+                propertyInfo = _targetType.GetProperty(propertyName);
+            }
+            
 			// Make sure the property exists
 			if(propertyInfo == null)
 			{

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertySetAccessor.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertySetAccessor.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertySetAccessor.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/DelegatePropertySetAccessor.cs Tue Jun  6 11:29:26 2006
@@ -62,8 +62,14 @@
             _targetType = targetObjectType;
             _propertyName = propertyName;
 
-            PropertyInfo propertyInfo = _targetType.GetProperty(propertyName);
-
+            // deals with Overriding a property using new and reflection
+            // http://blogs.msdn.com/thottams/archive/2006/03/17/553376.aspx
+            PropertyInfo propertyInfo = _targetType.GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+            if (propertyInfo == null)
+            {
+                propertyInfo = _targetType.GetProperty(propertyName);
+            }
+                    
 			// Make sure the property exists
 			if(propertyInfo == null)
 			{

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertyGetAccessor.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertyGetAccessor.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertyGetAccessor.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertyGetAccessor.cs Tue Jun  6 11:29:26 2006
@@ -66,7 +66,13 @@
 			_targetType = targetObjectType;
 			_propertyName = propertyName;
 
-			PropertyInfo propertyInfo = _targetType.GetProperty(propertyName);
+        	// deals with Overriding a property using new and reflection
+        	// http://blogs.msdn.com/thottams/archive/2006/03/17/553376.aspx
+			PropertyInfo propertyInfo = _targetType.GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+			if (propertyInfo == null)
+			{
+				propertyInfo = _targetType.GetProperty(propertyName);
+			}
 
 			// Make sure the property exists
 			if(propertyInfo == null)
@@ -137,7 +143,11 @@
 			if (_canRead)
             {
                 // Emit the IL for get access. 
-                MethodInfo targetGetMethod = _targetType.GetMethod("get_" + _propertyName);
+				MethodInfo targetGetMethod = _targetType.GetMethod("get_" + _propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+				if (targetGetMethod == null)
+				{
+					targetGetMethod =  _targetType.GetMethod("get_" + _propertyName);
+				}                	
 
                 generatorIL.DeclareLocal(typeof(object));
                 generatorIL.Emit(OpCodes.Ldarg_1);	//Load the first argument,(target object)

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertySetAccessor.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertySetAccessor.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertySetAccessor.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/EmitPropertySetAccessor.cs Tue Jun  6 11:29:26 2006
@@ -67,8 +67,14 @@
 			_targetType = targetObjectType;
 			_propertyName = propertyName;
 
-			PropertyInfo propertyInfo = _targetType.GetProperty(propertyName);
-
+			// deals with Overriding a property using new and reflection
+			// http://blogs.msdn.com/thottams/archive/2006/03/17/553376.aspx
+			PropertyInfo propertyInfo = _targetType.GetProperty(propertyName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+			if (propertyInfo == null)
+			{
+				propertyInfo = _targetType.GetProperty(propertyName);
+			}
+        	
 			// Make sure the property exists
 			if(propertyInfo == null)
 			{
@@ -104,7 +110,7 @@
             if (_emittedSet == null)
             {
                 throw new NotSupportedException(
-                    string.Format("Unable to create a get propert accessor for '{0}' property on class  '{0}'.", _propertyName, _propertyType));
+                    string.Format("Unable to create a get propert accessor for '{0}' property on class  '{1}'.", _propertyName, _propertyType.ToString()));
             }
         }
 
@@ -137,16 +143,17 @@
                 null,
                 setParamTypes);
 
-            // Get an ILGenerator and used it to emit the IL that we want.
-            ILGenerator generatorIL = methodBuilder.GetILGenerator();
-
 			// Get an ILGenerator and  used to emit the IL that we want.
 			// Set(object, value);
-			generatorIL = methodBuilder.GetILGenerator();
+			ILGenerator generatorIL = methodBuilder.GetILGenerator();
 			if (_canWrite)
             {
                 // Emit the IL for the set access. 
-                MethodInfo targetSetMethod = _targetType.GetMethod("set_" + _propertyName);
+				MethodInfo targetSetMethod = _targetType.GetMethod("set_" + _propertyName,BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+				if (targetSetMethod == null)
+				{
+					targetSetMethod =  _targetType.GetMethod("set_" + _propertyName);
+				}
                 Type paramType = targetSetMethod.GetParameters()[0].ParameterType;
 
                 generatorIL.DeclareLocal(paramType);

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/GetAccessorFactory.cs Tue Jun  6 11:29:26 2006
@@ -164,7 +164,11 @@
 #if dotnet2
                 methodInfo = propertyInfo.GetSetMethod();
 #else
-                methodInfo = targetType.GetMethod("get_" + propertyName);
+				methodInfo = targetType.GetMethod("get_" + propertyName,BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+				if (methodInfo == null)
+				{
+					methodInfo =  targetType.GetMethod("get_" + propertyName);
+				}
 #endif
                 if (methodInfo != null)// == visibilty public
                 {

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/SetAccessorFactory.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/SetAccessorFactory.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/SetAccessorFactory.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/Members/SetAccessorFactory.cs Tue Jun  6 11:29:26 2006
@@ -163,7 +163,11 @@
 #if dotnet2
                 methodInfo = propertyInfo.GetSetMethod();
 #else
-                methodInfo = targetType.GetMethod("set_" + propertyName);
+                methodInfo = targetType.GetMethod("set_" + propertyName,BindingFlags.Public | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+				if (methodInfo == null)
+				{
+					methodInfo =  targetType.GetMethod("set_" + propertyName);
+				}
 #endif
                 if (methodInfo != null)// == visibilty public
                 {

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ObjectProbe.cs Tue Jun  6 11:29:26 2006
@@ -142,6 +142,35 @@
 
 
 		/// <summary>
+		///  Returns the type that the set expects to receive as a parameter when
+		///  setting a member value.
+		/// </summary>
+		/// <param name="type">The class type to check</param>
+		/// <param name="memberName">The name of the member</param>
+		/// <returns>The type of the member</returns>
+		public static Type GetMemberTypeForSetter(Type type, string memberName) 
+		{
+			Type memberType = type;
+			if (memberName.IndexOf('.') > -1) 
+			{
+				StringTokenizer parser = new StringTokenizer(memberName, ".");
+				IEnumerator enumerator = parser.GetEnumerator();
+
+				while (enumerator.MoveNext()) 
+				{
+					memberName = (string)enumerator.Current;
+					memberType = ReflectionInfo.GetInstance(memberType).GetSetterType(memberName);
+				}
+			} 
+			else 
+			{
+				memberType = ReflectionInfo.GetInstance(type).GetSetterType(memberName);
+			}
+
+			return memberType;
+		}
+
+		/// <summary>
 		///  Returns the type that the get expects to receive as a parameter when
 		///  setting a member value.
 		/// </summary>

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/Objects/ReflectionInfo.cs Tue Jun  6 11:29:26 2006
@@ -234,7 +234,7 @@
 			Type type = (Type) _getTypes[memberName];
 			if (type == null) 
 			{
-				throw new ProbeException("There is no Get mmeber named '" + memberName + "' in class '" + _className + "'");
+				throw new ProbeException("There is no Get member named '" + memberName + "' in class '" + _className + "'");
 			}
 			return type;
 		}

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/Document.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/Document.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/Document.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Domain/Document.cs Tue Jun  6 11:29:26 2006
@@ -19,5 +19,11 @@
 			get { return _title; }
 			set { _title = value; }
 		}
+		
+		public string Test
+		{
+			set { _title = value; }
+		}
+		
 	}
 }

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Account.xml Tue Jun  6 11:29:26 2006
@@ -600,10 +600,18 @@
 			ps_swap_email_address
 		</procedure>
 
-		<procedure id="GetAccountViaSP" parameterMap="select-params" resultClass="Account">
+		<procedure id="GetAccountViaSP0" parameterMap="select-params0" resultClass="Account">
 			ps_SelectAccount
 		</procedure>
 		
+		<procedure id="GetAccountViaSP1" parameterMap="select-params1" resultClass="Account">
+			ps_SelectAccount
+		</procedure>
+	
+		<procedure id="GetAccountViaSP2" parameterMap="select-params2" resultClass="Account">
+			ps_SelectAccount
+		</procedure>
+			
 	</statements>
 
 	<!-- =============================================
@@ -616,10 +624,18 @@
 			<parameter property="email2" column="Second_Email" />
 		</parameterMap>
 		
-		<parameterMap id="select-params">
-			<parameter property="Account_ID" />
+		<parameterMap id="select-params0">
+			<parameter property="Account_ID" column="Account_ID" />
+		</parameterMap>
+			
+		<parameterMap id="select-params1" class="int">
+			<parameter property="Account_ID" column="Account_ID" />
+		</parameterMap>
+
+		<parameterMap id="select-params2" class="Hashtable">
+			<parameter property="Account_ID" column="Account_ID" />
 		</parameterMap>
-				
+								
 		<parameterMap id="insert-params" >
 			<parameter property="Id" />
 			<parameter property="FirstName" />

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Document.xml Tue Jun  6 11:29:26 2006
@@ -15,6 +15,7 @@
 		<resultMap id="document" class="Document">
 			<result property="Id"			column="Document_ID"/>
 			<result property="Title"		column="Document_Title"/>
+			<result property="Test"			column="Document_Title"/>
 			<discriminator column="Document_Type" type="string"/> 
 			<subMap value="Book" resultMapping="book" />
 			<subMap value="Newspaper" resultMapping="newspaper" />

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/Maps/MSSQL/SqlClient/Order.xml?rev=412184&r1=412183&r2=412184&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 Tue Jun  6 11:29:26 2006
@@ -267,7 +267,7 @@
 			<result property="City"       column="Order_City"/>
 			<result property="Province"   column="Order_Province"/>
 			<result property="PostalCode" column="Order_PostalCode"/>
-			<result property="Account"    column="Account_ID=Account_ID" select="GetAccountViaSP" />
+			<result property="Account"    column="Account_ID=Account_ID" select="GetAccountViaSP0" />
 		</resultMap>
 		
 		<resultMap id="order-with-collection-result" class="Order">

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/InheritanceTest.cs Tue Jun  6 11:29:26 2006
@@ -89,16 +89,16 @@
 			book = (Book) list[1];
 			AssertBook(book, 3, "Lord of the Rings", 3587);
 
-			Document document = (Document) list[2];
+			Document document = list[2];
 			AssertDocument(document, 5, "Le Monde");
 
-			document = (Document) list[3];
+			document = list[3];
 			AssertDocument(document, 6, "Foundation");
 
 			Newspaper news = (Newspaper) list[4];
 			AssertNewspaper(news, 2, "Le Progres de Lyon", "Lyon");
 
-			document = (Document) list[5];
+			document = list[5];
 			AssertDocument(document, 4, "Le Canard enchaine");
 		}
 

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs Tue Jun  6 11:29:26 2006
@@ -44,9 +44,31 @@
 		/// Test get an account via a store procedure.
 		/// </summary>
 		[Test] 
-		public void GetAccountViaProcedure()
+		public void GetAccountViaProcedure0()
 		{
-			Account account = sqlMap.QueryForObject("GetAccountViaSP", 1) as Account;
+			Account account = sqlMap.QueryForObject("GetAccountViaSP0", 1) as Account;
+			Assert.AreEqual(1, account.Id );
+		}
+		
+		/// <summary>
+		/// Test get an account via a store procedure.
+		/// </summary>
+		[Test] 
+		public void GetAccountViaProcedure1()
+		{
+			Account account = sqlMap.QueryForObject("GetAccountViaSP1", 1) as Account;
+			Assert.AreEqual(1, account.Id );
+		}
+		
+		/// <summary>
+		/// Test get an account via a store procedure.
+		/// </summary>
+		[Test] 
+		public void GetAccountViaProcedure2()
+		{
+			Hashtable hash = new Hashtable();
+			hash.Add("Account_ID",1);
+			Account account = sqlMap.QueryForObject("GetAccountViaSP2", hash) as Account;
 			Assert.AreEqual(1, account.Id );
 		}
 		

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ParameterMapping/ParameterProperty.cs Tue Jun  6 11:29:26 2006
@@ -284,6 +284,7 @@
         /// <param name="parameterClass">The parameter class.</param>
 		public void Initialize(IScope scope, Type parameterClass)
 		{
+
 			if(_directionAttribute.Length >0)
 			{
 				_direction = (ParameterDirection)Enum.Parse( typeof(ParameterDirection), _directionAttribute, true );
@@ -326,7 +327,15 @@
 			{
 				if (this.CLRType.Length == 0 )  // Unknown
 				{
-                    _typeHandler = scope.DataExchangeFactory.TypeHandlerFactory.GetUnkownTypeHandler();
+					if (scope.DataExchangeFactory.TypeHandlerFactory.IsSimpleType(parameterClass)) 
+					{
+						// Primitive
+						_typeHandler = scope.DataExchangeFactory.TypeHandlerFactory.GetTypeHandler(parameterClass, _dbType);
+					}
+					else
+					{
+	                    _typeHandler = scope.DataExchangeFactory.TypeHandlerFactory.GetUnkownTypeHandler();
+					}
 				}
 				else // If we specify a CLR type, use it
 				{

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/ResultMapping/ResultProperty.cs Tue Jun  6 11:29:26 2006
@@ -359,7 +359,7 @@
 			else
 			{
 				configScope.ErrorContext.MoreInfo = "Result property '"+_propertyName+"' set the typeHandler attribute.";
-				_typeHandler = configScope.ResolveTypeHandler( resultClass, _propertyName, _clrType, _dbType);
+				_typeHandler = configScope.ResolveTypeHandler( resultClass, _propertyName, _clrType, _dbType, true);
 			}
 
             if (this.IsLazyLoad)

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Serializers/ResultMapDeSerializer.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Serializers/ResultMapDeSerializer.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Serializers/ResultMapDeSerializer.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Configuration/Serializers/ResultMapDeSerializer.cs Tue Jun  6 11:29:26 2006
@@ -25,6 +25,7 @@
 
 #region Using
 
+using System;
 using System.Collections.Specialized;
 using System.Xml;
 using IBatisNet.Common.Xml;

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs?rev=412184&r1=412183&r2=412184&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/Scope/ConfigurationScope.cs Tue Jun  6 11:29:26 2006
@@ -259,15 +259,17 @@
 
 		#endregion 
 
-		/// <summary>
-		/// 
-		/// </summary>
-		/// <param name="clazz">Type of the ResultMap</param>
-		/// <param name="propertyName">Property name to map</param>
-		/// <param name="clrType"></param>
-		/// <param name="dbType"></param>
-		/// <returns></returns>
-		public ITypeHandler ResolveTypeHandler(Type clazz, string propertyName, string clrType, string dbType)
+
+        /// <summary>
+        /// Resolves the type handler.
+        /// </summary>
+        /// <param name="clazz">The clazz.</param>
+        /// <param name="memberName">Name of the member.</param>
+        /// <param name="clrType">Type of the CLR.</param>
+        /// <param name="dbType">Type of the db.</param>
+        /// <param name="forSetter">if set to <c>true</c> [for setter].</param>
+        /// <returns></returns>
+		public ITypeHandler ResolveTypeHandler(Type clazz, string memberName, string clrType, string dbType, bool forSetter)
 		{
 			ITypeHandler handler = null;
 			if (clazz==null)
@@ -308,7 +310,15 @@
 				// .NET object
 				if (clrType ==null || clrType.Length == 0) 
 				{
-					Type type = ObjectProbe.GetMemberTypeForGetter(clazz, propertyName);
+					Type type = null;
+					if (forSetter)
+					{
+						type = ObjectProbe.GetMemberTypeForSetter(clazz, memberName);
+					}
+					else
+					{
+						type = ObjectProbe.GetMemberTypeForGetter(clazz, memberName);	
+					}
                     handler = this.DataExchangeFactory.TypeHandlerFactory.GetTypeHandler(type, dbType);
 				} 
 				else