diff --git a/src/Spring/Spring.Data/Data/Core/AdoAccessor.cs b/src/Spring/Spring.Data/Data/Core/AdoAccessor.cs index e96a13c2..efb10def 100644 --- a/src/Spring/Spring.Data/Data/Core/AdoAccessor.cs +++ b/src/Spring/Spring.Data/Data/Core/AdoAccessor.cs @@ -34,6 +34,8 @@ namespace Spring.Data.Core /// Juergen Hoeller public abstract class AdoAccessor : IInitializingObject { + protected object AdoUtils; + protected int commandTimeout; #region Properties @@ -110,10 +112,29 @@ namespace Spring.Data.Core /// /// protected virtual void ApplyCommandSettings(IDbCommand command) - { - ConnectionUtils.ApplyTransactionTimeout(command, DbProvider, CommandTimeout ); + { + Support.ConnectionUtils.ApplyTransactionTimeout(command, DbProvider, CommandTimeout); + } + + /// + /// Dispose the command, if any + /// + protected virtual void DisposeCommand(IDbCommand command) + { + Support.AdoUtils.DisposeCommand(command); + } + + /// + /// Dispose the command, if any + /// + protected virtual void DisposeDataAdapterCommands(IDbDataAdapter adapter) + { + Support.AdoUtils.DisposeDataAdapterCommands(adapter); } + /// + /// Extract the command text from the given , if any. + /// protected virtual string GetCommandText(object cmdTextProvider) { ICommandTextProvider commandTextProvider = cmdTextProvider as ICommandTextProvider; @@ -125,8 +146,20 @@ namespace Spring.Data.Core { return null; } - } + } + + /// + /// Obtain a connection/transaction pair + /// + protected virtual ConnectionTxPair GetConnectionTxPair(IDbProvider provider) + { + return Support.ConnectionUtils.GetConnectionTxPair(provider); + } + protected virtual void DisposeConnection(IDbConnection connection, IDbProvider provider) + { + Support.ConnectionUtils.DisposeConnection(connection, provider); + } /// /// Invoked by an diff --git a/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs b/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs index 52c3619e..fdd791b1 100644 --- a/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs +++ b/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs @@ -219,7 +219,7 @@ namespace Spring.Data.Core /// object returned from callback public object Execute(ICommandCallback action) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; try @@ -237,9 +237,9 @@ namespace Spring.Data.Core } catch (Exception e) { - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -254,8 +254,8 @@ namespace Spring.Data.Core } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -272,7 +272,7 @@ namespace Spring.Data.Core AssertUtils.ArgumentNotNull(commandCreator, "commandCreator", "IDbCommandCreator must not be null"); AssertUtils.ArgumentNotNull(action, "action", "Callback object must not be null"); - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; @@ -294,9 +294,9 @@ namespace Spring.Data.Core catch (Exception e) { commandCreator = null; - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -309,8 +309,8 @@ namespace Spring.Data.Core } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -325,7 +325,7 @@ namespace Spring.Data.Core /// A result object returned by the callback or null public object Execute(IDataAdapterCallback dataAdapterCallback) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbDataAdapter dataAdapter = null; try { @@ -342,17 +342,17 @@ namespace Spring.Data.Core } catch (Exception) { - AdoUtils.DisposeDataAdapterCommands(dataAdapter); + DisposeDataAdapterCommands(dataAdapter); //TODO set dataAdapter command's = null; ? //TODO exception translation? different hierarchy for data set operations. - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; throw; } finally { - AdoUtils.DisposeDataAdapterCommands(dataAdapter); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeDataAdapterCommands(dataAdapter); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } @@ -2586,7 +2586,7 @@ namespace Spring.Data.Core } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedResults, command); return returnedResults; @@ -2662,7 +2662,7 @@ namespace Spring.Data.Core } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedParameters, command); return null; @@ -2693,7 +2693,7 @@ namespace Spring.Data.Core } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedParameters, command); return returnVal; @@ -2729,7 +2729,7 @@ namespace Spring.Data.Core } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedParameters, command); return objectList; @@ -2958,7 +2958,7 @@ namespace Spring.Data.Core } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } } @@ -3019,7 +3019,7 @@ namespace Spring.Data.Core } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); ParameterUtils.CopyParameters(parameters, command); } } diff --git a/src/Spring/Spring.Data/Data/Generic/AdoTemplate.cs b/src/Spring/Spring.Data/Data/Generic/AdoTemplate.cs index d6307172..d4136985 100644 --- a/src/Spring/Spring.Data/Data/Generic/AdoTemplate.cs +++ b/src/Spring/Spring.Data/Data/Generic/AdoTemplate.cs @@ -194,7 +194,7 @@ namespace Spring.Data.Generic /// object returned from callback public T Execute(ICommandCallback action) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; try @@ -223,9 +223,9 @@ namespace Spring.Data.Generic } catch (Exception e) { - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -240,8 +240,8 @@ namespace Spring.Data.Generic } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -254,7 +254,7 @@ namespace Spring.Data.Generic /// A result object returned by the action or null public T Execute(CommandDelegate del) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; try @@ -282,9 +282,9 @@ namespace Spring.Data.Generic catch (Exception e) { string commandText = command.CommandText; - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -299,8 +299,8 @@ namespace Spring.Data.Generic } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -312,7 +312,7 @@ namespace Spring.Data.Generic /// object returned from callback public T Execute(IDbCommandCallback action) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; try @@ -330,9 +330,9 @@ namespace Spring.Data.Generic } catch (Exception e) { - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -347,8 +347,8 @@ namespace Spring.Data.Generic } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -361,7 +361,7 @@ namespace Spring.Data.Generic /// A result object returned by the action or null public T Execute(IDbCommandDelegate del) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; try @@ -380,9 +380,9 @@ namespace Spring.Data.Generic catch (Exception e) { string commandText = command.CommandText; - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -397,8 +397,8 @@ namespace Spring.Data.Generic } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -417,7 +417,7 @@ namespace Spring.Data.Generic { AssertUtils.ArgumentNotNull(commandCreator, "commandCreator", "IDbCommandCreator must not be null"); AssertUtils.ArgumentNotNull(action, "action", "Callback object must not be null"); - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbCommand command = null; try @@ -435,9 +435,9 @@ namespace Spring.Data.Generic } catch (Exception e) { - AdoUtils.DisposeCommand(command); + DisposeCommand(command); command = null; - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; if (DbProvider.IsDataAccessException(e)) { @@ -452,8 +452,8 @@ namespace Spring.Data.Generic } finally { - AdoUtils.DisposeCommand(command); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeCommand(command); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -471,7 +471,7 @@ namespace Spring.Data.Generic /// public T Execute(IDataAdapterCallback dataAdapterCallback) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbDataAdapter dataAdapter = null; try { @@ -487,17 +487,17 @@ namespace Spring.Data.Generic } catch (Exception) { - AdoUtils.DisposeDataAdapterCommands(dataAdapter); + DisposeDataAdapterCommands(dataAdapter); //TODO set dataAdapter command's = null; ? //TODO exception translation? different hierarchy for data set operations. - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; throw; } finally { - AdoUtils.DisposeDataAdapterCommands(dataAdapter); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeDataAdapterCommands(dataAdapter); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } @@ -514,7 +514,7 @@ namespace Spring.Data.Generic /// A result object returned by the callback or null public T Execute(DataAdapterDelegate dataAdapterCallback) { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(DbProvider); + ConnectionTxPair connectionTxPairToUse = GetConnectionTxPair(DbProvider); IDbDataAdapter dataAdapter = null; try { @@ -531,17 +531,17 @@ namespace Spring.Data.Generic } catch (Exception) { - AdoUtils.DisposeDataAdapterCommands(dataAdapter); + DisposeDataAdapterCommands(dataAdapter); //TODO set dataAdapter command's = null; ? //TODO exception translation? different hierarchy for data set operations. - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); connectionTxPairToUse.Connection = null; throw; } finally { - AdoUtils.DisposeDataAdapterCommands(dataAdapter); - ConnectionUtils.DisposeConnection(connectionTxPairToUse.Connection, DbProvider); + DisposeDataAdapterCommands(dataAdapter); + DisposeConnection(connectionTxPairToUse.Connection, DbProvider); } } @@ -1201,7 +1201,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); ParameterUtils.CopyParameters(parameters, command); } } @@ -1273,7 +1273,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } } @@ -1343,7 +1343,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } } @@ -1376,7 +1376,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedParameters, command); return objectList; @@ -1408,7 +1408,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedParameters, command); return returnVal; @@ -1555,7 +1555,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedResults, command); return returnedResults; @@ -1691,7 +1691,7 @@ namespace Spring.Data.Generic } finally { - AdoUtils.CloseReader(reader); + Support.AdoUtils.CloseReader(reader); } ParameterUtils.ExtractOutputParameters(returnedResults, command); return returnedResults;