|
From: <fab...@us...> - 2011-05-30 16:12:03
|
Revision: 5884
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5884&view=rev
Author: fabiomaulo
Date: 2011-05-30 16:11:57 +0000 (Mon, 30 May 2011)
Log Message:
-----------
Fix NH-2738
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/MappingByCode/IntegrationTests/NH2738/
trunk/nhibernate/src/NHibernate.Test/MappingByCode/IntegrationTests/NH2738/Fixture.cs
Modified: trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2011-05-30 15:31:30 UTC (rev 5883)
+++ trunk/nhibernate/src/NHibernate/Type/TypeFactory.cs 2011-05-30 16:11:57 UTC (rev 5884)
@@ -517,11 +517,25 @@
}
else if (typeClass.IsEnum)
{
- type = (IType) Activator.CreateInstance(typeof (EnumType<>).MakeGenericType(typeClass));
+ try
+ {
+ type = (IType)Activator.CreateInstance(typeof(EnumType<>).MakeGenericType(typeClass));
+ }
+ catch (Exception e)
+ {
+ throw new MappingException("Can't instantiate enum "+ typeClass.FullName +"; The enum can't be empty", e);
+ }
}
else if (IsNullableEnum(typeClass))
{
- type = (IType)Activator.CreateInstance(typeof(EnumType<>).MakeGenericType(typeClass.GetGenericArguments()[0]));
+ try
+ {
+ type = (IType)Activator.CreateInstance(typeof(EnumType<>).MakeGenericType(typeClass.GetGenericArguments()[0]));
+ }
+ catch (Exception e)
+ {
+ throw new MappingException("Can't instantiate enum " + typeClass.FullName + "; The enum can't be empty", e);
+ }
}
else if (typeClass.IsSerializable)
{
Added: trunk/nhibernate/src/NHibernate.Test/MappingByCode/IntegrationTests/NH2738/Fixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/MappingByCode/IntegrationTests/NH2738/Fixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/MappingByCode/IntegrationTests/NH2738/Fixture.cs 2011-05-30 16:11:57 UTC (rev 5884)
@@ -0,0 +1,35 @@
+using NHibernate.Mapping.ByCode;
+using NUnit.Framework;
+using SharpTestsEx;
+
+namespace NHibernate.Test.MappingByCode.IntegrationTests.NH2738
+{
+ public enum MyEmptyEnum
+ {
+
+ }
+
+ public class MyClass
+ {
+ public virtual int Id { get; set; }
+ public MyEmptyEnum MyEmptyEnum { get; set; }
+ }
+ public class Fixture
+ {
+ [Test]
+ public void WhenMapEmptyEnumThenThrowsExplicitException()
+ {
+ var mapper = new ModelMapper();
+ mapper.Class<MyClass>(rc =>
+ {
+ rc.Id(x => x.Id);
+ rc.Property(x => x.MyEmptyEnum);
+ });
+ var mappings = mapper.CompileMappingForAllExplicitAddedEntities();
+ var conf = TestConfigurationHelper.GetDefaultConfiguration();
+ conf.AddMapping(mappings);
+
+ conf.Executing(c => c.BuildSessionFactory()).Throws<MappingException>().And.ValueOf.Message.Should().Contain("MyEmptyEnum");
+ }
+ }
+}
\ No newline at end of file
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-30 15:31:30 UTC (rev 5883)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2011-05-30 16:11:57 UTC (rev 5884)
@@ -557,6 +557,7 @@
<Compile Include="MappingByCode\IntegrationTests\NH2728\IAnimal.cs" />
<Compile Include="MappingByCode\IntegrationTests\NH2728\SampleTest.cs" />
<Compile Include="MappingByCode\IntegrationTests\NH2728\Toy.cs" />
+ <Compile Include="MappingByCode\IntegrationTests\NH2738\Fixture.cs" />
<Compile Include="MappingByCode\MappersTests\AnyMapperTest.cs" />
<Compile Include="MappingByCode\MappersTests\IdMapperTest.cs" />
<Compile Include="MappingByCode\MappersTests\ManyToOneMapperTest.cs" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|