|
From: <fab...@us...> - 2009-02-20 20:18:33
|
Revision: 4090
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4090&view=rev
Author: fabiomaulo
Date: 2009-02-20 20:18:28 +0000 (Fri, 20 Feb 2009)
Log Message:
-----------
Fix NH-1678 and NH-1686
Possible breaking change (see release notes)
Modified Paths:
--------------
trunk/nhibernate/releasenotes.txt
trunk/nhibernate/src/NHibernate/ISession.cs
trunk/nhibernate/src/NHibernate/IStatelessSession.cs
trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs
trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs
trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs
Modified: trunk/nhibernate/releasenotes.txt
===================================================================
--- trunk/nhibernate/releasenotes.txt 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/releasenotes.txt 2009-02-20 20:18:28 UTC (rev 4090)
@@ -7,7 +7,8 @@
* compatible only with .NET2.0 SP1 or above (System.DateTimeOffset)
##### Possible Breaking Changes for external frameworks #####
- * ISession interface have additional methods
+ * ISession interface has additional methods
+ * IStatelessSession interface has additional methods
* DefaultProxyFactoryFactory removed
* IProxyFactoryFactory now provide the IProxyValidator implementation
Modified: trunk/nhibernate/src/NHibernate/ISession.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/ISession.cs 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/src/NHibernate/ISession.cs 2009-02-20 20:18:28 UTC (rev 4090)
@@ -739,6 +739,21 @@
/// <summary>
/// Creates a new <c>Criteria</c> for the entity class.
/// </summary>
+ /// <typeparam name="T">The entity class</typeparam>
+ /// <returns>An ICriteria object</returns>
+ ICriteria CreateCriteria<T>() where T : class;
+
+ /// <summary>
+ /// Creates a new <c>Criteria</c> for the entity class with a specific alias
+ /// </summary>
+ /// <typeparam name="T">The entity class</typeparam>
+ /// <param name="alias">The alias of the entity</param>
+ /// <returns>An ICriteria object</returns>
+ ICriteria CreateCriteria<T>(string alias) where T : class;
+
+ /// <summary>
+ /// Creates a new <c>Criteria</c> for the entity class.
+ /// </summary>
/// <param name="persistentClass">The class to Query</param>
/// <returns>An ICriteria object</returns>
ICriteria CreateCriteria(System.Type persistentClass);
Modified: trunk/nhibernate/src/NHibernate/IStatelessSession.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/src/NHibernate/IStatelessSession.cs 2009-02-20 20:18:28 UTC (rev 4090)
@@ -130,7 +130,7 @@
/// <typeparam name="T">A class, which is persistent, or has persistent subclasses</typeparam>
/// <returns> The <see cref="ICriteria"/>. </returns>
/// <remarks>Entities returned by the query are detached.</remarks>
- ICriteria CreateCriteria<T>();
+ ICriteria CreateCriteria<T>() where T: class;
/// <summary>
/// Create a new <see cref="ICriteria"/> instance, for the given entity class,
@@ -140,8 +140,27 @@
/// <param name="alias">The alias of the entity</param>
/// <returns> The <see cref="ICriteria"/>. </returns>
/// <remarks>Entities returned by the query are detached.</remarks>
- ICriteria CreateCriteria<T>(string alias);
+ ICriteria CreateCriteria<T>(string alias) where T : class;
+ /// <summary>
+ /// Create a new <see cref="ICriteria"/> instance, for the given entity class,
+ /// or a superclass of an entity class.
+ /// </summary>
+ /// <param name="entityType">A class, which is persistent, or has persistent subclasses</param>
+ /// <returns> The <see cref="ICriteria"/>. </returns>
+ /// <remarks>Entities returned by the query are detached.</remarks>
+ ICriteria CreateCriteria(System.Type entityType);
+
+ /// <summary>
+ /// Create a new <see cref="ICriteria"/> instance, for the given entity class,
+ /// or a superclass of an entity class, with the given alias.
+ /// </summary>
+ /// <param name="entityType">A class, which is persistent, or has persistent subclasses</param>
+ /// <param name="alias">The alias of the entity</param>
+ /// <returns> The <see cref="ICriteria"/>. </returns>
+ /// <remarks>Entities returned by the query are detached.</remarks>
+ ICriteria CreateCriteria(System.Type entityType, string alias);
+
/// <summary>
/// Create a new <see cref="ICriteria"/> instance, for the given entity name.
/// </summary>
Modified: trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/src/NHibernate/Impl/SessionImpl.cs 2009-02-20 20:18:28 UTC (rev 4090)
@@ -1515,6 +1515,11 @@
return plan.PerformIterate<T>(queryParameters, this);
}
+ public ICriteria CreateCriteria<T>() where T: class
+ {
+ return CreateCriteria(typeof (T));
+ }
+
public ICriteria CreateCriteria(System.Type persistentClass)
{
CheckAndUpdateSessionStatus();
@@ -1522,6 +1527,11 @@
return new CriteriaImpl(persistentClass, this);
}
+ public ICriteria CreateCriteria<T>(string alias) where T : class
+ {
+ return CreateCriteria(typeof (T), alias);
+ }
+
public ICriteria CreateCriteria(System.Type persistentClass, string alias)
{
CheckAndUpdateSessionStatus();
Modified: trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/src/NHibernate/Impl/StatelessSessionImpl.cs 2009-02-20 20:18:28 UTC (rev 4090)
@@ -664,10 +664,9 @@
/// <typeparam name="T">A class, which is persistent, or has persistent subclasses</typeparam>
/// <returns> The <see cref="ICriteria"/>. </returns>
/// <remarks>Entities returned by the query are detached.</remarks>
- public ICriteria CreateCriteria<T>()
+ public ICriteria CreateCriteria<T>() where T: class
{
- CheckAndUpdateSessionStatus();
- return new CriteriaImpl(typeof(T), this);
+ return CreateCriteria(typeof (T));
}
/// <summary>
@@ -678,12 +677,23 @@
/// <param name="alias">The alias of the entity</param>
/// <returns> The <see cref="ICriteria"/>. </returns>
/// <remarks>Entities returned by the query are detached.</remarks>
- public ICriteria CreateCriteria<T>(string alias)
+ public ICriteria CreateCriteria<T>(string alias) where T : class
{
+ return CreateCriteria(typeof(T), alias);
+ }
+
+ public ICriteria CreateCriteria(System.Type entityType)
+ {
CheckAndUpdateSessionStatus();
- return new CriteriaImpl(typeof(T), alias, this);
+ return new CriteriaImpl(entityType, this);
}
+ public ICriteria CreateCriteria(System.Type entityType, string alias)
+ {
+ CheckAndUpdateSessionStatus();
+ return new CriteriaImpl(entityType, alias, this);
+ }
+
/// <summary>
/// Create a new <see cref="ICriteria"/> instance, for the given entity name.
/// </summary>
@@ -692,7 +702,8 @@
/// <remarks>Entities returned by the query are detached.</remarks>
public ICriteria CreateCriteria(string entityName)
{
- throw new NotImplementedException();
+ CheckAndUpdateSessionStatus();
+ return new CriteriaImpl(entityName, this);
}
/// <summary>
@@ -705,7 +716,8 @@
/// <remarks>Entities returned by the query are detached.</remarks>
public ICriteria CreateCriteria(string entityName, string alias)
{
- throw new NotImplementedException();
+ CheckAndUpdateSessionStatus();
+ return new CriteriaImpl(entityName, alias, this);
}
/// <summary> Begin a NHibernate transaction.</summary>
Modified: trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/src/NHibernate.Test/Criteria/CriteriaQueryTest.cs 2009-02-20 20:18:28 UTC (rev 4090)
@@ -1274,7 +1274,7 @@
ITransaction t = s.BeginTransaction();
// HQL: from Animal a where a.mother.class = Reptile
- ICriteria c = s.CreateCriteria(typeof(Animal), "a")
+ ICriteria c = s.CreateCriteria<Animal>("a")
.CreateAlias("mother", "m")
.Add(Property.ForName("m.class").Eq(typeof(Reptile)));
c.List();
@@ -1298,7 +1298,7 @@
{
ISession s = OpenSession();
ITransaction t = s.BeginTransaction();
- s.CreateCriteria(typeof(Course)).SetProjection(Projections.Property("CourseCode")).List();
+ s.CreateCriteria<Course>().SetProjection(Projections.Property("CourseCode")).List();
CriteriaTransformer.Clone(s.CreateCriteria(typeof(Course)).SetProjection(Projections.Id())).List();
t.Rollback();
s.Close();
Modified: trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2009-02-20 19:48:11 UTC (rev 4089)
+++ trunk/nhibernate/src/NHibernate.Test/Stateless/StatelessSessionFixture.cs 2009-02-20 20:18:28 UTC (rev 4090)
@@ -77,10 +77,14 @@
Assert.AreEqual("Blahs", doc2.Name);
Assert.AreEqual(doc.Text, doc2.Text);
- doc2 = (Document)ss.CreateCriteria<Document>().UniqueResult();
+ doc2 = ss.CreateCriteria<Document>().UniqueResult<Document>();
Assert.AreEqual("Blahs", doc2.Name);
Assert.AreEqual(doc.Text, doc2.Text);
+ doc2 = (Document)ss.CreateCriteria(typeof(Document)).UniqueResult();
+ Assert.AreEqual("Blahs", doc2.Name);
+ Assert.AreEqual(doc.Text, doc2.Text);
+
using (tx = ss.BeginTransaction())
{
ss.Delete(doc);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|