|
From: <jul...@us...> - 2011-02-26 05:56:33
|
Revision: 5399
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5399&view=rev
Author: julian-maughan
Date: 2011-02-26 05:56:26 +0000 (Sat, 26 Feb 2011)
Log Message:
-----------
Fixed SessionException ("Session was already closed!") that occurs when disposing a stateless session that has been closed (ref. NH-2549).
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-25 09:49:31 UTC (rev 5398)
+++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2011-02-26 05:56:26 UTC (rev 5399)
@@ -438,7 +438,7 @@
{
get { return false; }
}
-
+
public override object GetEntityUsingInterceptor(EntityKey key)
{
CheckAndUpdateSessionStatus();
@@ -472,7 +472,7 @@
{
if (entity.IsProxy())
{
- INHibernateProxy proxy = entity as INHibernateProxy;
+ INHibernateProxy proxy = entity as INHibernateProxy;
entity = proxy.HibernateLazyInitializer.GetImplementation();
}
return GuessEntityName(entity);
@@ -551,7 +551,7 @@
/// Implementors of the <seealso cref="IStatelessSession"/> interface should return the NHibernate implementation of this method.
/// </remarks>
/// <returns>
- /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface
+ /// An NHibernate implementation of the <seealso cref="ISessionImplementor"/> interface
/// </returns>
public ISessionImplementor GetSessionImplementation()
{
@@ -981,7 +981,7 @@
// free managed resources that are being managed by the session if we
// know this call came through Dispose()
- if (isDisposing)
+ if (isDisposing && !IsClosed)
{
Close();
}
Modified: trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2011-02-25 09:49:31 UTC (rev 5398)
+++ trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2011-02-26 05:56:26 UTC (rev 5399)
@@ -211,5 +211,20 @@
criteria.Executing(c => c.List()).NotThrows();
}
}
+
+ [Test]
+ public void DisposingClosedStatelessSessionShouldNotCauseSessionException()
+ {
+ try
+ {
+ IStatelessSession ss = sessions.OpenStatelessSession();
+ ss.Close();
+ ss.Dispose();
+ }
+ catch (SessionException)
+ {
+ Assert.Fail();
+ }
+ }
}
}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|