|
From: <fab...@us...> - 2009-05-15 21:47:25
|
Revision: 4321
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4321&view=rev
Author: fabiomaulo
Date: 2009-05-15 21:47:20 +0000 (Fri, 15 May 2009)
Log Message:
-----------
Improv class <type> recognition on <element>
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs
trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/IntEnumsBagPartialNameFixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/SimpleWithEnumsPartialName.hbm.xml
Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2009-05-15 20:55:13 UTC (rev 4320)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/Binder.cs 2009-05-15 21:47:20 UTC (rev 4321)
@@ -7,6 +7,7 @@
using log4net;
using NHibernate.Mapping;
+using NHibernate.Type;
using NHibernate.Util;
using NHibernate.Cfg.MappingSchema;
@@ -69,6 +70,24 @@
return TypeNameParser.Parse(className, mappings.DefaultNamespace, mappings.DefaultAssembly).Type;
}
+ protected static bool NeedQualifiedClassName(string className)
+ {
+ if(string.IsNullOrEmpty(className))
+ {
+ return false;
+ }
+ if(className.IndexOf('.') > 0)
+ {
+ return false;
+ }
+ if(TypeFactory.Basic(className) != null)
+ {
+ return false;
+ }
+
+ return true;
+ }
+
/// <summary>
/// Attempts to find a type by its full name. Throws a <see cref="MappingException" />
/// using the provided <paramref name="errorMessage" /> in case of failure.
Modified: trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs 2009-05-15 20:55:13 UTC (rev 4320)
+++ trunk/nhibernate/src/NHibernate/Cfg/XmlHbmBinding/ClassBinder.cs 2009-05-15 21:47:20 UTC (rev 4321)
@@ -833,7 +833,13 @@
simpleValue.TypeParameters = parameters;
if (typeName != null)
+ {
+ if(NeedQualifiedClassName(typeName))
+ {
+ typeName = FullQualifiedClassName(typeName, mappings);
+ }
simpleValue.TypeName = typeName;
+ }
}
private void BindColumnsOrFormula(XmlNode node, SimpleValue simpleValue, string path, bool isNullable)
Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/IntEnumsBagPartialNameFixture.cs (from rev 4320, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/IntEnumsBagFixture.cs)
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/IntEnumsBagPartialNameFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/IntEnumsBagPartialNameFixture.cs 2009-05-15 21:47:20 UTC (rev 4321)
@@ -0,0 +1,14 @@
+using System.Collections;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.ElementsEnums
+{
+ [TestFixture]
+ public class IntEnumsBagPartialNameFixture : AbstractIntEnumsBagFixture
+ {
+ protected override IList Mappings
+ {
+ get { return new[] { "NHSpecificTest.ElementsEnums.SimpleWithEnumsPartialName.hbm.xml" }; }
+ }
+ }
+}
\ No newline at end of file
Copied: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/SimpleWithEnumsPartialName.hbm.xml (from rev 4318, trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/SimpleWithEnums.hbm.xml)
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/SimpleWithEnumsPartialName.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/ElementsEnums/SimpleWithEnumsPartialName.hbm.xml 2009-05-15 21:47:20 UTC (rev 4321)
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.ElementsEnums">
+
+ <class name="SimpleWithEnums">
+ <id type="int">
+ <generator class="native"/>
+ </id>
+
+ <property name="Something"/>
+ <bag name="Things">
+ <key column="bid"/>
+ <element type="Something" column="enumvalue"/>
+ </bag>
+ </class>
+</hibernate-mapping>
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-15 20:55:13 UTC (rev 4320)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-05-15 21:47:20 UTC (rev 4321)
@@ -330,6 +330,7 @@
<Compile Include="MappingTest\NonReflectiveBinderFixture.cs" />
<Compile Include="MappingTest\Wicked.cs" />
<Compile Include="NHSpecificTest\ElementsEnums\AbstractIntEnumsBagFixture.cs" />
+ <Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagPartialNameFixture.cs" />
<Compile Include="NHSpecificTest\ElementsEnums\IntEnumsBagFixture.cs" />
<Compile Include="NHSpecificTest\ElementsEnums\Something.cs" />
<Compile Include="NHSpecificTest\NH1264\Fixture.cs" />
@@ -1795,6 +1796,7 @@
<EmbeddedResource Include="BulkManipulation\SimpleClass.hbm.xml" />
<EmbeddedResource Include="Ado\VerySimple.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\ElementsEnums\SimpleWithEnumsPartialName.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1343\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1264\Passenger.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1264\Reservation.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|