|
From: <fab...@us...> - 2008-12-16 22:39:01
|
Revision: 3963
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3963&view=rev
Author: fabiomaulo
Date: 2008-12-16 21:53:58 +0000 (Tue, 16 Dec 2008)
Log Message:
-----------
Fix NH-1605
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Mappings.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs 2008-12-16 21:00:05 UTC (rev 3962)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ResultSetMappingBinder.cs 2008-12-16 21:53:58 UTC (rev 3963)
@@ -73,10 +73,23 @@
return null;
}
- private static INativeSQLQueryReturn CreateScalarReturn(HbmReturnScalar returnScalarSchema)
+ private INativeSQLQueryReturn CreateScalarReturn(HbmReturnScalar returnScalarSchema)
{
- IType type = TypeFactory.HeuristicType(returnScalarSchema.type, null);
+ string typeName;
+ IDictionary<string, string> parameters = null;
+ TypeDef typeDef = mappings.GetTypeDef(returnScalarSchema.type);
+ if (typeDef != null)
+ {
+ typeName = typeDef.TypeClass;
+ parameters = typeDef.Parameters;
+ }
+ else
+ {
+ typeName = returnScalarSchema.type;
+ }
+ IType type = TypeFactory.HeuristicType(typeName, (IDictionary) parameters);
+
if (type == null)
throw new MappingException("could not interpret type: " + returnScalarSchema.type);
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Fixture.cs 2008-12-16 21:53:58 UTC (rev 3963)
@@ -0,0 +1,32 @@
+using System.Reflection;
+using NHibernate.Cfg;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1605
+{
+ [TestFixture]
+ public class Fixture
+ {
+ [Test]
+ public void SupportTypedefInReturnScalarElements()
+ {
+ var cfg = new Configuration();
+ Assembly assembly = Assembly.GetExecutingAssembly();
+ cfg.AddResource("NHibernate.Test.NHSpecificTest.NH1605.Mappings.hbm.xml", assembly);
+ using (cfg.BuildSessionFactory()) {}
+ }
+ }
+
+ public enum CapitalCities
+ {
+ Amsterdam,
+ Berlin,
+ Cairo,
+ Dublin
+ }
+
+ public class Country
+ {
+ public virtual CapitalCities CapitalCity { get; set; }
+ }
+}
\ No newline at end of file
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1605/Mappings.hbm.xml 2008-12-16 21:53:58 UTC (rev 3963)
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1605">
+
+ <typedef name="CapitalCityString" class="NHibernate.Type.EnumStringType`1[[NHibernate.Test.NHSpecificTest.NH1605.CapitalCities, NHibernate.Test]], NHibernate" />
+
+ <class name="Country">
+ <id type="int">
+ <generator class="native"/>
+ </id>
+ <property name="CapitalCity" type="CapitalCityString" />
+ </class>
+
+ <sql-query name="Country-GetCapital">
+ <return-scalar column="CapitalCity" type="CapitalCityString" />
+ -- Custom SQL omitted
+ </sql-query>
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-12-16 21:00:05 UTC (rev 3962)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2008-12-16 21:53:58 UTC (rev 3963)
@@ -377,6 +377,7 @@
<Compile Include="NHSpecificTest\NH1274ExportExclude\NH1274ExportExcludeFixture.cs" />
<Compile Include="NHSpecificTest\NH1274ExportExclude\Person.cs" />
<Compile Include="NHSpecificTest\NH1443\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1605\Fixture.cs" />
<Compile Include="NHSpecificTest\NH1611OneToOneIdentity\Adjunct.cs" />
<Compile Include="NHSpecificTest\NH1611OneToOneIdentity\NH1611OneToOneIdentityFixture.cs" />
<Compile Include="NHSpecificTest\NH1611OneToOneIdentity\Primary.cs" />
@@ -1570,6 +1571,7 @@
<EmbeddedResource Include="Cascade\JobBatch.hbm.xml" />
<EmbeddedResource Include="Deletetransient\Person.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1605\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1443\AclassWithSpecific.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1443\AclassWithDefault.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1443\AclassWithNothing.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|