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. |