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