QueryForMap(string statementName, object parameterObject, string keyProperty, 
string valueProperty) not calling session.CloseConnection() correctly
---------------------------------------------------------------------------------------------------------------------------------------------------

         Key: IBATISNET-60
         URL: http://issues.apache.org/jira/browse/IBATISNET-60
     Project: iBatis for .NET
        Type: Bug
    Reporter: Ron Grabowski
 Assigned to: Gilles Bayon 


As of 5/9/2005, the version of IBatisNet.DataMapper.SqlMapper.cs in source 
control contains the following code:

public IDictionary QueryForMap(string statementName, object parameterObject, 
string keyProperty, string valueProperty)
{
 bool isSessionLocal = false;
 IDalSession session = _sessionContainer.LocalSession;
 IDictionary map = null; 
 if (session == null) 
 {
  session = new SqlMapSession(this.DataSource);
  session.OpenConnection();
  isSessionLocal = true;
 }
 IMappedStatement statement = GetMappedStatement(statementName);
 try 
 {
  map = statement.ExecuteQueryForMap(session, parameterObject, keyProperty, 
valueProperty);
 } 
 catch
 {
  throw;
 }
 finally
 {
  if ( isSessionLocal )
  {
   session.CloseConnection();
  }
}

If ExecuteQueryForMap completes successfully and isSessionLocal is set to true, 
session.CloseConnection() is not called. The code should be changed as follows 
(to match the other QueryFor... methods):

try 
{
 map = statement.ExecuteQueryForMap(session, parameterObject, keyProperty, 
valueProperty);
} 
catch
{
 throw;
}
finally
{
 if ( isSessionLocal )
 {
  session.CloseConnection();
 }
}

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to