From: <fab...@us...> - 2010-09-23 23:10:37
|
Revision: 5207 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=5207&view=rev Author: fabiomaulo Date: 2010-09-23 23:10:31 +0000 (Thu, 23 Sep 2010) Log Message: ----------- Fix NH-2147 Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj Added Paths: ----------- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml Modified: trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs 2010-09-23 17:07:21 UTC (rev 5206) +++ trunk/nhibernate/src/NHibernate/Mapping/PersistentClass.cs 2010-09-23 23:10:31 UTC (rev 5207) @@ -36,7 +36,7 @@ private readonly List<Table> subclassTables = new List<Table>(); private bool dynamicInsert; private bool dynamicUpdate; - private int batchSize = 1; + private int? batchSize; private bool selectBeforeUpdate; private IDictionary<string, MetaAttribute> metaAttributes; private readonly List<Join> joins = new List<Join>(); @@ -372,7 +372,7 @@ /// <summary> /// /// </summary> - public int BatchSize + public int? BatchSize { get { return batchSize; } set { batchSize = value; } Modified: trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2010-09-23 17:07:21 UTC (rev 5206) +++ trunk/nhibernate/src/NHibernate/Persister/Entity/AbstractEntityPersister.cs 2010-09-23 23:10:31 UTC (rev 5207) @@ -278,11 +278,8 @@ entityNameBySubclass[subclass.MappedClass] = subclass.EntityName; } } - int batch = persistentClass.BatchSize; - if (batch == -1) - batch = factory.Settings.DefaultBatchFetchSize; - batchSize = batch; + batchSize = persistentClass.BatchSize.HasValue ? persistentClass.BatchSize.Value : factory.Settings.DefaultBatchFetchSize; hasSubselectLoadableCollections = persistentClass.HasSubselectLoadableCollections; propertyMapping = new BasicEntityPropertyMapping(this); Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/DefaultBatchSize.cs 2010-09-23 23:10:31 UTC (rev 5207) @@ -0,0 +1,62 @@ +using System.Reflection; +using NHibernate.Cfg; +using NHibernate.Engine; +using NHibernate.Persister.Entity; +using NUnit.Framework; +using SharpTestsEx; + +namespace NHibernate.Test.NHSpecificTest.NH2147 +{ + public class DefaultBatchSize + { + private const BindingFlags DefaultFlags = + BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly; + + private readonly FieldInfo fieldInfo = typeof(AbstractEntityPersister).GetField("batchSize", DefaultFlags); + + [Test] + public void WhenNoDefaultAndNoSpecificThenUse1() + { + var cfg = TestConfigurationHelper.GetDefaultConfiguration(); + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2147.Mappings.hbm.xml", GetType().Assembly); + var sf = (ISessionFactoryImplementor)cfg.BuildSessionFactory(); + var persister = sf.GetEntityPersister("MyClassWithoutBatchSize"); + persister.IsBatchLoadable.Should().Be.False(); + + // hack + fieldInfo.GetValue(persister).Should().Be(1); + } + + [Test] + public void WhenDefaultAndNoSpecificThenUseDefault() + { + var cfg = TestConfigurationHelper.GetDefaultConfiguration(); + cfg.SetProperty(Environment.DefaultBatchFetchSize, "20"); + + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2147.Mappings.hbm.xml", GetType().Assembly); + var sf = (ISessionFactoryImplementor)cfg.BuildSessionFactory(); + var persister = sf.GetEntityPersister("MyClassWithoutBatchSize"); + + persister.IsBatchLoadable.Should().Be.True(); + + // hack + fieldInfo.GetValue(persister).Should().Be(20); + } + + [Test] + public void WhenDefaultAndSpecificThenUseSpecific() + { + var cfg = TestConfigurationHelper.GetDefaultConfiguration(); + cfg.SetProperty(Environment.DefaultBatchFetchSize, "20"); + + cfg.AddResource("NHibernate.Test.NHSpecificTest.NH2147.Mappings.hbm.xml", GetType().Assembly); + var sf = (ISessionFactoryImplementor)cfg.BuildSessionFactory(); + var persister = sf.GetEntityPersister("MyClassWithBatchSize"); + + persister.IsBatchLoadable.Should().Be.True(); + + // hack + fieldInfo.GetValue(persister).Should().Be(10); + } + } +} \ No newline at end of file Added: trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml (rev 0) +++ trunk/nhibernate/src/NHibernate.Test/NHSpecificTest/NH2147/Mappings.hbm.xml 2010-09-23 23:10:31 UTC (rev 5207) @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="utf-8" ?> +<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> + <class entity-name="MyClassWithoutBatchSize"> + <id type="int"> + <generator class="native" /> + </id> + <property name="Name" type="string"/> + </class> + + <class entity-name="MyClassWithBatchSize" batch-size="10"> + <id type="int"> + <generator class="native" /> + </id> + <property name="Name" type="string"/> + </class> + +</hibernate-mapping> Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj =================================================================== --- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-23 17:07:21 UTC (rev 5206) +++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2010-09-23 23:10:31 UTC (rev 5207) @@ -468,6 +468,7 @@ <Compile Include="NHSpecificTest\NH2111\A.cs" /> <Compile Include="NHSpecificTest\NH2111\Fixture.cs" /> <Compile Include="NHSpecificTest\NH2138\Fixture.cs" /> + <Compile Include="NHSpecificTest\NH2147\DefaultBatchSize.cs" /> <Compile Include="NHSpecificTest\NH2148\BugFixture.cs" /> <Compile Include="NHSpecificTest\NH2148\Domain.cs" /> <Compile Include="NHSpecificTest\NH2224\Domain.cs" /> @@ -2292,6 +2293,7 @@ <EmbeddedResource Include="CollectionTest\NullableValueTypeElementMapFixture.hbm.xml" /> <EmbeddedResource Include="DriverTest\EntityForMs2008.hbm.xml" /> <Content Include="DynamicEntity\package.html" /> + <EmbeddedResource Include="NHSpecificTest\NH2147\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2138\Mappings.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithDefault.hbm.xml" /> <EmbeddedResource Include="NHSpecificTest\NH2288\AclassWithNothing.hbm.xml" /> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |