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/23 16:04:09 UTC
svn commit: r224468 -
/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
Author: gbayon
Date: Sat Jul 23 07:04:03 2005
New Revision: 224468
URL: http://svn.apache.org/viewcvs?rev=224468&view=rev
Log:
- Fix for IBATISNET-97 for QueryForList and QueryForMap
Modified:
ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs
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=224468&r1=224467&r2=224468&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/MappedStatements/MappedStatement.cs Sat Jul 23 07:04:03 2005
@@ -552,12 +552,29 @@
CacheKeyType.List);
}
- list = (IList)_statement.CacheModel[key];
- if (list == null)
+ object listAsObject = _statement.CacheModel[key];
+ // check if this query has alreay been run
+ if (listAsObject == CacheModel.NULL_OBJECT)
+ {
+ // convert the marker object back into a an empty list
+ if (_statement.ListClass == null)
+ {
+ list = new ArrayList();
+ }
+ else
+ {
+ list = _statement.CreateInstanceOfListClass();
+ }
+ }
+ else if (listAsObject == null)
{
list = RunQueryForList(request, session, parameterObject, skipResults, maxResults, null);
_statement.CacheModel[key] = list;
}
+ else
+ {
+ list = (IList) listAsObject;
+ }
}
return list;
@@ -818,11 +835,21 @@
CacheKeyType.Map);
}
- map = (IDictionary)_statement.CacheModel[key];
- if (map == null)
+ object mapAsObject = (IDictionary)_statement.CacheModel[key];
+ // check if this query has alreay been run
+ if (mapAsObject == CacheModel.NULL_OBJECT)
+ {
+ // convert the marker object back into a an empty hashtable
+ map = new Hashtable();
+ }
+ else if (mapAsObject == null)
{
map = RunQueryForMap( request, session, parameterObject, keyProperty, valueProperty );
_statement.CacheModel[key] = map;
+ }
+ else
+ {
+ map = (IDictionary) mapAsObject;
}
}