From: <ric...@us...> - 2009-07-01 20:17:28
|
Revision: 4558 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4558&view=rev Author: ricbrown Date: 2009-07-01 20:17:23 +0000 (Wed, 01 Jul 2009) Log Message: ----------- Move to single QueryOver class (instead of impl and detached-impl). Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteria.cs trunk/nhibernate/src/NHibernate/ICriteriaOfT.cs trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs trunk/nhibernate/src/NHibernate/NHibernate.csproj trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/CriteriaOfTFixture.cs trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/LambdaFixtureBase.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs Removed Paths: ------------- trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteriaOfT.cs trunk/nhibernate/src/NHibernate/Impl/CriteriaOfTImpl.cs trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/DetachedCriteriaOfTFixture.cs Modified: trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteria.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteria.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteria.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -95,11 +95,6 @@ return new DetachedCriteria(entityName, alias); } - public static DetachedCriteria<T> QueryOver<T>() - { - return new DetachedCriteria<T>(new DetachedCriteria(typeof(T))); - } - public DetachedCriteria Add(ICriterion criterion) { criteria.Add(criterion); Deleted: trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteriaOfT.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteriaOfT.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate/Criterion/DetachedCriteriaOfT.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -1,61 +0,0 @@ - -using System; -using System.Linq.Expressions; - -using NHibernate.Impl; - -namespace NHibernate.Criterion -{ - - /// <summary> - /// Some applications need to create criteria queries in "detached - /// mode", where the Hibernate session is not available. This class - /// may be instantiated anywhere, and then a <c>ICriteria</c> - /// may be obtained by passing a session to - /// <c>GetExecutableCriteria()</c>. All methods have the - /// same semantics and behavior as the corresponding methods of the - /// <c>ICriteria<T></c> interface. - /// </summary> - [Serializable] - public class DetachedCriteria<T> - { - - private DetachedCriteria _criteria; - - protected internal DetachedCriteria(DetachedCriteria detachedCriteria) - { - _criteria = detachedCriteria; - } - - /// <summary> - /// Get an executable instance of <c>Criteria<T></c>, - /// to actually run the query.</summary> - public ICriteria<T> GetExecutableCriteria(ISession session) - { - return new CriteriaImpl<T>(_criteria.GetExecutableCriteria(session)); - } - - public DetachedCriteria<T> And(Expression<Func<T, bool>> expression) - { - return Add(expression); - } - - public DetachedCriteria<T> Where(Expression<Func<T, bool>> expression) - { - return Add(expression); - } - - private DetachedCriteria<T> Add(Expression<Func<T, bool>> expression) - { - _criteria.Add(ExpressionProcessor.ProcessExpression<T>(expression)); - return this; - } - - public static implicit operator DetachedCriteria(DetachedCriteria<T> detachedCriteria) - { - return detachedCriteria._criteria; - } - - } - -} \ No newline at end of file Copied: trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs (from rev 4557, trunk/nhibernate/src/NHibernate/Impl/CriteriaOfTImpl.cs) =================================================================== --- trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs (rev 0) +++ trunk/nhibernate/src/NHibernate/Criterion/QueryOver.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -0,0 +1,118 @@ + +using System; +using System.Collections.Generic; +using System.Linq.Expressions; + +using NHibernate.Impl; +using NHibernate.SqlCommand; + +namespace NHibernate.Criterion +{ + + /// <summary> + /// Implementation of the <see cref="ICriteria<T>"/> interface + /// </summary> + [Serializable] + public class QueryOver<T> : ICriteria<T> + { + + private ICriteria _criteria; + private CriteriaImpl _impl; + + public QueryOver() + { + _impl = new CriteriaImpl(typeof(T), null); + _criteria = _impl; + } + + public QueryOver(CriteriaImpl impl) + { + _impl = impl; + _criteria = impl; + } + + public QueryOver(CriteriaImpl rootImpl, ICriteria criteria) + { + _impl = rootImpl; + _criteria = criteria; + } + + public ICriteria UnderlyingCriteria + { + get { return _criteria; } + } + + public ICriteria<T> And(Expression<Func<T, bool>> expression) + { + return Add(expression); + } + + public ICriteria<T> And(Expression<Func<bool>> expression) + { + return Add(expression); + } + + public ICriteria<T> Where(Expression<Func<T, bool>> expression) + { + return Add(expression); + } + + public ICriteria<T> Where(Expression<Func<bool>> expression) + { + return Add(expression); + } + + public ICriteria<U> JoinWalk<U>(Expression<Func<T, U>> path) + { + return new QueryOver<U>(_impl, + _criteria.CreateCriteria( + ExpressionProcessor.FindMemberExpression(path.Body))); + } + + public ICriteria<U> JoinWalk<U>(Expression<Func<T, IEnumerable<U>>> path) + { + return new QueryOver<U>(_impl, + _criteria.CreateCriteria( + ExpressionProcessor.FindMemberExpression(path.Body))); + } + + public ICriteria<T> Join(Expression<Func<T, object>> path, Expression<Func<object>> alias) + { + return AddAlias( + ExpressionProcessor.FindMemberExpression(path.Body), + ExpressionProcessor.FindMemberExpression(alias.Body), + JoinType.InnerJoin); + } + + public IList<T> List() + { + return _criteria.List<T>(); + } + + public ICriteria<T> GetExecutableQueryOver(ISession session) + { + _impl.Session = session.GetSessionImplementation(); + return this; + } + + private QueryOver<T> AddAlias(string path, string alias, JoinType joinType) + { + _criteria.CreateAlias(path, alias, joinType); + return this; + } + + private QueryOver<T> Add(Expression<Func<T, bool>> expression) + { + _criteria.Add(ExpressionProcessor.ProcessExpression<T>(expression)); + return this; + } + + private QueryOver<T> Add(Expression<Func<bool>> expression) + { + _criteria.Add(ExpressionProcessor.ProcessExpression(expression)); + return this; + } + + } + +} Modified: trunk/nhibernate/src/NHibernate/ICriteriaOfT.cs =================================================================== --- trunk/nhibernate/src/NHibernate/ICriteriaOfT.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate/ICriteriaOfT.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -80,6 +80,11 @@ /// <returns>The list filled with the results.</returns> IList<T> List(); + /// <summary> + /// Get an executable instance of <c>Criteria<T></c>, + /// to actually run the query.</summary> + ICriteria<T> GetExecutableQueryOver(ISession session); + } } Deleted: trunk/nhibernate/src/NHibernate/Impl/CriteriaOfTImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/CriteriaOfTImpl.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate/Impl/CriteriaOfTImpl.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -1,96 +0,0 @@ - -using System; -using System.Collections.Generic; -using System.Linq.Expressions; -using NHibernate.SqlCommand; - -namespace NHibernate.Impl -{ - - /// <summary> - /// Implementation of the <see cref="ICriteria<T>"/> interface - /// </summary> - [Serializable] - public class CriteriaImpl<T> : ICriteria<T> - { - - private ICriteria _criteria; - - public CriteriaImpl(ICriteria criteria) - { - _criteria = criteria; - } - - public ICriteria UnderlyingCriteria - { - get { return _criteria; } - } - - ICriteria<T> ICriteria<T>.And(Expression<Func<T, bool>> expression) - { - return Add(expression); - } - - ICriteria<T> ICriteria<T>.And(Expression<Func<bool>> expression) - { - return Add(expression); - } - - ICriteria<T> ICriteria<T>.Where(Expression<Func<T, bool>> expression) - { - return Add(expression); - } - - ICriteria<T> ICriteria<T>.Where(Expression<Func<bool>> expression) - { - return Add(expression); - } - - ICriteria<U> ICriteria<T>.JoinWalk<U>(Expression<Func<T, U>> path) - { - return new CriteriaImpl<U>( - _criteria.CreateCriteria( - ExpressionProcessor.FindMemberExpression(path.Body))); - } - - ICriteria<U> ICriteria<T>.JoinWalk<U>(Expression<Func<T, IEnumerable<U>>> path) - { - return new CriteriaImpl<U>( - _criteria.CreateCriteria( - ExpressionProcessor.FindMemberExpression(path.Body))); - } - - ICriteria<T> ICriteria<T>.Join(Expression<Func<T, object>> path, Expression<Func<object>> alias) - { - return AddAlias( - ExpressionProcessor.FindMemberExpression(path.Body), - ExpressionProcessor.FindMemberExpression(alias.Body), - JoinType.InnerJoin); - } - - IList<T> ICriteria<T>.List() - { - return _criteria.List<T>(); - } - - private CriteriaImpl<T> AddAlias(string path, string alias, JoinType joinType) - { - _criteria.CreateAlias(path, alias, joinType); - return this; - } - - private CriteriaImpl<T> Add(Expression<Func<T, bool>> expression) - { - _criteria.Add(ExpressionProcessor.ProcessExpression<T>(expression)); - return this; - } - - private CriteriaImpl<T> Add(Expression<Func<bool>> expression) - { - _criteria.Add(ExpressionProcessor.ProcessExpression(expression)); - return this; - } - - } - -} Modified: trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -8,6 +8,7 @@ using log4net; using NHibernate.AdoNet; using NHibernate.Collection; +using NHibernate.Criterion; using NHibernate.Engine; using NHibernate.Engine.Query; using NHibernate.Engine.Query.Sql; @@ -1875,7 +1876,8 @@ { using (new SessionIdLoggingContext(SessionId)) { - return new CriteriaImpl<T>(CreateCriteria(typeof(T))); + CheckAndUpdateSessionStatus(); + return new QueryOver<T>(new CriteriaImpl(typeof(T), this)); } } Modified: trunk/nhibernate/src/NHibernate/NHibernate.csproj =================================================================== --- trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate/NHibernate.csproj 2009-07-01 20:17:23 UTC (rev 4558) @@ -479,7 +479,6 @@ <Compile Include="Cfg\MappingSchema\HbmTimestamp.cs" /> <Compile Include="Cfg\MappingSchema\HbmVersion.cs" /> <Compile Include="Cfg\MappingSchema\IDecoratable.cs" /> - <Compile Include="Criterion\DetachedCriteriaOfT.cs" /> <Compile Include="Criterion\IPropertyProjection.cs" /> <Compile Include="Dialect\MsSql2008Dialect.cs" /> <Compile Include="Dialect\InformixDialect0940.cs" /> @@ -531,7 +530,7 @@ <Compile Include="Hql\Ast\ANTLR\Tree\InsertStatement.cs" /> <Compile Include="Hql\Ast\ANTLR\Tree\UpdateStatement.cs" /> <Compile Include="ICriteriaOfT.cs" /> - <Compile Include="Impl\CriteriaOfTImpl.cs" /> + <Compile Include="Criterion\QueryOver.cs" /> <Compile Include="Impl\ExpressionProcessor.cs" /> <Compile Include="Impl\SessionIdLoggingContext.cs" /> <Compile Include="Param\AbstractExplicitParameterSpecification.cs" /> Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/CriteriaOfTFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/CriteriaOfTFixture.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/CriteriaOfTFixture.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -85,7 +85,7 @@ public void Where_BehavesTheSameAs_And() { Person personAlias = null; - Impl.CriteriaImpl<Person> expected = (Impl.CriteriaImpl<Person>) + QueryOver<Person> expected = (QueryOver<Person>) CreateTestQueryOver<Person>(() => personAlias) .And(() => personAlias.Name == "test name") .And(p => p.Name == "test name"); Deleted: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/DetachedCriteriaOfTFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/DetachedCriteriaOfTFixture.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/DetachedCriteriaOfTFixture.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -1,48 +0,0 @@ -using System; -using System.Collections; - -using NUnit.Framework; - -using NHibernate.Criterion; -using NHibernate.Transform; -using NHibernate.Type; -using NHibernate.Util; - -namespace NHibernate.Test.Criteria.Lambda -{ - - [TestFixture] - public class DetachedCriteriaOfTFixture : LambdaFixtureBase - { - - [Test] - public void SimpleCriterion_NoAlias() - { - DetachedCriteria expected = - DetachedCriteria.For<Person>() - .Add(Restrictions.Eq("Name", "test name")); - - DetachedCriteria<Person> actual = - DetachedCriteria.QueryOver<Person>() - .Where(p => p.Name == "test name"); - - AssertCriteriaAreEqual(expected, actual); - } - - [Test] - public void Where_BehavesTheSameAs_And() - { - DetachedCriteria<Person> expected = - DetachedCriteria.QueryOver<Person>() - .And(p => p.Name == "test name"); - - DetachedCriteria<Person> actual = - DetachedCriteria.QueryOver<Person>() - .Where(p => p.Name == "test name"); - - AssertCriteriaAreEqual(expected, actual); - } - - } - -} \ No newline at end of file Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/IntegrationFixture.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -68,7 +68,7 @@ } [Test] - public void DetachedCriteriaOfT_SimpleCriterion() + public void DetachedQuery_SimpleCriterion() { using (ISession s = OpenSession()) using (ITransaction t = s.BeginTransaction()) @@ -80,11 +80,11 @@ using (ISession s = OpenSession()) { var personQuery = - DetachedCriteria.QueryOver<Person>() + new QueryOver<Person>() .Where(p => p.Name == "test person 1"); IList<Person> actual = - personQuery.GetExecutableCriteria(s) + personQuery.GetExecutableQueryOver(s) .List(); Assert.That(actual[0].Age, Is.EqualTo(20)); Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/LambdaFixtureBase.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/LambdaFixtureBase.cs 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate.Test/Criteria/Lambda/LambdaFixtureBase.cs 2009-07-01 20:17:23 UTC (rev 4558) @@ -32,13 +32,13 @@ protected ICriteria<T> CreateTestQueryOver<T>() { - return new CriteriaImpl<T>(new CriteriaImpl(typeof(T), null)); + return new QueryOver<T>(new CriteriaImpl(typeof(T), null)); } protected ICriteria<T> CreateTestQueryOver<T>(Expression<Func<object>> alias) { string aliasContainer = ExpressionProcessor.FindMemberExpression(alias.Body); - return new CriteriaImpl<T>(new CriteriaImpl(typeof(T), aliasContainer, null)); + return new QueryOver<T>(new CriteriaImpl(typeof(T), aliasContainer, null)); } protected void AssertCriteriaAreEqual(ICriteria expected, ICriteria actual) @@ -53,7 +53,7 @@ protected void AssertCriteriaAreEqual<T>(ICriteria expected, ICriteria<T> actual) { - AssertObjectsAreEqual(expected, ((CriteriaImpl<T>)actual).UnderlyingCriteria); + AssertObjectsAreEqual(expected, ((QueryOver<T>)actual).UnderlyingCriteria); } private void AssertDictionariesAreEqual(IDictionary expected, IDictionary actual) Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-01 18:48:00 UTC (rev 4557) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-07-01 20:17:23 UTC (rev 4558) @@ -146,7 +146,6 @@ <Compile Include="Criteria\Enrolment.cs" /> <Compile Include="Criteria\Lambda\CriteriaAssertFixture.cs" /> <Compile Include="Criteria\Lambda\CriteriaOfTFixture.cs" /> - <Compile Include="Criteria\Lambda\DetachedCriteriaOfTFixture.cs" /> <Compile Include="Criteria\Lambda\IntegrationFixture.cs" /> <Compile Include="Criteria\Lambda\LambdaFixtureBase.cs" /> <Compile Include="Criteria\Lambda\Model.cs" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |