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