|
From: <ric...@us...> - 2009-09-23 10:10:11
|
Revision: 4722
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4722&view=rev
Author: ricbrown
Date: 2009-09-23 10:10:00 +0000 (Wed, 23 Sep 2009)
Log Message:
-----------
Merge r4721 (Fix NH-1941 Overriding GetValue in EnumStringType)
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/EnumStringType.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Fixture.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Mappings.hbm.xml
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Model.cs
trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/SexEnumStringType.cs
Modified: trunk/nhibernate/src/NHibernate/Type/EnumStringType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/EnumStringType.cs 2009-09-23 10:09:13 UTC (rev 4721)
+++ trunk/nhibernate/src/NHibernate/Type/EnumStringType.cs 2009-09-23 10:10:00 UTC (rev 4722)
@@ -126,7 +126,7 @@
public virtual object GetValue(object code)
{
//code is an enum instance.
- return code == null ? string.Empty : code.ToString();
+ return code == null ? string.Empty : Enum.Format(ReturnedClass, code, "G");
}
/// <summary>
@@ -144,7 +144,7 @@
}
else
{
- par.Value = Enum.Format(ReturnedClass, value, "G");
+ par.Value = GetValue(value);
}
}
Property changes on: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941
___________________________________________________________________
Added: bugtraq:url
+ http://jira.nhibernate.org/browse/%BUGID%
Added: bugtraq:logregex
+ NH-\d+
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Fixture.cs 2009-09-23 10:10:00 UTC (rev 4722)
@@ -0,0 +1,50 @@
+using System;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH1941
+{
+ [TestFixture]
+ public class Fixture : BugTestCase
+ {
+
+ protected override void OnTearDown()
+ {
+ base.OnTearDown();
+ using (ISession s = OpenSession())
+ {
+ s.Delete("from Person");
+ }
+ }
+ [Test]
+ public void CanOverrideStringEnumGetValue()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction tx = s.BeginTransaction())
+ {
+ using (SqlLogSpy ls = new SqlLogSpy())
+ {
+ Person person = new Person() { Sex = Sex.Male };
+ s.Save(person);
+
+ string log = ls.GetWholeLog();
+ Assert.IsTrue(log.Contains("@p0 = 'M'"));
+ }
+
+ using (SqlLogSpy ls = new SqlLogSpy())
+ {
+ Person person =
+ s.CreateQuery("from Person p where p.Sex = :personSex")
+ .SetParameter("personSex", Sex.Female)
+ .UniqueResult<Person>();
+
+ Assert.That(person, Is.Null);
+
+ string log = ls.GetWholeLog();
+ Assert.IsTrue(log.Contains("@p0 = 'F'"));
+ }
+
+ tx.Rollback();
+ }
+ }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Mappings.hbm.xml
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Mappings.hbm.xml (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Mappings.hbm.xml 2009-09-23 10:10:00 UTC (rev 4722)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
+ assembly="NHibernate.Test"
+ namespace="NHibernate.Test.NHSpecificTest.NH1941">
+
+ <class name="Person" >
+ <id name="Id">
+ <generator class="native" />
+ </id>
+
+ <property name="Sex" type="SexEnumStringType" />
+ </class>
+
+</hibernate-mapping>
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Model.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Model.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/Model.cs 2009-09-23 10:10:00 UTC (rev 4722)
@@ -0,0 +1,14 @@
+namespace NHibernate.Test.NHSpecificTest.NH1941
+{
+ public enum Sex
+ {
+ Male,
+ Female,
+ }
+
+ public class Person
+ {
+ public virtual int Id { get; set; }
+ public virtual Sex Sex { get; set; }
+ }
+}
Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/SexEnumStringType.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/SexEnumStringType.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH1941/SexEnumStringType.cs 2009-09-23 10:10:00 UTC (rev 4722)
@@ -0,0 +1,28 @@
+using System;
+using NHibernate.Type;
+
+namespace NHibernate.Test.NHSpecificTest.NH1941
+{
+ public class SexEnumStringType : EnumStringType<Sex>
+ {
+ public override object GetValue(object enumValue)
+ {
+ if (enumValue == null)
+ {
+ return string.Empty;
+ }
+
+ return (Sex)enumValue == Sex.Male ? "M" : "F";
+ }
+
+ public override object GetInstance(object value)
+ {
+ if (value == null)
+ {
+ throw new ArgumentNullException("value");
+ }
+
+ return (value.ToString() == "M") ? Sex.Male : Sex.Female;
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-09-23 10:09:13 UTC (rev 4721)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-09-23 10:10:00 UTC (rev 4722)
@@ -603,6 +603,9 @@
<Compile Include="NHSpecificTest\NH1938\Model.cs" />
<Compile Include="NHSpecificTest\NH1939\AuxType.cs" />
<Compile Include="NHSpecificTest\NH1939\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1941\Fixture.cs" />
+ <Compile Include="NHSpecificTest\NH1941\Model.cs" />
+ <Compile Include="NHSpecificTest\NH1941\SexEnumStringType.cs" />
<Compile Include="NHSpecificTest\NH1963\CacheableQueryOnByteArray.cs" />
<Compile Include="NHSpecificTest\NH1963\DomainClass.cs" />
<Compile Include="NHSpecificTest\NH1969\DummyEntity.cs" />
@@ -2022,6 +2025,7 @@
<EmbeddedResource Include="Criteria\Lambda\Mappings.hbm.xml" />
<EmbeddedResource Include="CfgTest\Loquacious\EntityToCache.hbm.xml" />
<Content Include="DynamicEntity\package.html" />
+ <EmbeddedResource Include="NHSpecificTest\NH1941\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1963\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1969\Mappings.hbm.xml" />
<EmbeddedResource Include="NHSpecificTest\NH1922\Mappings.hbm.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|