|
From: <fab...@us...> - 2009-04-23 03:28:40
|
Revision: 4202
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4202&view=rev
Author: fabiomaulo
Date: 2009-04-23 03:28:22 +0000 (Thu, 23 Apr 2009)
Log Message:
-----------
- Bug fix + refactoring AST qt
- test to pass
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs
trunk/nhibernate/src/NHibernate/Hql/Util/SessionFactoryHelper.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs
trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.cs
trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.hbm.xml
trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs 2009-04-22 22:56:16 UTC (rev 4201)
+++ trunk/nhibernate/src/NHibernate/Hql/Ast/ANTLR/SessionFactoryHelperExtensions.cs 2009-04-23 03:28:22 UTC (rev 4202)
@@ -4,6 +4,7 @@
using NHibernate.Engine;
using NHibernate.Hql.Ast.ANTLR.Tree;
using NHibernate.Hql.Ast.ANTLR.Util;
+using NHibernate.Hql.Util;
using NHibernate.Persister.Collection;
using NHibernate.Persister.Entity;
using NHibernate.SqlCommand;
@@ -251,22 +252,7 @@
/// <returns>The defined persister for this class, or null if none found.</returns>
public static IQueryable FindQueryableUsingImports(ISessionFactoryImplementor sfi, string className)
{
- // NH : this method prevent unrecognized class when entityName != class.FullName
- // this is a patch for the TODO below
- var possibleResult = sfi.TryGetEntityPersister(GetEntityName(className)) as IQueryable;
- if (possibleResult != null)
- {
- return possibleResult;
- }
-
- string importedClassName = sfi.GetImportedClassName(className);
-
- if (importedClassName == null)
- {
- return null;
- }
- // NH: This method don't work if entityName != class.FullName
- return (IQueryable)sfi.TryGetEntityPersister(GetEntityName(importedClassName));
+ return SessionFactoryHelper.FindQueryableUsingImports(sfi, className);
}
private static string GetEntityName(string assemblyQualifiedName)
@@ -292,24 +278,7 @@
/// <returns>The defined persister for this entity, or null if none found.</returns>
private IEntityPersister FindEntityPersisterByName(string name)
{
- // First, try to get the persister using the given name directly.
- try
- {
- return _sfi.GetEntityPersister( name );
- }
- catch (MappingException)
- {
- // unable to locate it using this name
- }
-
- // If that didn't work, try using the 'import' name.
- string importedClassName = _sfi.GetImportedClassName( name );
- if ( importedClassName == null )
- {
- return null;
- }
-
- return _sfi.GetEntityPersister( importedClassName );
+ return SessionFactoryHelper.FindEntityPersisterUsingImports(_sfi, name);
}
/// <summary>
Modified: trunk/nhibernate/src/NHibernate/Hql/Util/SessionFactoryHelper.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Hql/Util/SessionFactoryHelper.cs 2009-04-22 22:56:16 UTC (rev 4201)
+++ trunk/nhibernate/src/NHibernate/Hql/Util/SessionFactoryHelper.cs 2009-04-23 03:28:22 UTC (rev 4202)
@@ -11,21 +11,26 @@
{
public static IQueryable FindQueryableUsingImports(ISessionFactoryImplementor sfi, string className)
{
+ return FindEntityPersisterUsingImports(sfi, className) as IQueryable;
+ }
+
+ public static IEntityPersister FindEntityPersisterUsingImports(ISessionFactoryImplementor sfi, string className)
+ {
// NH : short cut
- if(string.IsNullOrEmpty(className))
+ if (string.IsNullOrEmpty(className))
{
return null;
}
-
- if(!char.IsLetter(className[0]) && !className[0].Equals('_'))
+
+ if (!char.IsLetter(className[0]) && !className[0].Equals('_'))
{
- return null;
+ return null;
}
// NH : this method prevent unrecognized class when entityName != class.FullName
// this is a patch for the TODO below
- var possibleResult = sfi.TryGetEntityPersister(GetEntityName(className)) as IQueryable;
- if(possibleResult != null)
+ var possibleResult = sfi.TryGetEntityPersister(GetEntityName(className));
+ if (possibleResult != null)
{
return possibleResult;
}
@@ -37,7 +42,7 @@
return null;
}
// NH: This method don't work if entityName != class.FullName
- return (IQueryable)sfi.TryGetEntityPersister(GetEntityName(importedClassName));
+ return sfi.TryGetEntityPersister(GetEntityName(importedClassName));
}
private static string GetEntityName(string assemblyQualifiedName)
Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/BaseFixture.cs 2009-04-23 03:28:22 UTC (rev 4202)
@@ -0,0 +1,47 @@
+using System.Collections;
+using NHibernate.Hql.Ast.ANTLR;
+using System.Collections.Generic;
+using NHibernate.Util;
+
+namespace NHibernate.Test.HQL.Ast
+{
+ public class BaseFixture: TestCase
+ {
+ private readonly IDictionary<string, IFilter> emptyfilters = new CollectionHelper.EmptyMapClass<string, IFilter>();
+
+ #region Overrides of TestCase
+
+ protected override IList Mappings
+ {
+ get { return new string[0]; }
+ }
+
+ #endregion
+
+ protected override void Configure(Cfg.Configuration configuration)
+ {
+ var assembly = GetType().Assembly;
+ string mappingNamespace = GetType().Namespace;
+ foreach (var resource in assembly.GetManifestResourceNames())
+ {
+ if (resource.StartsWith(mappingNamespace) && resource.EndsWith(".hbm.xml"))
+ {
+ configuration.AddResource(resource, assembly);
+ }
+ }
+ }
+
+ public string GetSql(string query)
+ {
+ var qt = new QueryTranslatorImpl(null, query, emptyfilters, sessions);
+ qt.Compile(null, false);
+ return qt.SQLString;
+ }
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ return sessions.Settings.QueryTranslatorFactory is ASTQueryTranslatorFactory;
+ }
+
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.cs 2009-04-23 03:28:22 UTC (rev 4202)
@@ -0,0 +1,7 @@
+namespace NHibernate.Test.HQL.Ast
+{
+ public class SimpleClass
+ {
+ public virtual string Description { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SimpleClass.hbm.xml 2009-04-23 03:28:22 UTC (rev 4202)
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.HQL.Ast">
+
+ <class name="SimpleClass">
+ <id type="int">
+ <generator class="native" />
+ </id>
+ <property name="Description"/>
+ </class>
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/HQL/Ast/SqlTranslationFixture.cs 2009-04-23 03:28:22 UTC (rev 4202)
@@ -0,0 +1,17 @@
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace NHibernate.Test.HQL.Ast
+{
+ [TestFixture]
+ public class SqlTranslationFixture : BaseFixture
+ {
+ [Test, Ignore("Bug not fixed yet")]
+ public void ParseFloatConstant()
+ {
+ var query = "select 123.5, s from SimpleClass s";
+
+ Assert.That(GetSql(query), Text.StartsWith("select 123.5"));
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-04-22 22:56:16 UTC (rev 4201)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-04-23 03:28:22 UTC (rev 4202)
@@ -291,7 +291,10 @@
<Compile Include="GenericTest\SetGeneric\B.cs" />
<Compile Include="GenericTest\SetGeneric\SetGenericFixture.cs" />
<Compile Include="HQL\Animal.cs" />
+ <Compile Include="HQL\Ast\BaseFixture.cs" />
<Compile Include="HQL\Ast\ParsingFixture.cs" />
+ <Compile Include="HQL\Ast\SimpleClass.cs" />
+ <Compile Include="HQL\Ast\SqlTranslationFixture.cs" />
<Compile Include="HQL\BaseFunctionFixture.cs" />
<Compile Include="NHSpecificTest\Dates\TimeFixture.cs" />
<Compile Include="NHSpecificTest\DtcFailures\DtcFailuresFixture.cs" />
@@ -1716,6 +1719,7 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="HQL\Ast\SimpleClass.hbm.xml" />
<EmbeddedResource Include="HQL\Ast\TestQueries.xml" />
<EmbeddedResource Include="HQL\Ast\TestQueriesWithResults.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1741\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|