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