From: <aye...@us...> - 2009-01-23 07:13:20
|
Revision: 3999 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3999&view=rev Author: ayenderahien Date: 2009-01-23 07:13:16 +0000 (Fri, 23 Jan 2009) Log Message: ----------- applying patch from Ken Tong - NH 1645 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs Modified: trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs 2009-01-19 13:40:38 UTC (rev 3998) +++ trunk/nhibernate/src/NHibernate/Impl/AbstractSessionImpl.cs 2009-01-23 07:13:16 UTC (rev 3999) @@ -128,7 +128,7 @@ public abstract IDbConnection Connection { get; } public abstract int ExecuteNativeUpdate(NativeSQLQuerySpecification specification, QueryParameters queryParameters); public abstract int ExecuteUpdate(string query, QueryParameters queryParameters); - public abstract FutureCriteriaBatch FutureCriteriaBatch { get; } + public abstract FutureCriteriaBatch FutureCriteriaBatch { get; internal set; } public virtual IQuery GetNamedQuery(string queryName) { Modified: trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs 2009-01-19 13:40:38 UTC (rev 3998) +++ trunk/nhibernate/src/NHibernate/Impl/FutureCriteriaBatch.cs 2009-01-23 07:13:16 UTC (rev 3999) @@ -27,6 +27,7 @@ multiCriteria.Add(crit); } results = multiCriteria.List(); + ((SessionImpl)session).FutureCriteriaBatch = null; } return results; } @@ -85,4 +86,4 @@ #endregion } -} \ No newline at end of file +} Modified: trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-01-19 13:40:38 UTC (rev 3998) +++ trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-01-23 07:13:16 UTC (rev 3999) @@ -258,6 +258,10 @@ futureCriteriaBatch = new FutureCriteriaBatch(this); return futureCriteriaBatch; } + internal set + { + futureCriteriaBatch = value; + } } /// <summary></summary> Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2009-01-19 13:40:38 UTC (rev 3998) +++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2009-01-23 07:13:16 UTC (rev 3999) @@ -816,6 +816,7 @@ public override FutureCriteriaBatch FutureCriteriaBatch { get { throw new System.NotSupportedException("future queries are not supported for stateless session"); } + internal set { throw new System.NotSupportedException("future queries are not supported for stateless session"); } } public override IEntityPersister GetEntityPersister(string entityName, object obj) Modified: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs 2009-01-19 13:40:38 UTC (rev 3998) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/Futures/Fixture.cs 2009-01-23 07:13:16 UTC (rev 3999) @@ -54,5 +54,36 @@ } } } + + [Test] + public void TwoFuturesRunInTwoRoundTrips() + { + using (var s = sessions.OpenSession()) + { + if (((SessionFactoryImpl)sessions) + .ConnectionProvider.Driver.SupportsMultipleQueries == false) + { + Assert.Ignore("Not applicable for dialects that do not support multiple queries"); + } + + using (var logSpy = new SqlLogSpy()) + { + var persons10 = s.CreateCriteria(typeof(Person)) + .SetMaxResults(10) + .Future<Person>(); + + foreach (var person in persons10) { } // fire first future round-trip + + var persons5 = s.CreateCriteria(typeof(Person)) + .SetMaxResults(5) + .Future<int>(); + + foreach (var person in persons5) { } // fire second future round-trip + + var events = logSpy.Appender.GetEvents(); + Assert.AreEqual(2, events.Length); + } + } + } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |