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