Author: gbayon
Date: Sat Jun 28 07:41:55 2008
New Revision: 672530
URL: http://svn.apache.org/viewvc?rev=672530&view=rev
Log:
Fix for IBATISNET-274
Modified:
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/MultipleResultTest.cs
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs
Modified:
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/MultipleResultTest.cs
URL:
http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/MultipleResultTest.cs?rev=672530&r1=672529&r2=672530&view=diff
==============================================================================
---
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/MultipleResultTest.cs
(original)
+++
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper.SqlClient.Test.2005/Fixtures/Mapping/MultipleResultTest.cs
Sat Jun 28 07:41:55 2008
@@ -5,6 +5,7 @@
using Apache.Ibatis.DataMapper.SqlClient.Test.Domain;
using Apache.Ibatis.DataMapper.SqlClient.Test.Fixtures;
using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
namespace Apache.Ibatis.DataMapper.SqlClient.Test.Fixtures.Mapping
{
@@ -75,7 +76,11 @@
[Test]
public void TestMultipleAccountResultClass()
{
- Assert.AreEqual(2,
dataMapper.QueryForList("GetMultipleResultClassAccount", null).Count);
+ IList list =
dataMapper.QueryForList("GetMultipleResultClassAccount", null);
+ Assert.AreEqual(2, list.Count);
+
+ Assert.That(list[0], Is.InstanceOfType(typeof(List<Account>)));
+ Assert.That(list[1], Is.InstanceOfType(typeof(List<Account>)));
}
/// <summary>
@@ -93,12 +98,12 @@
Assert.AreEqual(2, list.Count);
- Account account = list[0] as Account;
- Category saveCategory = list[1] as Category;
- AssertAccount1(account);
- Assert.AreEqual(key, saveCategory.Id);
- Assert.AreEqual(category.Name, saveCategory.Name);
- Assert.AreEqual(category.Guid, saveCategory.Guid);
+ List<Account> accounts = (List<Account>)list[0];
+ List<Category> categorys = (List<Category>)list[1];
+ AssertAccount1(accounts[0]);
+ Assert.AreEqual(key, categorys[0].Id);
+ Assert.AreEqual(category.Name, categorys[0].Name);
+ Assert.AreEqual(category.Guid, categorys[0].Guid);
}
/// <summary>
@@ -115,6 +120,10 @@
IList list = dataMapper.QueryForList("GetMultipleResultClass",
null);
Assert.AreEqual(2, list.Count);
+
+ Assert.That(list[0], Is.InstanceOfType(typeof(List<Account>)));
+ Assert.That(list[1], Is.InstanceOfType(typeof(List<Category>)));
+
}
/// <summary>
Modified:
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs
URL:
http://svn.apache.org/viewvc/ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs?rev=672530&r1=672529&r2=672530&view=diff
==============================================================================
---
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs
(original)
+++
ibatis/trunk/cs/V3/src/Apache.Ibatis.DataMapper/MappedStatements/MappedStatement.cs
Sat Jun 28 07:41:55 2008
@@ -393,13 +393,32 @@
{
do
{
+ IList currentList = null;
+ if (request.Statement.ResultsMap.Count == 1)
+ {
+ currentList = list;
+ }
+ else
+ {
+ if (request.CurrentResultMap != null)
+ {
+ Type genericListType =
typeof(List<>).MakeGenericType(new Type[] { request.CurrentResultMap.Class });
+ currentList =
(IList)Activator.CreateInstance(genericListType);
+ }
+ else
+ {
+ currentList = new ArrayList();
+ }
+ list.Add(currentList);
+
+ }
// Get Results
while (reader.Read())
{
object obj = resultStrategy.Process(request, ref
reader, null);
if (obj != BaseStrategy.SKIP)
{
- list.Add(obj);
+ currentList.Add(obj);
}
}
}
@@ -454,12 +473,34 @@
{
if (rowDelegate == null)
{
+ //***
+ IList currentList = null;
+ if (request.Statement.ResultsMap.Count == 1)
+ {
+ currentList = list;
+ }
+ else
+ {
+ if (request.CurrentResultMap != null)
+ {
+ Type genericListType =
typeof(List<>).MakeGenericType(new Type[] { request.CurrentResultMap.Class });
+ currentList =
(IList)Activator.CreateInstance(genericListType);
+ }
+ else
+ {
+ currentList = new ArrayList();
+ }
+ list.Add(currentList);
+
+ }
+ //***
while (reader.Read())
{
object obj = resultStrategy.Process(request,
ref reader, null);
if (obj != BaseStrategy.SKIP)
{
- list.Add(obj);
+ //list.Add(obj);
+ currentList.Add(obj);
}
}
}