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