Update of /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data.NHibernate/Data/NHibernate
In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv9048
Modified Files:
LocalSessionFactoryObject.cs
Log Message:
SPRNET-879 - LocalSessionFactoryObject can configure ISessionFactory to use Spring's IDbProvider as a NHibernate ConnectionProvider
Index: LocalSessionFactoryObject.cs
===================================================================
RCS file: /cvsroot/springnet/Spring.Net/src/Spring/Spring.Data.NHibernate/Data/NHibernate/LocalSessionFactoryObject.cs,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -d -r1.5 -r1.6
*** LocalSessionFactoryObject.cs 4 Feb 2008 22:42:49 -0000 1.5
--- LocalSessionFactoryObject.cs 25 Feb 2008 20:39:17 -0000 1.6
***************
*** 22,28 ****
--- 22,30 ----
using System.Collections;
+ using System.Data;
using Common.Logging;
using NHibernate;
using NHibernate.Cfg;
+ using NHibernate.Connection;
using Spring.Core.IO;
using Spring.Data.Common;
***************
*** 231,239 ****
{
config.SetProperty(Environment.ConnectionString, dbProvider.ConnectionString);
!
}
if (this.hibernateProperties != null)
{
config.AddProperties(hibernateProperties);
}
--- 233,253 ----
{
config.SetProperty(Environment.ConnectionString, dbProvider.ConnectionString);
! config.SetProperty(Environment.ConnectionProvider, typeof(DbProviderWrapper).AssemblyQualifiedName);
}
if (this.hibernateProperties != null)
{
+ if (config.GetProperty(Environment.ConnectionProvider) != null &&
+ hibernateProperties.Contains(Environment.ConnectionProvider))
+ {
+ #region Logging
+ if (log.IsWarnEnabled)
+ {
+ log.Warn("Overriding use of Spring's Hibernate Connection Provider with [" +
+ hibernateProperties[Environment.ConnectionProvider] + "]");
+ }
+ #endregion
+ config.Properties.Remove(Environment.ConnectionProvider);
+ }
config.AddProperties(hibernateProperties);
}
***************
*** 332,338 ****
protected virtual ISessionFactory NewSessionFactory(Configuration config)
{
! return config.BuildSessionFactory();
}
}
}
--- 346,390 ----
protected virtual ISessionFactory NewSessionFactory(Configuration config)
{
! ISessionFactory sf = config.BuildSessionFactory();
! DbProviderWrapper dbProviderWrapper = sf.ConnectionProvider as DbProviderWrapper;
! if (dbProviderWrapper != null)
! {
! dbProviderWrapper.DbProvider = dbProvider;
! }
! return sf;
! }
!
! #region DbProviderWrapper Helper class
!
! internal class DbProviderWrapper : ConnectionProvider
! {
! private IDbProvider _dbProvider;
!
! public DbProviderWrapper()
! {
! }
!
! public IDbProvider DbProvider
! {
! get { return _dbProvider; }
! set { _dbProvider = value; }
! }
!
! public override void CloseConnection(IDbConnection conn)
! {
! base.CloseConnection(conn);
! conn.Dispose();
! }
!
! public override IDbConnection GetConnection()
! {
! IDbConnection dbCon = _dbProvider.CreateConnection();
! dbCon.Open();
! return dbCon;
! }
}
+ #endregion // DbProviderWrapper Helper class
+
}
}
|